完成polling接口改造和重复流量识别功能

This commit is contained in:
崔一鸣
2019-09-04 18:58:50 +08:00
parent b01f282f34
commit 94e8c6184d
15 changed files with 886 additions and 641 deletions

View File

@@ -11,3 +11,8 @@ target_link_libraries(test_cmsg PRIVATE common)
add_executable(test_uuid test/test_uuid.cpp) add_executable(test_uuid test/test_uuid.cpp)
target_include_directories(test_uuid PRIVATE include) target_include_directories(test_uuid PRIVATE include)
target_link_libraries(test_uuid PRIVATE uuid common) target_link_libraries(test_uuid PRIVATE uuid common)
### test_dabloom
add_executable(test_dabloom test/test_dabloom.cpp)
target_include_directories(test_dabloom PRIVATE include)
target_link_libraries(test_dabloom PRIVATE dabloom common)

View File

@@ -20,6 +20,7 @@
#define KNI_PATH_MAX 256 #define KNI_PATH_MAX 256
#define KNI_SYMBOL_MAX 64 #define KNI_SYMBOL_MAX 64
#define KNI_DOMAIN_MAX 256 #define KNI_DOMAIN_MAX 256
#define KNI_ADDR_MAX 128
#ifndef MAX #ifndef MAX
#define MAX(a, b) (((a) > (b)) ? (a) : (b)) #define MAX(a, b) (((a) > (b)) ? (a) : (b))
@@ -57,19 +58,26 @@ struct kni_tcpopt_info{
uint16_t mss; uint16_t mss;
uint8_t wscale_set; uint8_t wscale_set;
uint8_t wscale; uint8_t wscale;
uint8_t ts; uint8_t ts_set;
uint8_t sack; uint8_t sack;
uint32_t ts_value;
}; };
//field_stat //field_stat
#define KNI_FIELD_MAX 64 #define KNI_FS_FIELD_MAX 64
#define KNI_FS_COLUMN_MAX 256
#define KNI_FS_LINE_MAX 256
enum kni_field{ enum kni_field{
KNI_FIELD_INTCP_STM, KNI_FIELD_INTCP_STM,
KNI_FIELD_BYP_STM, KNI_FIELD_BYP_STM,
KNI_FIELD_POLICY_BYP, KNI_FIELD_BYP_STM_POLICY,
KNI_FIELD_PME_NEW_FAIL, KNI_FIELD_BYP_STM_PME_NEW_FAIL,
KNI_FIELD_NO_TFE, KNI_FIELD_BYP_STM_NO_TFE,
KNI_FIELD_BYP_STM_ERR,
KNI_FIELD_BYP_STM_DUP_TFC,
KNI_FIELD_STATE_UNKNOWN, KNI_FIELD_STATE_UNKNOWN,
KNI_FIELD_DUP_TFC_STM,
//stream error
KNI_FIELD_STM_ERR, KNI_FIELD_STM_ERR,
KNI_FIELD_NO_SYN, KNI_FIELD_NO_SYN,
KNI_FIELD_SINGLE_DIR, KNI_FIELD_SINGLE_DIR,
@@ -77,10 +85,9 @@ enum kni_field{
KNI_FIELD_NO_SA, KNI_FIELD_NO_SA,
KNI_FIELD_ACTION_INVALID, KNI_FIELD_ACTION_INVALID,
KNI_FIELD_NO_DATA, KNI_FIELD_NO_DATA,
KNI_FIELD_IPV4HDR_PARSE_FAIL, KNI_FIELD_IPHDR_PARSE_FAIL,
KNI_FIELD_IPV6HDR_PARSE_FAIL,
KNI_FIELD_KA_ADD_FAIL,
KNI_FIELD_EXCEED_MTU, KNI_FIELD_EXCEED_MTU,
KNI_FIELD_STMERR_TUPLE2STM_ADD_FAIL,
KNI_FIELD_SENDTO_TFE_FAIL, KNI_FIELD_SENDTO_TFE_FAIL,
//others //others
KNI_FIELD_NULL_PKT, KNI_FIELD_NULL_PKT,
@@ -92,27 +99,43 @@ enum kni_field{
KNI_FIELD_SENDLOG_FAIL, KNI_FIELD_SENDLOG_FAIL,
KNI_FIELD_PME_NEW_SUCC, KNI_FIELD_PME_NEW_SUCC,
KNI_FIELD_PME_FREE, KNI_FIELD_PME_FREE,
KNI_FIELD_IPV4HDR_PARSE_FAIL,
KNI_FIELD_IPV6HDR_PARSE_FAIL,
KNI_FIELD_ID2PME_ADD_SUCC, KNI_FIELD_ID2PME_ADD_SUCC,
KNI_FIELD_ID2PME_ADD_FAIL, KNI_FIELD_ID2PME_ADD_FAIL,
KNI_FIELD_ID2PME_DEL_SUCC, KNI_FIELD_ID2PME_DEL_SUCC,
KNI_FIELD_ID2PME_DEL_FAIL, KNI_FIELD_ID2PME_DEL_FAIL,
KNI_FIELD_KEEPALIVE_REPLAY_ADD_SUCC, KNI_FIELD_TUPLE2STM_ADD_SUCC,
KNI_FIELD_KEEPALIVE_REPLAY_DEL_SUCC, KNI_FIELD_TUPLE2STM_ADD_FAIL,
KNI_FIELD_KEEPALIVE_REPLAY_DEL_FAIL, KNI_FIELD_TUPLE2STM_DEL_SUCC,
KNI_FIELD_TUPLE2STM_DEL_FAIL,
KNI_FIELD_KNI_INTCP_BYTES, KNI_FIELD_KNI_INTCP_BYTES,
KNI_FIELD_TFE_INTCP_BYTES, KNI_FIELD_TFE_INTCP_BYTES,
KNI_FIELD_KNI_INTCP_STM, KNI_FIELD_KNI_INTCP_STM,
KNI_FIELD_TFE_INTCP_STM, KNI_FIELD_TFE_INTCP_STM,
KNI_FIELD_TUPLE2STM_SEARCH_SUCC,
KNI_FIELD_TUPLE2STM_SEARCH_FAIL,
KNI_FIELD_SAPP_INJECT_SUCC,
KNI_FIELD_SAPP_INJECT_FAIL,
KNI_FIELD_BLOOM_SEARCH_SUCC,
KNI_FIELD_BLOOM_SEARCH_FAIL,
KNI_FIELD_BLOOM_ADD_SUCC,
KNI_FIELD_BLOOM_ADD_FAIL,
//KNI_FIELD_TFE_STATUS_BASE must be last //KNI_FIELD_TFE_STATUS_BASE must be last
KNI_FIELD_TFE_STATUS_BASE, KNI_FIELD_TFE_STATUS_BASE,
}; };
struct kni_field_stat_handle{ struct kni_field_stat_handle{
screen_stat_handle_t handle; screen_stat_handle_t handle;
int fields[KNI_FIELD_MAX]; int fields[KNI_FS_FIELD_MAX];
int column_ids[KNI_FS_COLUMN_MAX];
int line_ids[KNI_FS_LINE_MAX];
int column_cnt;
int line_cnt;
}; };
struct pkt_info{ struct pkt_info{
addr_type_t addr_type;
union{ union{
struct iphdr *v4; struct iphdr *v4;
struct ip6_hdr *v6; struct ip6_hdr *v6;
@@ -135,7 +158,8 @@ enum kni_ipv6hdr_parse_error{
KNI_IPV6HDR_PARSE_ERROR_INVALID_TYPE = -3, KNI_IPV6HDR_PARSE_ERROR_INVALID_TYPE = -3,
}; };
int kni_stream_addr_trans(const struct layer_addr *addr, addr_type_t addr_type, char *output, int len); int kni_addr_trans_v4(struct stream_tuple4_v4 *tuple4, char *output, int len);
int kni_addr_trans_v6(struct stream_tuple4_v6 *tuple4, char *output, int len);
uint16_t kni_ip_checksum(const void *buf, size_t hdr_len); uint16_t kni_ip_checksum(const void *buf, size_t hdr_len);
uint16_t kni_tcp_checksum(const void *_buf, size_t len, in_addr_t src_addr, in_addr_t dest_addr); uint16_t kni_tcp_checksum(const void *_buf, size_t len, in_addr_t src_addr, in_addr_t dest_addr);
uint16_t kni_tcp_checksum_v6(const void *_buf, size_t len, struct in6_addr src_addr, struct in6_addr dest_addr); uint16_t kni_tcp_checksum_v6(const void *_buf, size_t len, struct in6_addr src_addr, struct in6_addr dest_addr);

View File

@@ -3,22 +3,24 @@
#include <netinet/ip6.h> #include <netinet/ip6.h>
#include <net/if.h> #include <net/if.h>
int kni_stream_addr_trans(const struct layer_addr *addr, addr_type_t addr_type, char *output, int len){ int kni_addr_trans_v4(struct stream_tuple4_v4 *tuple4, char *output, int len){
char saddr[INET_ADDRSTRLEN];
char daddr[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &(tuple4->saddr), saddr, INET_ADDRSTRLEN);
inet_ntop(AF_INET, &(tuple4->daddr), daddr, INET_ADDRSTRLEN);
uint16_t source = ntohs(tuple4->source);
uint16_t dest = ntohs(tuple4->dest);
snprintf(output, len, "%s:%d -> %s:%d", saddr, source, daddr, dest);
return 0;
}
int kni_addr_trans_v6(struct stream_tuple4_v6 *tuple4, char *output, int len){
char saddr[INET6_ADDRSTRLEN]; char saddr[INET6_ADDRSTRLEN];
char daddr[INET6_ADDRSTRLEN]; char daddr[INET6_ADDRSTRLEN];
uint16_t source, dest; inet_ntop(AF_INET6, tuple4->saddr, saddr, INET6_ADDRSTRLEN);
if(addr_type == ADDR_TYPE_IPV6){ inet_ntop(AF_INET6, tuple4->daddr, daddr, INET6_ADDRSTRLEN);
inet_ntop(AF_INET6, &(addr->tuple4_v6->saddr), saddr, INET6_ADDRSTRLEN); uint16_t source = ntohs(tuple4->source);
inet_ntop(AF_INET6, &(addr->tuple4_v6->daddr), daddr, INET6_ADDRSTRLEN); uint16_t dest = ntohs(tuple4->dest);
source = ntohs(addr->tuple4_v6->source);
dest = ntohs(addr->tuple4_v6->dest);
}
else{
inet_ntop(AF_INET, &(addr->tuple4_v4->saddr), saddr, INET6_ADDRSTRLEN);
inet_ntop(AF_INET, &(addr->tuple4_v4->daddr), daddr, INET6_ADDRSTRLEN);
source = ntohs(addr->tuple4_v4->source);
dest = ntohs(addr->tuple4_v4->dest);
}
snprintf(output, len, "%s:%d -> %s:%d", saddr, source, daddr, dest); snprintf(output, len, "%s:%d -> %s:%d", saddr, source, daddr, dest);
return 0; return 0;
} }
@@ -195,7 +197,8 @@ struct kni_tcpopt_info* kni_get_tcpopt(struct tcphdr* tcphdr,int tcphdr_len){
break; break;
case TCPOPT_TIMESTAMP: case TCPOPT_TIMESTAMP:
if ((opsize == TCPOLEN_TIMESTAMP)){ if ((opsize == TCPOLEN_TIMESTAMP)){
tcpopt->ts = 1; tcpopt->ts_set = 1;
tcpopt->ts_value = *(uint32_t*)ptr;
} }
break; break;
case TCPOPT_SACK_PERMITTED: case TCPOPT_SACK_PERMITTED:
@@ -333,6 +336,7 @@ int kni_ipv4_header_parse(const void *a_packet, struct pkt_info *pktinfo){
if(a_packet == NULL){ if(a_packet == NULL){
return KNI_IPV4HDR_PARSE_ERROR_NULL_PACKET; return KNI_IPV4HDR_PARSE_ERROR_NULL_PACKET;
} }
pktinfo->addr_type = ADDR_TYPE_IPV4;
pktinfo->iphdr.v4 = (struct iphdr*)a_packet; pktinfo->iphdr.v4 = (struct iphdr*)a_packet;
pktinfo->iphdr_len = pktinfo->iphdr.v4->ihl * 4; pktinfo->iphdr_len = pktinfo->iphdr.v4->ihl * 4;
pktinfo->ip_totlen = ntohs(pktinfo->iphdr.v4->tot_len); pktinfo->ip_totlen = ntohs(pktinfo->iphdr.v4->tot_len);
@@ -347,6 +351,7 @@ int kni_ipv6_header_parse(const void *a_packet, struct pkt_info *pktinfo){
if(a_packet == NULL){ if(a_packet == NULL){
return KNI_IPV6HDR_PARSE_ERROR_NULL_PACKET; return KNI_IPV6HDR_PARSE_ERROR_NULL_PACKET;
} }
pktinfo->addr_type = ADDR_TYPE_IPV6;
pktinfo->iphdr.v6 = (struct ip6_hdr*)a_packet; pktinfo->iphdr.v6 = (struct ip6_hdr*)a_packet;
pktinfo->ip_totlen = ntohs(pktinfo->iphdr.v6->ip6_ctlun.ip6_un1.ip6_un1_plen) + sizeof(struct ip6_hdr); pktinfo->ip_totlen = ntohs(pktinfo->iphdr.v6->ip6_ctlun.ip6_un1.ip6_un1_plen) + sizeof(struct ip6_hdr);
uint8_t next_hdr_type = pktinfo->iphdr.v6->ip6_ctlun.ip6_un1.ip6_un1_nxt; uint8_t next_hdr_type = pktinfo->iphdr.v6->ip6_ctlun.ip6_un1.ip6_un1_nxt;

View File

@@ -0,0 +1,10 @@
#include <stdio.h>
#include <stdlib.h>
extern "C" {
#include "dablooms.h"
}
int main(int argc, char *argv[]){
}

View File

@@ -2,36 +2,33 @@
log_path = ./log/kni/kni.log log_path = ./log/kni/kni.log
log_level = 10 log_level = 10
tfe_node_count = 3 tfe_node_count = 3
tfe_data_recv_thread_num = 8 manage_eth = enp7s0
manage_eth = eth0
#keepalive_replay: window update replay
keepalive_replay_switch = 1
[tfe0] [tfe0]
enabled = 1 enabled = 1
mac_addr = fe:65:b7:03:50:bd mac_addr = fe:65:b7:03:50:bd
dev_eth_symbol = eth7 dev_eth_symbol = ens1f5
ip_addr = 192.168.10.38 ip_addr = 192.168.100.2
[tfe1] [tfe1]
enabled = 1 enabled = 1
mac_addr = fe:65:b7:03:50:bd mac_addr = fe:65:b7:03:50:bd
dev_eth_symbol = eth8 dev_eth_symbol = ens1f6
ip_addr = 192.168.10.39 ip_addr = 192.168.100.3
[tfe2] [tfe2]
enabled = 1 enabled = 1
mac_addr = fe:65:b7:03:50:bd mac_addr = fe:65:b7:03:50:bd
dev_eth_symbol = eth9 dev_eth_symbol = ens1f7
ip_addr = 192.168.10.40 ip_addr = 192.168.100.4
[tfe_cmsg_receiver] [tfe_cmsg_receiver]
listen_eth = eth0 listen_eth = ens1.100
listen_port = 2475 listen_port = 2475
[watch_dog] [watch_dog]
switch = 1 switch = 1
listen_eth = eth0 listen_eth = ens1.100
listen_port = 2476 listen_port = 2476
keepalive_idle = 2 keepalive_idle = 2
keepalive_intvl = 1 keepalive_intvl = 1
@@ -39,12 +36,12 @@ keepalive_cnt = 3
[maat] [maat]
#readconf_mode: 0 = iris, 1 = json, 2 = redis #readconf_mode: 0 = iris, 1 = json, 2 = redis
readconf_mode = 1 readconf_mode = 2
tableinfo_path = ./conf/kni/maat_tableinfo.conf tableinfo_path = ./etc/kni/maat_tableinfo.conf
maatjson_path = ./conf/kni/maat_test.json maatjson_path = ./etc/kni/maat_test.json
redis_ip = 192.168.10.120 redis_ip = 192.168.10.31
redis_port = 6390 redis_port = 6379
redis_index = 4 redis_index = 0
tablename_intercept_ip = PXY_INTERCEPT_IP tablename_intercept_ip = PXY_INTERCEPT_IP
tablename_intercept_domain = PXY_INTERCEPT_DOMAIN tablename_intercept_domain = PXY_INTERCEPT_DOMAIN
#default_action: 0x80 = bypass, 0x02 = intercept #default_action: 0x80 = bypass, 0x02 = intercept
@@ -53,11 +50,11 @@ default_action = 128
[send_logger] [send_logger]
switch = 0 switch = 0
kafka_topic = SESSION-RECORD-LOG kafka_topic = SESSION-RECORD-LOG
kafka_brokerlist = 192.168.10.119:9092,192.168.10.122:9092,192.168.10.123:9092 #kafka_brokerlist = 192.168.10.119:9092,192.168.10.122:9092,192.168.10.123:9092
kafka_brokerlist = 192.168.10.52:9092
[marsio] [marsio]
appsym = knifw appsym = knifw
dev_vxlan_symbol = vxlan_user
src_mac_addr = 00:0e:c6:d6:72:c1 src_mac_addr = 00:0e:c6:d6:72:c1
[kafka] [kafka]
@@ -65,6 +62,14 @@ queue.buffering.max.messages = 1000000
topic.metadata.refresh.interval.ms = 600000 topic.metadata.refresh.interval.ms = 600000
security.protocol = MG security.protocol = MG
#128:bypass, 2: intercept
[dup_traffic]
switch = 0
action = 2
capacity = 1000000
error_rate = 0.05
expiry_time = 30
[traceid2pme_htable] [traceid2pme_htable]
mho_screen_print_ctrl = 0 mho_screen_print_ctrl = 0
mho_thread_safe = 1 mho_thread_safe = 1
@@ -74,15 +79,12 @@ mho_hash_max_element_num = 640000
mho_expire_time = 30 mho_expire_time = 30
mho_eliminate_type = LRU mho_eliminate_type = LRU
[keepalive_replay_htable] [tuple2stream_htable]
mho_screen_print_ctrl = 0 mho_screen_print_ctrl = 0
mho_thread_safe = 1 mho_thread_safe = 0
mho_mutex_num = 160 mho_mutex_num = 160
mho_hash_slot_size = 160000 mho_hash_slot_size = 160000
mho_hash_max_element_num = 640000 mho_hash_max_element_num = 640000
#must be 0
mho_expire_time = 0
mho_eliminate_type = LRU
[field_stat] [field_stat]
stat_path = ./fs2_kni.status stat_path = ./fs2_kni.status

View File

@@ -5,4 +5,4 @@
3 TSG_OBJ_IP_ADDR ip_plus -- 3 TSG_OBJ_IP_ADDR ip_plus --
4 PXY_INTERCEPT_DOMAIN expr utf8 utf8 yes 0 4 PXY_INTERCEPT_DOMAIN expr utf8 utf8 yes 0
4 TSG_OBJ_FQDN expr utf8 utf8 yes 0 4 TSG_OBJ_FQDN expr utf8 utf8 yes 0
5 COMPILE_ALIAS compile escape -- 5 COMPILE_ALIAS compile escape --

View File

@@ -10,4 +10,8 @@ FUNC_NAME = kni_tcpall_entry
[HTTP] [HTTP]
FUNC_FLAG = HTTP_HOST FUNC_FLAG = HTTP_HOST
FUNC_NAME = kni_http_entry FUNC_NAME = kni_http_entry
[POLLING]
FUNC_FLAG=ALL
FUNC_NAME=kni_polling_all_entry

View File

@@ -1,3 +1,3 @@
add_library(kni SHARED src/kni_entry.cpp src/kni_maat.cpp src/kni_send_logger.cpp src/tfe_mgr.cpp) add_library(kni SHARED src/kni_entry.cpp src/kni_maat.cpp src/kni_send_logger.cpp src/tfe_mgr.cpp)
target_include_directories(kni PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include) target_include_directories(kni PUBLIC ${CMAKE_CURRENT_LIST_DIR}/include)
target_link_libraries(kni common MESA_prof_load MESA_htable MESA_field_stat maatframe marsio uuid cjson rdkafka) target_link_libraries(kni common MESA_prof_load MESA_htable MESA_field_stat maatframe marsio uuid cjson rdkafka dabloom)

View File

@@ -25,7 +25,7 @@ enum kni_action{
KNI_ACTION_BYPASS = 0x80 KNI_ACTION_BYPASS = 0x80
}; };
struct kni_maat_handle* kni_maat_init(const char* profile, void *logger); struct kni_maat_handle* kni_maat_init(const char* profile, void *logger, int thread_count);
void kni_maat_destroy(struct kni_maat_handle *handle); void kni_maat_destroy(struct kni_maat_handle *handle);
enum kni_action intercept_policy_scan(struct kni_maat_handle* handle, struct ipaddr *addr, char *domain, int domain_len, enum kni_action intercept_policy_scan(struct kni_maat_handle* handle, struct ipaddr *addr, char *domain, int domain_len,
int thread_seq, int *policy_id, int *do_log, int *is_hit_policy); int thread_seq, int *policy_id, int *do_log, int *is_hit_policy);

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,6 @@
#include "kni_utils.h" #include "kni_utils.h"
#include "kni_maat.h" #include "kni_maat.h"
extern int g_iThreadNum;
/* default action: /* default action:
1. read kni.conf 1. read kni.conf
@@ -62,7 +60,7 @@ void compile_ex_param_dup(int idx, MAAT_RULE_EX_DATA *to, MAAT_RULE_EX_DATA *fro
return; return;
} }
struct kni_maat_handle* kni_maat_init(const char* profile, void *logger){ struct kni_maat_handle* kni_maat_init(const char* profile, void *logger, int thread_count){
const char *section = "maat"; const char *section = "maat";
int readconf_mode; int readconf_mode;
char tableinfo_path[KNI_PATH_MAX]; char tableinfo_path[KNI_PATH_MAX];
@@ -105,11 +103,11 @@ struct kni_maat_handle* kni_maat_init(const char* profile, void *logger){
KNI_LOG_ERROR(logger, "MESA_prof_load, [%s]:\n readconf_mode: %d\n tableinfo_path: %s\n tablename_intercept_ip: %s\n tablename_intercept_domain: %s\n" KNI_LOG_ERROR(logger, "MESA_prof_load, [%s]:\n readconf_mode: %d\n tableinfo_path: %s\n tablename_intercept_ip: %s\n tablename_intercept_domain: %s\n"
"default_action: %d", section, readconf_mode, tableinfo_path, tablename_intercept_ip, "default_action: %d", section, readconf_mode, tableinfo_path, tablename_intercept_ip,
tablename_intercept_domain, g_maat_default_action); tablename_intercept_domain, g_maat_default_action);
feather = Maat_feather(g_iThreadNum, tableinfo_path, logger); feather = Maat_feather(thread_count, tableinfo_path, logger);
handle = ALLOC(struct kni_maat_handle, 1); handle = ALLOC(struct kni_maat_handle, 1);
handle->feather = feather; handle->feather = feather;
if(feather == NULL){ if(feather == NULL){
KNI_LOG_ERROR(logger, "Failed at Maat_feather, max_thread_num is %d, tableinfo_path is %s", g_iThreadNum, tableinfo_path); KNI_LOG_ERROR(logger, "Failed at Maat_feather, max_thread_num is %d, tableinfo_path is %s", thread_count, tableinfo_path);
return NULL; return NULL;
} }
Maat_set_feather_opt(feather, MAAT_OPT_EFFECT_INVERVAL_MS, &effective_interval_ms, sizeof(effective_interval_ms)); Maat_set_feather_opt(feather, MAAT_OPT_EFFECT_INVERVAL_MS, &effective_interval_ms, sizeof(effective_interval_ms));

74
entry/src/kni_tap.cpp Normal file
View File

@@ -0,0 +1,74 @@
#include <sys/ioctl.h>
#include <fcntl.h>
#include <linux/if_tun.h>
#include <stdio.h>
#include <stdlib.h>
#include "kni_utils.h"
#include "MESA_prof_load.h"
struct kni_tap_handle{
int fd;
void *logger;
};
struct kni_tap_handle* kni_tap_init(void *logger){
struct kni_tap_handle * tap_handle = (struct kni_tap_handle*)malloc(sizeof(struct kni_tap_handle));
char tap_path[1024] = "tap";
char tap_name[IFNAMSIZ] = {0};
struct ifreq ifr;
int err = 0;
MESA_load_profile_string_def(".kniconf/kni.conf", "tap", (char*)"tap_path", tap_path, 1024, "/dev/net/tap");
MESA_load_profile_string_def(".kniconf/kni.conf", "tap", (char*)"tap_name", tap_name, 1024, "/dev/net/tap");
memset(&ifr, 0, sizeof(ifr));
ifr.ifr_flags = IFF_TAP | IFF_NO_PI | IFF_ONE_QUEUE;
if(*tap_name){
strncpy(ifr.ifr_name, tap_name, IFNAMSIZ);
}
if((tap_handle ->fd = open(tap_path, O_RDWR)) < 0){
KNI_LOG_ERROR(logger, "kni_tap_init():open error,errno is:%d,%s",errno,strerror(errno));
free(tap_handle);
return NULL;
}
err = ioctl(tap_handle ->fd, TUNSETIFF, (void *)&ifr);
if(err) {
KNI_LOG_ERROR(logger ,"kni_tap_init():ioctl error,errno is:%d,%s",errno,strerror(errno));
close(tap_handle ->fd);
free(tap_handle);
return NULL;
}
tap_handle->logger = logger;
retrun tap_handle;
}
int kni_tap_write(struct kni_tap_handle *handle, char *buff, uint16_t buff_len){
uint16_t send_len = write(handle->fd, buff, buff_len);
if(send_len < 0){
KNI_LOG_ERROR(handle->logger, "Failed at kni_tap_write, errno = %d(%s)", errno, strerror(errno));
return -1;
}
if(send_len < buff_len){
KNI_LOG_ERROR(handle->logger, "kni_tap_write: need send %dB, only send %dB", buff_len, send_len);
return -2;
}
return 0;
}
/*
* > 0 : read data length
* = 0 : read null
* = -1 : error
*/
int kni_tap_read(struct kni_tap_handle *handle, char *buff, uint16_t buff_len){
int recv_len = 0;
recv_len = read(handle -> fd, buff, buff_len);
if(recv_len < 0){
KNI_LOG_ERROR(handle -> logger, "kni_tap_read() error %d, %s", errno, strerror(errno));
return -1;
}
else{
return recv_len;
}
return 0;
}

View File

@@ -1,11 +1,10 @@
SAPP_RUN="/home/tsg/kni" SAPP_RUN="/home/tsg/sapp_v4"
/bin/cp -f ../conf/sapp/conflist_business.inf $SAPP_RUN/plug/business/conflist_business.inf
/bin/cp -rf ../conf/sapp/kni/ $SAPP_RUN/plug/business /bin/cp -rf ../conf/sapp/kni/ $SAPP_RUN/plug/business
/bin/cp -f ../build/entry/libkni.so $SAPP_RUN/plug/business/kni/kni2.so rm -f $SAPP_RUN/plug/business/kni/kni2.so && /bin/cp -f ../build/entry/libkni.so $SAPP_RUN/plug/business/kni/kni2.so
mkdir -p $SAPP_RUN/conf/kni mkdir -p $SAPP_RUN/etc/kni
/bin/cp -f ../conf/kni.conf $SAPP_RUN/conf/kni/kni.conf /bin/cp -f ../conf/kni.conf $SAPP_RUN/etc/kni/kni.conf
/bin/cp -f ../conf/maat/maat_test.json $SAPP_RUN/conf/kni/maat_test.json /bin/cp -f ../conf/maat/maat_test.json $SAPP_RUN/etc/kni/maat_test.json
/bin/cp -f ../conf/maat/maat_tableinfo.conf $SAPP_RUN/conf/kni/maat_tableinfo.conf /bin/cp -f ../conf/maat/maat_tableinfo.conf $SAPP_RUN/etc/kni/maat_tableinfo.conf
cat $SAPP_RUN/conf/project_list.conf | grep "kni_http_tag" >/dev/null 2>&1 && exit cat $SAPP_RUN/etc/project_list.conf | grep "kni_http_tag" >/dev/null 2>&1 && exit
echo "kni_http_tag struct" >> $SAPP_RUN/conf/project_list.conf echo "kni_http_tag struct" >> $SAPP_RUN/etc/project_list.conf

14
vendor/CMakeLists.txt vendored
View File

@@ -37,7 +37,21 @@ add_dependencies(uuid libUUID)
set_property(TARGET uuid PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libuuid.a) set_property(TARGET uuid PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libuuid.a)
set_property(TARGET uuid PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) set_property(TARGET uuid PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
### dabloom
ExternalProject_Add(dablooms PREFIX dablooms
URL ${CMAKE_CURRENT_SOURCE_DIR}/dablooms-v1.0.0-20190904.tar.gz
URL_MD5 9c49aaf1eefe5e0f836b46fc30287782
CONFIGURE_COMMAND cd .
BUILD_COMMAND cd ../dablooms && make
INSTALL_COMMAND cd ../dablooms && make install prefix=<INSTALL_DIR>)
ExternalProject_Get_Property(dablooms INSTALL_DIR)
file(MAKE_DIRECTORY ${INSTALL_DIR}/include)
add_library(dabloom SHARED IMPORTED GLOBAL)
add_dependencies(dabloom dablooms)
set_property(TARGET dabloom PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libdablooms.a)
set_property(TARGET dabloom PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include)
### MESA Framework ### MESA Framework

BIN
vendor/dablooms-v1.0.0-20190904.tar.gz vendored Normal file

Binary file not shown.