summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfumingwei <[email protected]>2021-04-20 17:36:57 +0800
committerfumingwei <[email protected]>2021-04-20 17:36:57 +0800
commit032c83c8e5452d7d4a9326376062d31bfde24443 (patch)
treedf7d7d45781ba50ddb2a5d3196fb222c8be64348
parentcd3d902a43755fc460fffa2b761df3571cc19f3f (diff)
修改kni_addr_trans_v6和kni_addr_trans_v4的调用位置,修改分支提交使用rpm的version不变的问题
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--entry/src/kni_entry.cpp78
2 files changed, 38 insertions, 42 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 7a0e411..f27ffb3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -27,6 +27,7 @@ branch_build_debug:
variables:
BUILD_TYPE: Debug
PACKAGE: 1
+ TESTING_VERSION_BUILD: 1
artifacts:
name: "kni-branch-$CI_COMMIT_REF_NAME-debug"
paths:
@@ -41,6 +42,7 @@ branch_build_release:
variables:
BUILD_TYPE: RelWithDebInfo
PACKAGE: 1
+ TESTING_VERSION_BUILD: 1
extends: .build_by_travis
artifacts:
name: "kni-branch-$CI_COMMIT_REF_NAME-release"
diff --git a/entry/src/kni_entry.cpp b/entry/src/kni_entry.cpp
index d413411..75baa54 100644
--- a/entry/src/kni_entry.cpp
+++ b/entry/src/kni_entry.cpp
@@ -859,6 +859,7 @@ static int tuple2stream_htable_add(addr_type_t addr_type, struct pkt_info *pktin
MESA_htable_handle tuple2stream_htable = g_kni_handle->threads_handle[thread_seq].tuple2stream_htable;
void *logger = g_kni_handle->local_logger;
int ret;
+ char key_str[KNI_ADDR_MAX];
struct tuple2stream_htable_value *value = ALLOC(struct tuple2stream_htable_value, 1);
value->stream = stream;
value->pmeinfo = pmeinfo;
@@ -868,38 +869,29 @@ static int tuple2stream_htable_add(addr_type_t addr_type, struct pkt_info *pktin
struct stream_tuple4_v6 key;
tuple2stream_htable_key_get_v6_by_packet(pktinfo, &key, &(value->reversed));
ret = MESA_htable_add(tuple2stream_htable, (const unsigned char *)&key, sizeof(key), (const void*)value);
- if(ret < 0){
- char key_str[KNI_ADDR_MAX];
+ if(ret < 0){
kni_addr_trans_v6(&key, key_str, sizeof(key_str));
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_FAIL], 0, FS_OP_ADD, 1);
KNI_LOG_ERROR(logger, "MESA_htable: Failed at add, table = tuple2stream_htable, key = %s, key_size = %d, ret = %d",
key_str, sizeof(key), ret);
}
- else{
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC], 0, FS_OP_ADD, 1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, 1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, 1);
- }
}
//ipv4
else{
struct stream_tuple4_v4 key;
tuple2stream_htable_key_get_v4_by_packet(pktinfo, &key, &(value->reversed));
ret = MESA_htable_add(tuple2stream_htable, (const unsigned char *)&key, sizeof(key), (const void*)value);
- char key_str[KNI_ADDR_MAX];
- kni_addr_trans_v4(&key, key_str, sizeof(key_str));
if(ret < 0){
+ kni_addr_trans_v4(&key, key_str, sizeof(key_str));
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_FAIL], 0, FS_OP_ADD, 1);
KNI_LOG_ERROR(logger, "MESA_htable: Failed at add, table = tuple2stream_htable, key = %s, key_size = %d, ret = %d",
key_str, sizeof(key), ret);
}
- else{
- //KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at add, table = tuple2stream_htable, key = %s, key_size = %d, value = %p, ret = %d",
- // key_str, sizeof(key), value, ret);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC], 0, FS_OP_ADD, 1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, 1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, 1);
- }
+ }
+ if(ret >= 0){
+ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_ADD_SUCC], 0, FS_OP_ADD, 1);
+ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, 1);
+ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, 1);
}
return ret;
}
@@ -925,7 +917,8 @@ static int traceid2pme_htable_add(struct pme_info *pmeinfo){
int tuple2stream_htable_del(const struct streaminfo *stream, int thread_seq){
MESA_htable_handle handle = g_kni_handle->threads_handle[thread_seq].tuple2stream_htable;
void *logger = g_kni_handle->local_logger;
- int reversed = 0, ret;
+ int reversed = 0, ret = -1;
+ char key_str[KNI_ADDR_MAX];
//ipv6
if(stream->addr.addrtype == ADDR_TYPE_IPV6){
struct stream_tuple4_v6 key;
@@ -933,37 +926,28 @@ int tuple2stream_htable_del(const struct streaminfo *stream, int thread_seq){
ret = MESA_htable_del(handle, (const unsigned char *)(&key),
sizeof(key), NULL);
if(ret < 0){
- char key_str[KNI_ADDR_MAX];
kni_addr_trans_v6(&key, key_str, sizeof(key_str));
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_FAIL], 0, FS_OP_ADD, 1);
KNI_LOG_ERROR(logger, "MESA_htable: Failed at del, table = %s, key = %s, key_size = %d, ret = %d",
"tuple2stream_htable", key_str, sizeof(key), ret);
}
- else{
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC], 0, FS_OP_ADD, 1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, -1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, -1);
- }
}
//ipv4
else{
struct stream_tuple4_v4 key;
tuple2stream_htable_key_get_v4_by_stream(stream, &key, &reversed);
ret = MESA_htable_del(handle, (const unsigned char *)(&key), sizeof(key), NULL);
- char key_str[KNI_ADDR_MAX];
- kni_addr_trans_v4(&key, key_str, sizeof(key_str));
if(ret < 0){
+ kni_addr_trans_v4(&key, key_str, sizeof(key_str));
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_FAIL], 0, FS_OP_ADD, 1);
KNI_LOG_ERROR(logger, "MESA_htable: Failed at del, table = %s, key = %s, key_size = %d, ret = %d",
"tuple2stream_htable", key_str, sizeof(key), ret);
}
- else{
- //KNI_LOG_DEBUG(logger, "MESA_htable: Succeed at del, table = %s, key = %s, key_size = %d, ret = %d",
- // "tuple2stream_htable", key_str, sizeof(key), ret);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC], 0, FS_OP_ADD, 1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, -1);
- FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, -1);
- }
+ }
+ if(ret >= 0){
+ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_DEL_SUCC], 0, FS_OP_ADD, 1);
+ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[thread_seq], FS_OP_ADD, -1);
+ FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->line_ids[1], g_kni_fs_handle->column_ids[g_kni_handle->thread_count], FS_OP_ADD, -1);
}
return ret;
}
@@ -1745,6 +1729,9 @@ int tuple2stream_htable_search(MESA_htable_handle handle, struct ethhdr *ether_h
int reversed = 0, ret;
int key_size = 0;
char key_str[KNI_ADDR_MAX];
+ struct stream_tuple4_v6 key_v6;
+ struct stream_tuple4_v4 key_v4;
+ memset(key_str,0,sizeof(key_str));
//ipv6
if(ether_hdr->h_proto == htons(ETH_P_IPV6)){
ret = kni_ipv6_header_parse(raw_packet, &pktinfo);
@@ -1754,10 +1741,8 @@ int tuple2stream_htable_search(MESA_htable_handle handle, struct ethhdr *ether_h
//FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_IPV6HDR_PARSE_FAIL], 0, FS_OP_ADD, 1);
return -1;
}
- struct stream_tuple4_v6 key;
- kni_addr_trans_v6(&key, key_str, sizeof(key_str));
- tuple2stream_htable_key_get_v6_by_packet(&pktinfo, &key, &reversed);
- value = (tuple2stream_htable_value*)MESA_htable_search(handle, (const unsigned char*)(&key), sizeof(key));
+ tuple2stream_htable_key_get_v6_by_packet(&pktinfo, &key_v6, &reversed);
+ value = (tuple2stream_htable_value*)MESA_htable_search(handle, (const unsigned char*)(&key_v6), sizeof(key_v6));
}
//ipv4
else{
@@ -1768,14 +1753,17 @@ int tuple2stream_htable_search(MESA_htable_handle handle, struct ethhdr *ether_h
//FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_IPV4HDR_PARSE_FAIL], 0, FS_OP_ADD, 1);
return -1;
}
- struct stream_tuple4_v4 key;
- key_size = sizeof(key);
- tuple2stream_htable_key_get_v4_by_packet(&pktinfo, &key, &reversed);
- kni_addr_trans_v4(&key, key_str, sizeof(key_str));
- value = (tuple2stream_htable_value*)MESA_htable_search(handle, (const unsigned char*)(&key), key_size);
+ tuple2stream_htable_key_get_v4_by_packet(&pktinfo, &key_v4, &reversed);
+ value = (tuple2stream_htable_value*)MESA_htable_search(handle, (const unsigned char*)(&key_v4), sizeof(key_v4));
}
if(value == NULL){
- KNI_LOG_DEBUG(logger, "MESA_htable: search not hit, table is tuple2stream_htable, key = %s, key_size = %d", key_str, key_size);
+ if(ether_hdr->h_proto == htons(ETH_P_IPV6)){
+ kni_addr_trans_v6(&key_v6, key_str, sizeof(key_str));
+ }
+ else{
+ kni_addr_trans_v4(&key_v4, key_str, sizeof(key_str));
+ }
+ KNI_LOG_DEBUG(logger, "MESA_htable: search not hit, table is tuple2stream_htable, key = %s, key_size = %d", key_str, strlen(key_str));
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_TUPLE2STM_SEARCH_MISS], 0, FS_OP_ADD, 1);
return -1;
}
@@ -1788,6 +1776,12 @@ int tuple2stream_htable_search(MESA_htable_handle handle, struct ethhdr *ether_h
ret = sapp_inject_pkt(value->stream, SIO_EXCLUDE_THIS_LAYER_HDR, raw_packet, pktinfo.ip_totlen, dir);
if(ret < 0){
+ if(ether_hdr->h_proto == htons(ETH_P_IPV6)){
+ kni_addr_trans_v6(&key_v6, key_str, sizeof(key_str));
+ }
+ else{
+ kni_addr_trans_v4(&key_v4, key_str, sizeof(key_str));
+ }
KNI_LOG_ERROR(logger, "Failed at sapp_inject_pkt, stream addr = %s", key_str);
FS_operate(g_kni_fs_handle->handle, g_kni_fs_handle->fields[KNI_FIELD_SAPP_INJECT_FAIL], 0, FS_OP_ADD, 1);
return -1;