TSG-2611:1、修改对获取tcp_maxseg的处理
This commit is contained in:
@@ -60,6 +60,7 @@ struct dup_traffic_dabloom_key{
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct proxy_tcp_option{
|
struct proxy_tcp_option{
|
||||||
|
int client_tcp_maxseg_enable;
|
||||||
int client_tcp_maxseg;
|
int client_tcp_maxseg;
|
||||||
int client_tcp_nodelay;
|
int client_tcp_nodelay;
|
||||||
int client_tcp_ttl;
|
int client_tcp_ttl;
|
||||||
@@ -69,6 +70,7 @@ struct proxy_tcp_option{
|
|||||||
int client_tcp_keepalive_keepintvl;
|
int client_tcp_keepalive_keepintvl;
|
||||||
int client_tcp_user_timeout;
|
int client_tcp_user_timeout;
|
||||||
|
|
||||||
|
int server_tcp_maxseg_enable;
|
||||||
int server_tcp_maxseg;
|
int server_tcp_maxseg;
|
||||||
int server_tcp_nodelay;
|
int server_tcp_nodelay;
|
||||||
int server_tcp_ttl;
|
int server_tcp_ttl;
|
||||||
|
|||||||
@@ -361,7 +361,11 @@ static unsigned char* kni_cmsg_serialize_header_new(struct pme_info *pmeinfo, st
|
|||||||
if(g_kni_handle->pxy_tcp_option_enable == 1)
|
if(g_kni_handle->pxy_tcp_option_enable == 1)
|
||||||
{
|
{
|
||||||
ret = pxy_tcp_option_cmsg_set(cmsg, pmeinfo);
|
ret = pxy_tcp_option_cmsg_set(cmsg, pmeinfo);
|
||||||
if(ret < 0) goto error_out;
|
if(ret < 0)
|
||||||
|
{
|
||||||
|
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: Failed at set cmsg");
|
||||||
|
goto error_out;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//src mac
|
//src mac
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ extern int wrapped_kni_cmsg_set(struct kni_cmsg *cmsg, uint16_t type, const unsi
|
|||||||
int pxy_tcp_option_parse_json(const struct Maat_rule_t* rule, const char* srv_def_large,struct proxy_tcp_option *pxy_tcpop, void *logger)
|
int pxy_tcp_option_parse_json(const struct Maat_rule_t* rule, const char* srv_def_large,struct proxy_tcp_option *pxy_tcpop, void *logger)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
cJSON *json=NULL, *item=NULL, *client_side = NULL, *server_side = NULL, *client_side_keepalive = NULL, *server_side_keepalive = NULL;
|
cJSON *json=NULL, *item=NULL, *client_side = NULL, *server_side = NULL, *client_side_keepalive = NULL, *server_side_keepalive = NULL, *client_tcp_maxseg = NULL, *server_tcp_maxseg = NULL;
|
||||||
json=cJSON_Parse(srv_def_large);
|
json=cJSON_Parse(srv_def_large);
|
||||||
if(json==NULL)
|
if(json==NULL)
|
||||||
{
|
{
|
||||||
@@ -25,6 +25,37 @@ int pxy_tcp_option_parse_json(const struct Maat_rule_t* rule, const char* srv_de
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
client_tcp_maxseg = cJSON_GetObjectItem(client_side, "tcp_maxseg");
|
||||||
|
if(client_tcp_maxseg == NULL)
|
||||||
|
{
|
||||||
|
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = client_side_conn_param.tcp_maxseg");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item = cJSON_GetObjectItem(client_tcp_maxseg, "enable");
|
||||||
|
if(item && item->type==cJSON_Number)
|
||||||
|
{
|
||||||
|
pxy_tcpop->client_tcp_maxseg_enable = item->valueint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = client_side_conn_param.tcp_maxseg.enable");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
item = cJSON_GetObjectItem(client_tcp_maxseg, "maxseg");
|
||||||
|
if(item && item->type==cJSON_Number)
|
||||||
|
{
|
||||||
|
pxy_tcpop->client_tcp_maxseg = item->valueint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = client_side_conn_param.tcp_maxseg.maxseg");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
client_side_keepalive = cJSON_GetObjectItem(client_side, "keep_alive");
|
client_side_keepalive = cJSON_GetObjectItem(client_side, "keep_alive");
|
||||||
if(client_side_keepalive == NULL)
|
if(client_side_keepalive == NULL)
|
||||||
{
|
{
|
||||||
@@ -78,18 +109,6 @@ int pxy_tcp_option_parse_json(const struct Maat_rule_t* rule, const char* srv_de
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
item=cJSON_GetObjectItem(client_side,"tcp_maxseg");
|
|
||||||
if(item && item->type==cJSON_Number)
|
|
||||||
{
|
|
||||||
pxy_tcpop->client_tcp_maxseg = item->valueint;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = client_side_conn_param.tcp_maxseg");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
item=cJSON_GetObjectItem(client_side,"nodelay");
|
item=cJSON_GetObjectItem(client_side,"nodelay");
|
||||||
if(item && item->type==cJSON_Number)
|
if(item && item->type==cJSON_Number)
|
||||||
{
|
{
|
||||||
@@ -132,6 +151,37 @@ int pxy_tcp_option_parse_json(const struct Maat_rule_t* rule, const char* srv_de
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
server_tcp_maxseg = cJSON_GetObjectItem(server_side, "tcp_maxseg");
|
||||||
|
if(server_tcp_maxseg == NULL)
|
||||||
|
{
|
||||||
|
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = server_side_conn_param.tcp_maxseg");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
item = cJSON_GetObjectItem(server_tcp_maxseg, "enable");
|
||||||
|
if(item && item->type==cJSON_Number)
|
||||||
|
{
|
||||||
|
pxy_tcpop->server_tcp_maxseg_enable = item->valueint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = server_side_conn_param.tcp_maxseg.enable");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
item = cJSON_GetObjectItem(server_tcp_maxseg, "maxseg");
|
||||||
|
if(item && item->type==cJSON_Number)
|
||||||
|
{
|
||||||
|
pxy_tcpop->server_tcp_maxseg = item->valueint;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = server_side_conn_param.tcp_maxseg.maxseg");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
server_side_keepalive = cJSON_GetObjectItem(server_side, "keep_alive");
|
server_side_keepalive = cJSON_GetObjectItem(server_side, "keep_alive");
|
||||||
if(server_side_keepalive == NULL)
|
if(server_side_keepalive == NULL)
|
||||||
{
|
{
|
||||||
@@ -185,18 +235,6 @@ int pxy_tcp_option_parse_json(const struct Maat_rule_t* rule, const char* srv_de
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
item=cJSON_GetObjectItem(server_side,"tcp_maxseg");
|
|
||||||
if(item && item->type==cJSON_Number)
|
|
||||||
{
|
|
||||||
pxy_tcpop->server_tcp_maxseg = item->valueint;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
KNI_LOG_ERROR(logger, "Failed to parse json data, json key = server_side_conn_param.tcp_maxseg");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
item=cJSON_GetObjectItem(server_side,"nodelay");
|
item=cJSON_GetObjectItem(server_side,"nodelay");
|
||||||
if(item && item->type==cJSON_Number)
|
if(item && item->type==cJSON_Number)
|
||||||
{
|
{
|
||||||
@@ -543,10 +581,26 @@ int pxy_tcp_option_get_param(Maat_feather_t maat_feather,const struct streaminfo
|
|||||||
|
|
||||||
void pxy_tcp_option_modify_mss(struct pme_info *pmeinfo,void *logger)
|
void pxy_tcp_option_modify_mss(struct pme_info *pmeinfo,void *logger)
|
||||||
{
|
{
|
||||||
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: stream id: %s, origin client mss:%u,origin server mss:%u", pmeinfo->stream_traceid,pmeinfo->client_tcpopt.mss, pmeinfo->server_tcpopt.mss);
|
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: stream id: %s, origin client side mss:%u,origin server side mss:%u", pmeinfo->stream_traceid,pmeinfo->client_tcpopt.mss, pmeinfo->server_tcpopt.mss);
|
||||||
pmeinfo->client_tcpopt.mss = pmeinfo->pxy_tcp_option.client_tcp_maxseg;
|
if(pmeinfo->pxy_tcp_option.client_tcp_maxseg_enable == 1)
|
||||||
pmeinfo->server_tcpopt.mss = pmeinfo->pxy_tcp_option.server_tcp_maxseg;
|
{
|
||||||
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: stream id: %s, modified client mss:%u, server mss:%u", pmeinfo->stream_traceid,pmeinfo->client_tcpopt.mss, pmeinfo->server_tcpopt.mss);
|
pmeinfo->client_tcpopt.mss = pmeinfo->pxy_tcp_option.client_tcp_maxseg;
|
||||||
|
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: stream id: %s, modified client side mss:%u", pmeinfo->stream_traceid,pmeinfo->client_tcpopt.mss);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: stream id: %s, modify client side mss enable=%d,origin client side mss:%u", pmeinfo->stream_traceid,pmeinfo->pxy_tcp_option.client_tcp_maxseg_enable,pmeinfo->client_tcpopt.mss);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(pmeinfo->pxy_tcp_option.server_tcp_maxseg_enable == 1)
|
||||||
|
{
|
||||||
|
pmeinfo->server_tcpopt.mss = pmeinfo->pxy_tcp_option.server_tcp_maxseg;
|
||||||
|
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: stream id: %s, modified server mss:%u", pmeinfo->stream_traceid, pmeinfo->server_tcpopt.mss);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KNI_LOG_DEBUG(logger, "Proxy-tcp-option: stream id: %s, modify server side mss enable=%d,origin server side mss:%u", pmeinfo->stream_traceid,pmeinfo->pxy_tcp_option.server_tcp_maxseg_enable,pmeinfo->server_tcpopt.mss);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user