diff --git a/kni_entry.c b/kni_entry.c index aa9f31d..74cf484 100644 --- a/kni_entry.c +++ b/kni_entry.c @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -1096,8 +1097,11 @@ extern "C" char kni_ipv6_entry(const struct streaminfo *pstream,unsigned char ro addr.paddr = (void*)(&ipv6_addr); memset(&ipv6_addr,0,sizeof(ipv6_addr)); - ipv6_addr.saddr=ipv6_hdr->ip6_src; - ipv6_addr.daddr=ipv6_hdr->ip6_dst; + memcpy(ipv6_addr.saddr,&(ipv6_hdr->ip6_src),sizeof(ipv6_addr.saddr)); + memcpy(ipv6_addr.daddr,&(ipv6_hdr->ip6_dst),sizeof(ipv6_addr.saddr)); + +// ipv6_addr.saddr=ipv6_hdr->ip6_src.s6_addr32; +// ipv6_addr.daddr=ipv6_hdr->ip6_dst.s6_addr32; memset(&pmeinfo,0,sizeof(pmeinfo)); pmeinfo.mid = mid; @@ -1528,7 +1532,6 @@ extern "C" char kni_init() pthread_t pid_kni_filestat2; g_kni_comminfo.tun_threadnum = g_iThreadNum; -// g_kni_comminfo.tun_threadnum = 5; init_profile_info(); diff --git a/kni_entry.h b/kni_entry.h index 1a276eb..28ac613 100644 --- a/kni_entry.h +++ b/kni_entry.h @@ -75,7 +75,7 @@ #define KNI_MAIN_MODE "main" #define KNI_FS_MODE "field_stat" #define KNI_DYNMAAT_MODE "dynmic_maat" -#define KNI_STATIC_MAAT_MODE "static_maat" +#define KNI_STATIC_MAAT_MODE "static_maat" #define KNI_TUN_MODE "tun" #define KNI_CONF_MODE "Module" #define KNI_CONF_FILENAME_MAIN "./conf/main.conf" diff --git a/kni_intercept.c b/kni_intercept.c index 2553775..4765984 100644 --- a/kni_intercept.c +++ b/kni_intercept.c @@ -30,11 +30,13 @@ size_t add_option(char* buff, size_t size, uint16_t opt_type, uint16_t opt_len, return 0; } *((uint16_t*)buff)=opt_type; - *((uint16_t*)(buff+sizeof(uint16_t))=opt_len; + *((uint16_t*)(buff+sizeof(uint16_t)))=opt_len; memcpy(buff+sizeof(uint16_t)*2, opt_cont, opt_len); return opt_len+sizeof(uint16_t)*2; } -int kni_set_tlvinfo(char* buf, int buflen, struct kni_lqueue_datainfo datainfo) + + +int kni_set_tlvinfo(char* buf, int buflen, struct kni_repaired_fds datainfo) { int tlv_len = 0; @@ -45,10 +47,10 @@ int kni_set_tlvinfo(char* buf, int buflen, struct kni_lqueue_datainfo datainfo) tlv_len += sizeof(struct kni_tlv_header); - tlv_len+=add_option(buf+tlv_len,buflen-tlv_len, KNI_TLV_TYPE_PROTOCOL, (uint16_t)sizeof(int), &(datainfo.protocol)); - tlv_len+=add_option(buf+tlv_len,buflen-tlv_len, KNI_TLV_TYPE_KEYRING_ID, (uint16_t)sizeof(int), &(datainfo.keyring)); + tlv_len+=add_option(buf+tlv_len,buflen-tlv_len, KNI_TLV_TYPE_PROTOCOL, (uint16_t)sizeof(int), (char*)&(datainfo.protocol)); + tlv_len+=add_option(buf+tlv_len,buflen-tlv_len, KNI_TLV_TYPE_KEYRING_ID, (uint16_t)sizeof(int), (char*)&(datainfo.keyring)); - assert(tlv_len=find, replace_info->original_len); + pos = (char*)memmem(payload, payload_len,(replace_info->find), replace_info->original_len); if(pos != NULL) { sendbuf_len = iplen - replace_info->original_len + replace_info->replace_len;