2019-06-11 03:21:35 +00:00
|
|
|
|
#include "../api/conntrack_api.h"
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
˵<EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD>:
|
|
|
|
|
1<EFBFBD><EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD>ٱ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ct<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ct,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ct<EFBFBD><EFBFBD><EFBFBD><EFBFBD>aid
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>tcp,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD>֮ǰҪ<EFBFBD>Ƚ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ֻҪ״̬ΪESTABLISHED
|
|
|
|
|
<EFBFBD><EFBFBD>ct<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϻ<EFBFBD>.
|
|
|
|
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ct֮<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ż<EFBFBD><EFBFBD>ҵ<EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD>ct,<EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD>֮ǰ<EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>aid<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>conntrack_api.ko
|
|
|
|
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>tcp<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>״̬ΪESTABLISHED
|
|
|
|
|
3<EFBFBD><EFBFBD>test<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>aid<EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>dpi_set_aid_test_tcp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>init<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>,get_aid_test<EFBFBD><EFBFBD><EFBFBD><EFBFBD>netfilter<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>test.ko(<EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD>testΪ<EFBFBD><EFBFBD>init<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>aid,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>tcp<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֣<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD>¼<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>test<EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD>ct,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>aidʧ<EFBFBD><EFBFBD>;
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>dpi_set_aid_test_tcp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>netfilter<EFBFBD>Ĺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ɱ<EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>,
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>test.ko<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD>ٴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD>)
|
|
|
|
|
|
|
|
|
|
keypoint: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD>ٺ<EFBFBD>test<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>aid
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>init,ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ôִ<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>aid<EFBFBD><EFBFBD>netfilter
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ɱ<EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>,<EFBFBD>ֲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ν,<EFBFBD><EFBFBD>Ϊֻ
|
|
|
|
|
Ҫ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD>ȥ<EFBFBD>Ϳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>tcp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,server<EFBFBD><EFBFBD>һֱѭ<EFBFBD><EFBFBD>recv,<EFBFBD><EFBFBD>close fd,
|
|
|
|
|
client<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>close fd,<EFBFBD>ȴ<EFBFBD><EFBFBD>ն<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>send;<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD><EFBFBD>ct,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>send<EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|
|
|
|
|
|
|
|
|
TCP<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD>ٵ<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳɹ<EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ct.
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD>
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: 0<EFBFBD><EFBFBD>-1
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum test_proto_type{
|
|
|
|
|
TEST_PROTO_TCP,
|
|
|
|
|
TEST_PROTO_UDP,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**********************************************************
|
2019-09-20 04:48:37 +00:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD>ȡӦ<EFBFBD><EFBFBD>aid<EFBFBD><EFBFBD>base_aid,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>netfilter<EFBFBD><EFBFBD>hook<EFBFBD><EFBFBD>
|
2019-06-11 03:21:35 +00:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>:void *, struct sk_buff *, const struct nf_hook_state *
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
**********************************************************/
|
|
|
|
|
static unsigned int get_aid_test(void *priv, struct sk_buff *skb, const struct nf_hook_state *state)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
uint16_t aid;
|
2019-09-20 04:48:37 +00:00
|
|
|
|
uint16_t base_aid;
|
2019-06-11 03:21:35 +00:00
|
|
|
|
printk(KERN_INFO"[test]: test get app_id\n");
|
|
|
|
|
ret = cmhi_get_conntrack_u16(skb, &aid, APP_ID);
|
|
|
|
|
if(ret == CMHI_EXT_ERR){
|
|
|
|
|
printk(KERN_INFO"[test]: get app_id failed\n");
|
|
|
|
|
goto out;
|
|
|
|
|
}
|
|
|
|
|
printk(KERN_INFO"[test]: get app_id: %d successed\n", aid);
|
2019-09-20 04:48:37 +00:00
|
|
|
|
|
|
|
|
|
printk(KERN_INFO"[test]: test get base_app_id\n");
|
|
|
|
|
ret = cmhi_get_conntrack_u16(skb, &base_aid, BASE_APP_ID);
|
|
|
|
|
if(ret == CMHI_EXT_ERR){
|
|
|
|
|
printk(KERN_INFO"[test]: get base_app_id failed\n");
|
|
|
|
|
goto out;
|
|
|
|
|
}
|
|
|
|
|
printk(KERN_INFO"[test]: get base_app_id: %d successed\n", base_aid);
|
2019-06-11 03:21:35 +00:00
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
|
return NF_ACCEPT;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**********************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ct
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: 0<EFBFBD><EFBFBD>-1
|
|
|
|
|
**********************************************************/
|
|
|
|
|
int dpi_get_ct_test_tcp(void)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
struct nf_conn *ct;
|
|
|
|
|
struct dpi_tuple dpi_tuple;
|
|
|
|
|
dpi_tuple.sip = htonl(0xc0a840bc);//192.168.64.188
|
|
|
|
|
dpi_tuple.dip = htonl(0xc0a840c2);//192.168.64.194
|
|
|
|
|
dpi_tuple.protonum = IPPROTO_TCP;
|
|
|
|
|
dpi_tuple.sport = htons(179);
|
|
|
|
|
dpi_tuple.dport = htons(10020);
|
|
|
|
|
printk(KERN_INFO"[Test-tcp]dpi_tuple sip=%u, dip=%u, proto=%d, sport=%du, dport=%du\n",
|
|
|
|
|
dpi_tuple.sip, dpi_tuple.dip, dpi_tuple.protonum, dpi_tuple.sport, dpi_tuple.dport);
|
|
|
|
|
ct = get_conntrack_from_tuple(&dpi_tuple);
|
|
|
|
|
if(!ct){
|
|
|
|
|
printk(KERN_ERR"[Test-tcp]get ct failed!!\n");
|
|
|
|
|
ret = CMHI_EXT_ERR;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
printk(KERN_INFO"[Test-tcp]Find it!!\n");
|
|
|
|
|
ret = CMHI_EXT_OK;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
|
return ret;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**********************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ct
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: 0<EFBFBD><EFBFBD>-1
|
|
|
|
|
**********************************************************/
|
|
|
|
|
|
|
|
|
|
int dpi_get_ct_test_udp(void)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
struct nf_conn *ct;
|
|
|
|
|
struct dpi_tuple dpi_tuple;
|
|
|
|
|
dpi_tuple.sip = htonl(0xc0a840c7);//192.168.64.199
|
|
|
|
|
dpi_tuple.dip = htonl(0xc0a840c2);//192.168.64.194
|
|
|
|
|
dpi_tuple.protonum = IPPROTO_UDP;
|
|
|
|
|
dpi_tuple.sport = htons(7);
|
|
|
|
|
dpi_tuple.dport = htons(520);
|
|
|
|
|
printk(KERN_INFO"[Test-udp]dpi_tuple sip=%x, dip=%x, proto=%d, sport=%x, dport=%x\n",
|
|
|
|
|
dpi_tuple.sip, dpi_tuple.dip, dpi_tuple.protonum, dpi_tuple.sport, dpi_tuple.dport);
|
|
|
|
|
ct = get_conntrack_from_tuple(&dpi_tuple);
|
|
|
|
|
if(!ct){
|
|
|
|
|
printk(KERN_ERR"[Test-udp]get ct failed!!\n");
|
|
|
|
|
ret = CMHI_EXT_ERR;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
printk(KERN_INFO"[Test-udp]Find it!!\n");
|
|
|
|
|
ret = CMHI_EXT_OK;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
goto out;
|
|
|
|
|
|
|
|
|
|
out:
|
|
|
|
|
return ret;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**********************************************************
|
2019-09-20 04:48:37 +00:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD>ct<EFBFBD><EFBFBD><EFBFBD><EFBFBD>aid<EFBFBD><EFBFBD>base_aid
|
2019-06-11 03:21:35 +00:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: 0<EFBFBD><EFBFBD>-1
|
|
|
|
|
**********************************************************/
|
|
|
|
|
int dpi_set_aid_test_tcp(void)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
// uint16_t aid;
|
|
|
|
|
struct dpi dpi;
|
|
|
|
|
dpi.tuple.sip = htonl(0xc0a840bc);//192.168.64.188
|
|
|
|
|
dpi.tuple.dip = htonl(0xc0a840c2);//192.168.64.194
|
|
|
|
|
dpi.tuple.protonum = IPPROTO_TCP;
|
|
|
|
|
dpi.tuple.sport = htons(179);
|
|
|
|
|
dpi.tuple.dport = htons(10020);
|
|
|
|
|
dpi.aid = 3;
|
2019-09-20 04:48:37 +00:00
|
|
|
|
dpi.base_aid = 3;
|
|
|
|
|
printk(KERN_INFO"[Test]dpi_tuple sip=%x, dip=%x, proto=%d, sport=%du, dport=%du,aid=%u, base_aid=%u\n",
|
|
|
|
|
dpi.tuple.sip, dpi.tuple.dip, dpi.tuple.protonum, dpi.tuple.sport, dpi.tuple.dport, dpi.aid, dpi.base_aid);
|
2019-06-11 03:21:35 +00:00
|
|
|
|
ret = set_aid_by_dpi_tuple(&dpi);
|
|
|
|
|
if(CMHI_EXT_OK != ret){
|
|
|
|
|
printk(KERN_ERR"[Test]set_aid_by_dpi_tuple failed.\n");
|
|
|
|
|
return CMHI_EXT_ERR;
|
|
|
|
|
}
|
|
|
|
|
return CMHI_EXT_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**********************************************************
|
2019-09-20 04:48:37 +00:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD>DPI<EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD>ct<EFBFBD><EFBFBD><EFBFBD><EFBFBD>aid<EFBFBD><EFBFBD>base_aid
|
2019-06-11 03:21:35 +00:00
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: 0<EFBFBD><EFBFBD>-1
|
|
|
|
|
**********************************************************/
|
|
|
|
|
int dpi_set_aid_test_udp(void)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
// uint16_t aid;
|
|
|
|
|
struct dpi dpi;
|
|
|
|
|
dpi.tuple.sip = htonl(0xc0a840c7);//192.168.64.199
|
|
|
|
|
dpi.tuple.dip = htonl(0xc0a840c2);//192.168.64.194
|
|
|
|
|
dpi.tuple.protonum = IPPROTO_UDP;
|
|
|
|
|
dpi.tuple.sport = htons(7);
|
|
|
|
|
dpi.tuple.dport = htons(520);
|
|
|
|
|
dpi.aid = 5;
|
2019-09-20 04:48:37 +00:00
|
|
|
|
dpi.base_aid = 5;
|
|
|
|
|
printk(KERN_INFO"[Test]dpi_set_aid_test_udp: dpi_tuple sip=%x, dip=%x, proto=%d, sport=%d, dport=%d,aid=%u, dpi.base_aid=%u\n",
|
|
|
|
|
dpi.tuple.sip, dpi.tuple.dip, dpi.tuple.protonum, dpi.tuple.sport, dpi.tuple.dport, dpi.aid, dpi.base_aid);
|
2019-06-11 03:21:35 +00:00
|
|
|
|
ret = set_aid_by_dpi_tuple(&dpi);
|
|
|
|
|
if(CMHI_EXT_OK != ret){
|
|
|
|
|
printk(KERN_ERR"[Test]dpi_set_aid_test_udp: set_aid_by_dpi_tuple failed.\n");
|
|
|
|
|
return CMHI_EXT_ERR;
|
|
|
|
|
}
|
|
|
|
|
return CMHI_EXT_OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**********************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* aid<EFBFBD>ĺ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enum test_proto_type
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
**********************************************************/
|
|
|
|
|
void dpi_set_aid_test(enum test_proto_type type)
|
|
|
|
|
{
|
|
|
|
|
if(TEST_PROTO_TCP == type){
|
|
|
|
|
dpi_set_aid_test_tcp();
|
|
|
|
|
}
|
|
|
|
|
else if(TEST_PROTO_UDP == type){
|
|
|
|
|
dpi_set_aid_test_udp();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**********************************************************
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TCP<EFBFBD><EFBFBD>UDP<EFBFBD>Ļ<EFBFBD>ȡ
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD>Ӹ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>ct
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Э<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>enum test_proto_type
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
|
|
|
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
|
|
|
|
|
**********************************************************/
|
|
|
|
|
void dpi_get_ct_test(enum test_proto_type type)
|
|
|
|
|
{
|
|
|
|
|
if(TEST_PROTO_TCP == type){
|
|
|
|
|
dpi_get_ct_test_tcp();
|
|
|
|
|
}
|
|
|
|
|
else if(TEST_PROTO_UDP == type){
|
|
|
|
|
dpi_get_ct_test_udp();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static struct nf_hook_ops nfho[] __read_mostly = {
|
|
|
|
|
//{
|
|
|
|
|
//.hook = (nf_hookfn *)demoB,
|
|
|
|
|
//.hooknum = NF_INET_PRE_ROUTING,
|
|
|
|
|
//.pf = NFPROTO_IPV4,
|
|
|
|
|
//.priority = (NF_IP_PRI_FILTER-1),
|
|
|
|
|
//},
|
|
|
|
|
{
|
|
|
|
|
.hook = (nf_hookfn *)get_aid_test,
|
|
|
|
|
.hooknum = NF_INET_PRE_ROUTING,
|
|
|
|
|
.pf = NFPROTO_IPV4,
|
|
|
|
|
.priority = NF_IP_PRI_FILTER,
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static int __init test_init(void)
|
|
|
|
|
{
|
|
|
|
|
dpi_set_aid_test(TEST_PROTO_TCP);
|
|
|
|
|
nf_register_net_hooks(&init_net, nfho, ARRAY_SIZE(nfho));
|
|
|
|
|
printk(KERN_INFO"[Test] Module_init\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void __exit test_clean(void)
|
|
|
|
|
{
|
|
|
|
|
nf_unregister_net_hooks(&init_net, nfho, ARRAY_SIZE(nfho));
|
|
|
|
|
printk(KERN_INFO"[Test]Module_clean\n");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
module_init(test_init);
|
|
|
|
|
module_exit(test_clean);
|
|
|
|
|
MODULE_LICENSE("GPL");
|