|
@@ -18,6 +18,7 @@
|
|
|
#include <net/netfilter/nf_conntrack.h>
|
|
|
#include "rmnet_wlan.h"
|
|
|
#include "rmnet_wlan_connection.h"
|
|
|
+#include "rmnet_wlan_stats.h"
|
|
|
#define DATARMNET5da8c68c19 (2000000000)
|
|
|
#define DATARMNET8fc07fbb24 ((0xeb7+1158-0x132d))
|
|
|
#define DATARMNETeaf0945284 \
|
|
@@ -51,10 +52,64 @@ unsigned long DATARMNETfb0677cc3c;if(!DATARMNET543491eb0f||DATARMNET543491eb0f->
|
|
|
pkt_type==PACKET_LOOPBACK)goto DATARMNETbf4095f79e;if(DATARMNET543491eb0f->dev&&
|
|
|
strncmp(DATARMNET543491eb0f->dev->name,
|
|
|
"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61\x30",IFNAMSIZ))nf_ct_set(
|
|
|
-DATARMNET543491eb0f,NULL,IP_CT_UNTRACKED);if(DATARMNET543491eb0f->protocol==
|
|
|
-htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;
|
|
|
+DATARMNET543491eb0f,NULL,IP_CT_UNTRACKED);if((DATARMNET543491eb0f->protocol==
|
|
|
+htons(ETH_P_IP))&&!(strncmp(DATARMNET543491eb0f->dev->name,
|
|
|
+"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61\x30",IFNAMSIZ))){struct iphdr*
|
|
|
+DATARMNET86f1f2cdc9,DATARMNETbf6548198e;struct net_device*DATARMNET813ca18d06=
|
|
|
+NULL;struct flowi4 DATARMNET099aa93adc={};struct rtable*DATARMNET066b8bd537;
|
|
|
+struct neighbour*DATARMNET3f85732c70;int DATARMNET268a8314cf=(0xd2d+202-0xdf7);
|
|
|
DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
|
|
|
-sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto
|
|
|
+sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9){
|
|
|
+DATARMNET17f6bc1be5(DATARMNETd1c349b9fc);goto DATARMNETc1174a0f45;}
|
|
|
+DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNET934406764d());if(!
|
|
|
+DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNETfa4b3dd44a);goto
|
|
|
+DATARMNETc1174a0f45;}memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9->
|
|
|
+saddr,sizeof(__be32));memcpy(&DATARMNET099aa93adc.daddr,&DATARMNET86f1f2cdc9->
|
|
|
+daddr,sizeof(__be32));DATARMNET066b8bd537=ip_route_output_key(&init_net,&
|
|
|
+DATARMNET099aa93adc);if(IS_ERR(DATARMNET066b8bd537)){DATARMNET17f6bc1be5(
|
|
|
+DATARMNET72ab5e86d8);goto DATARMNETc1174a0f45;}DATARMNET3f85732c70=
|
|
|
+dst_neigh_lookup(&DATARMNET066b8bd537->dst,&DATARMNET099aa93adc.daddr);ip_rt_put
|
|
|
+(DATARMNET066b8bd537);if(!DATARMNET3f85732c70){DATARMNET17f6bc1be5(
|
|
|
+DATARMNET0e6bd55b8b);goto DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev=
|
|
|
+DATARMNET813ca18d06;DATARMNET268a8314cf=dev_hard_header(DATARMNET543491eb0f,
|
|
|
+DATARMNET813ca18d06,ETH_P_IP,&DATARMNET3f85732c70->ha,NULL,DATARMNET543491eb0f->
|
|
|
+len);if(DATARMNET268a8314cf<=(0xd2d+202-0xdf7)){neigh_release(
|
|
|
+DATARMNET3f85732c70);DATARMNET17f6bc1be5(DATARMNET64aecaa865);goto
|
|
|
+DATARMNETc1174a0f45;}DATARMNET268a8314cf=dev_queue_xmit(DATARMNET543491eb0f);
|
|
|
+neigh_release(DATARMNET3f85732c70);if(likely(DATARMNET268a8314cf==
|
|
|
+NET_XMIT_SUCCESS||DATARMNET268a8314cf==NET_XMIT_CN)){DATARMNET17f6bc1be5(
|
|
|
+DATARMNETc1b437465b);}else{DATARMNET17f6bc1be5(DATARMNET43a65c0be7);}return
|
|
|
+RX_HANDLER_CONSUMED;}else if((DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6))
|
|
|
+&&!(strncmp(DATARMNET543491eb0f->dev->name,
|
|
|
+"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61\x30",IFNAMSIZ))){struct
|
|
|
+ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;struct net_device*
|
|
|
+DATARMNET813ca18d06=NULL;struct flowi6 DATARMNET8fbe36a2fa={};struct neighbour*
|
|
|
+DATARMNET3f85732c70;struct dst_entry*dst;int DATARMNET268a8314cf=
|
|
|
+(0xd2d+202-0xdf7);DATARMNETbf55123e5b=skb_header_pointer(DATARMNET543491eb0f,
|
|
|
+(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!
|
|
|
+DATARMNETbf55123e5b){DATARMNET17f6bc1be5(DATARMNET72f4fdd48a);goto
|
|
|
+DATARMNETc1174a0f45;}DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,
|
|
|
+DATARMNET934406764d());if(!DATARMNET813ca18d06){DATARMNET17f6bc1be5(
|
|
|
+DATARMNET9cff15f94d);goto DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev=
|
|
|
+DATARMNET813ca18d06;memcpy(&DATARMNET8fbe36a2fa.saddr,&DATARMNETbf55123e5b->
|
|
|
+saddr,sizeof(struct in6_addr));memcpy(&DATARMNET8fbe36a2fa.daddr,&
|
|
|
+DATARMNETbf55123e5b->daddr,sizeof(struct in6_addr));dst=ipv6_stub->
|
|
|
+ipv6_dst_lookup_flow(&init_net,NULL,&DATARMNET8fbe36a2fa,NULL);if(IS_ERR(dst)){
|
|
|
+DATARMNET17f6bc1be5(DATARMNETbf6e6853f9);goto DATARMNETc1174a0f45;}
|
|
|
+DATARMNET3f85732c70=dst_neigh_lookup(dst,&DATARMNET8fbe36a2fa.daddr);dst_release
|
|
|
+(dst);if(!DATARMNET3f85732c70){DATARMNET17f6bc1be5(DATARMNETa0da722329);goto
|
|
|
+DATARMNETc1174a0f45;}DATARMNET268a8314cf=dev_hard_header(DATARMNET543491eb0f,
|
|
|
+DATARMNET813ca18d06,ETH_P_IPV6,&DATARMNET3f85732c70->ha,NULL,DATARMNET543491eb0f
|
|
|
+->len);if(DATARMNET268a8314cf<=(0xd2d+202-0xdf7)){neigh_release(
|
|
|
+DATARMNET3f85732c70);DATARMNET17f6bc1be5(DATARMNET729e252fb9);goto
|
|
|
+DATARMNETc1174a0f45;}DATARMNET268a8314cf=dev_queue_xmit(DATARMNET543491eb0f);
|
|
|
+neigh_release(DATARMNET3f85732c70);if(likely(DATARMNET268a8314cf==
|
|
|
+NET_XMIT_SUCCESS||DATARMNET268a8314cf==NET_XMIT_CN)){DATARMNET17f6bc1be5(
|
|
|
+DATARMNET04311361a2);}else{DATARMNET17f6bc1be5(DATARMNET13bbe5f5c5);}return
|
|
|
+RX_HANDLER_CONSUMED;}if(DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct
|
|
|
+iphdr*DATARMNET86f1f2cdc9,DATARMNETbf6548198e;DATARMNET86f1f2cdc9=
|
|
|
+skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
|
|
|
+DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)goto
|
|
|
DATARMNETbf4095f79e;if(DATARMNET86f1f2cdc9->protocol==IPPROTO_TCP)goto
|
|
|
DATARMNET9b3d23a43b;if(DATARMNET86f1f2cdc9->protocol!=IPPROTO_ICMP)goto
|
|
|
DATARMNETbf4095f79e;DATARMNETa76763310b.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9
|
|
@@ -94,7 +149,8 @@ DATARMNET5da8c68c19,HRTIMER_MODE_REL);hash_add_rcu(DATARMNET5413d6f8ec,&
|
|
|
DATARMNET63b1a086d5->DATARMNETe8608dd267,DATARMNETa76763310b.DATARMNET2cb607d686
|
|
|
);spin_unlock_irqrestore(&DATARMNET820642743b,DATARMNETfb0677cc3c);
|
|
|
DATARMNETbf4095f79e:return RX_HANDLER_PASS;DATARMNET9b3d23a43b:
|
|
|
-DATARMNET7ca470d54b(DATARMNET543491eb0f,TCP_FLAG_SYN);return RX_HANDLER_PASS;}
|
|
|
+DATARMNET7ca470d54b(DATARMNET543491eb0f,TCP_FLAG_SYN);return RX_HANDLER_PASS;
|
|
|
+DATARMNETc1174a0f45:kfree_skb(DATARMNET543491eb0f);return RX_HANDLER_CONSUMED;}
|
|
|
static void DATARMNETbc6bd11f47(struct net_device*DATARMNET00dcb79bc4){struct
|
|
|
DATARMNET4f49486833*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;rcu_read_lock();
|
|
|
hash_for_each_rcu(DATARMNET5413d6f8ec,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,
|