修复cmsg解析问题
This commit is contained in:
@@ -53,13 +53,13 @@ struct pme_info{
|
||||
time_t start_time;
|
||||
uint64_t con_duration;
|
||||
//from tfe, kafka log
|
||||
int intercept_state;
|
||||
int pinningst; //defalut 0
|
||||
uint64_t intercept_state;
|
||||
uint64_t pinningst; //defalut 0
|
||||
uint64_t ssl_server_side_latency;
|
||||
uint64_t ssl_client_side_latency;
|
||||
char ssl_server_side_version[KNI_SYMBOL_MAX];
|
||||
char ssl_client_side_version[KNI_SYMBOL_MAX];
|
||||
int ssl_cert_verify;
|
||||
uint64_t ssl_cert_verify;
|
||||
char ssl_error[KNI_STRING_MAX];
|
||||
};
|
||||
|
||||
@@ -493,6 +493,7 @@ static char data_opstate(const struct streaminfo *stream, struct pme_info *pmein
|
||||
return APP_STATE_DROPPKT | APP_STATE_GIVEME;
|
||||
case KNI_ACTION_BYPASS:
|
||||
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_BYP_PKT], 0, FS_OP_ADD, 1);
|
||||
pmeinfo->tfe_release = 1;
|
||||
return APP_STATE_FAWPKT | APP_STATE_GIVEME;
|
||||
default:
|
||||
break;
|
||||
@@ -641,15 +642,19 @@ extern "C" char kni_tcpall_entry(const struct streaminfo *stream, void** pme, in
|
||||
pktinfo->data = (char*)pktinfo->tcphdr + pktinfo->tcphdr_len;
|
||||
pktinfo->data_len = pktinfo->ip_totlen - pktinfo->iphdr_len - pktinfo->tcphdr_len;
|
||||
int ret;
|
||||
int key_size;
|
||||
switch(stream->pktstate){
|
||||
case OP_STATE_PENDING:
|
||||
*pme = pmeinfo = pme_info_new(stream, thread_seq, logger);
|
||||
key_size = strlen(pmeinfo->stream_trace_id);
|
||||
ret = MESA_htable_add(g_kni_handle->traceid2pme_htable, (const unsigned char *)(pmeinfo->stream_trace_id),
|
||||
strlen(pmeinfo->stream_trace_id), (const void*)pmeinfo);
|
||||
key_size, (const void*)pmeinfo);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "MESA_htable: failed at MESA_htable_add,"
|
||||
"table is traceid2pme_htable, key is %s", pmeinfo->stream_trace_id);
|
||||
}
|
||||
KNI_LOG_DEBUG(logger, "MESA_htable: succeed at MESA_htable_add, table is traceid2pme_htable, key is %s, key_size is %d",
|
||||
key_size, pmeinfo->stream_trace_id);
|
||||
ret = pending_opstate(stream, pmeinfo, pktinfo);
|
||||
break;
|
||||
case OP_STATE_DATA:
|
||||
@@ -759,11 +764,13 @@ static int wrapped_kni_cmsg_get(struct pme_info *pmeinfo, struct kni_cmsg *cmsg,
|
||||
unsigned char *value = NULL;
|
||||
int ret = kni_cmsg_get(cmsg, type, &value_size, &value);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "Failed at kni_cmsg_get: type is %d, ret is %d", type, ret);
|
||||
if(ret == KNI_CMSG_INVALID_TYPE){
|
||||
KNI_LOG_ERROR(logger, "Failed at kni_cmsg_get: type is %d, ret is %d", type, ret);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
if(value_size > value_size_max){
|
||||
KNI_LOG_ERROR(logger, "kni_cmsg_get: type is %s, size is %d, which should <= %d", type, value_size, value_size_max);
|
||||
KNI_LOG_ERROR(logger, "kni_cmsg_get: type is %d, size is %d, which should <= %d", type, value_size, value_size_max);
|
||||
return -1;
|
||||
}
|
||||
switch(type)
|
||||
@@ -812,14 +819,17 @@ static long traceid2pme_htable_search_cb(void *data, const uchar *key, uint size
|
||||
wrapped_kni_cmsg_get(pmeinfo, cmsg, TFE_CMSG_SSL_PINNING_STATE, sizeof(pmeinfo->pinningst), logger);
|
||||
wrapped_kni_cmsg_get(pmeinfo, cmsg, TFE_CMSG_SSL_CERT_VERIFY, sizeof(pmeinfo->ssl_cert_verify), logger);
|
||||
wrapped_kni_cmsg_get(pmeinfo, cmsg, TFE_CMSG_SSL_ERROR, sizeof(pmeinfo->ssl_error), logger);
|
||||
FREE(&cmsg);
|
||||
pmeinfo->tfe_release = 1;
|
||||
int key_size = strlen(pmeinfo->stream_trace_id);
|
||||
int ret = MESA_htable_del(g_kni_handle->traceid2pme_htable, (const unsigned char *)pmeinfo->stream_trace_id,
|
||||
sizeof(pmeinfo->stream_trace_id), NULL);
|
||||
key_size, NULL);
|
||||
if(ret < 0){
|
||||
KNI_LOG_ERROR(logger, "MESA_htable: failed at del, table is %s, key is %s, ret is %d",
|
||||
"traceid2pme_htable", pmeinfo->stream_trace_id, ret);
|
||||
KNI_LOG_ERROR(logger, "MESA_htable: failed at del, table is %s, key is %s, key_size is %d, ret is %d",
|
||||
"traceid2pme_htable", pmeinfo->stream_trace_id, key_size, ret);
|
||||
}
|
||||
}
|
||||
FREE(&cmsg);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user