|
@@ -44,37 +44,53 @@ spin_lock_irqsave(&DATARMNET820642743b,DATARMNETfb0677cc3c);DATARMNET63b1a086d5=
|
|
|
container_of(DATARMNET6e4292679f,struct DATARMNET4f49486833,DATARMNET9f31ce5d2d)
|
|
|
;hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(
|
|
|
DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);spin_unlock_irqrestore(&
|
|
|
-DATARMNET820642743b,DATARMNETfb0677cc3c);return HRTIMER_NORESTART;}static
|
|
|
-rx_handler_result_t DATARMNETc9ed97754a(struct sk_buff*DATARMNET543491eb0f){if(
|
|
|
-DATARMNET543491eb0f->dev&&(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){
|
|
|
-DATARMNET17f6bc1be5(DATARMNETd1c349b9fc);goto DATARMNETc1174a0f45;}
|
|
|
-DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,DATARMNET934406764d());if(!
|
|
|
-DATARMNET813ca18d06){DATARMNET17f6bc1be5(DATARMNETfa4b3dd44a);goto
|
|
|
-DATARMNETc1174a0f45;}memcpy(&DATARMNET099aa93adc.saddr,&DATARMNET86f1f2cdc9->
|
|
|
+DATARMNET820642743b,DATARMNETfb0677cc3c);return HRTIMER_NORESTART;}static void
|
|
|
+DATARMNETdc14b61acf(struct neighbour*DATARMNET3f85732c70){struct net_device*dev=
|
|
|
+DATARMNET3f85732c70->dev;__be16 DATARMNETa8d8445982=DATARMNET3f85732c70->tbl->
|
|
|
+protocol;struct hh_cache*hh=&DATARMNET3f85732c70->hh;write_lock_bh(&
|
|
|
+DATARMNET3f85732c70->lock);if(!hh->hh_len)dev->header_ops->cache(
|
|
|
+DATARMNET3f85732c70,hh,DATARMNETa8d8445982);write_unlock_bh(&DATARMNET3f85732c70
|
|
|
+->lock);}static int DATARMNETe8a509e677(struct neighbour*neigh,struct sk_buff*
|
|
|
+DATARMNET543491eb0f){int DATARMNETb14e52a504=(0xd2d+202-0xdf7);if(!
|
|
|
+neigh_event_send(neigh,DATARMNET543491eb0f)){struct net_device*dev=neigh->dev;
|
|
|
+unsigned int DATARMNET534037f2b6;int DATARMNET268a8314cf;if(dev->header_ops->
|
|
|
+cache&&!READ_ONCE(neigh->hh.hh_len))DATARMNETdc14b61acf(neigh);do{__skb_pull(
|
|
|
+DATARMNET543491eb0f,skb_network_offset(DATARMNET543491eb0f));DATARMNET534037f2b6
|
|
|
+=read_seqbegin(&neigh->ha_lock);DATARMNET268a8314cf=dev_hard_header(
|
|
|
+DATARMNET543491eb0f,dev,ntohs(DATARMNET543491eb0f->protocol),neigh->ha,NULL,
|
|
|
+DATARMNET543491eb0f->len);}while(read_seqretry(&neigh->ha_lock,
|
|
|
+DATARMNET534037f2b6));if(DATARMNET268a8314cf>=(0xd2d+202-0xdf7))
|
|
|
+DATARMNETb14e52a504=dev_queue_xmit(DATARMNET543491eb0f);else goto
|
|
|
+DATARMNET99f6eb6559;}DATARMNETbf4095f79e:return DATARMNETb14e52a504;
|
|
|
+DATARMNET99f6eb6559:DATARMNETb14e52a504=-EINVAL;kfree_skb(DATARMNET543491eb0f);
|
|
|
+DATARMNET17f6bc1be5(DATARMNET64aecaa865);DATARMNET17f6bc1be5(DATARMNET729e252fb9
|
|
|
+);goto DATARMNETbf4095f79e;}static rx_handler_result_t DATARMNETc9ed97754a(
|
|
|
+struct sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f->dev&&(
|
|
|
+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){DATARMNET17f6bc1be5(DATARMNETd1c349b9fc);goto
|
|
|
+DATARMNETc1174a0f45;}DATARMNET813ca18d06=dev_get_by_name_rcu(&init_net,
|
|
|
+DATARMNET934406764d());if(!DATARMNET813ca18d06){DATARMNET17f6bc1be5(
|
|
|
+DATARMNETfa4b3dd44a);goto DATARMNETc1174a0f45;}DATARMNET543491eb0f->dev=
|
|
|
+DATARMNET813ca18d06;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->dev&&(DATARMNET543491eb0f->
|
|
|
-protocol==htons(ETH_P_IPV6))&&!(strncmp(DATARMNET543491eb0f->dev->name,
|
|
|
+DATARMNET0e6bd55b8b);goto DATARMNETc1174a0f45;}DATARMNET268a8314cf=
|
|
|
+DATARMNETe8a509e677(DATARMNET3f85732c70,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->dev&&(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*
|
|
@@ -92,22 +108,18 @@ 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;}return RX_HANDLER_PASS;DATARMNETc1174a0f45:kfree_skb(
|
|
|
-DATARMNET543491eb0f);return RX_HANDLER_CONSUMED;}static rx_handler_result_t
|
|
|
-DATARMNET68fe094884(struct sk_buff**DATARMNET89946cec52){struct
|
|
|
-DATARMNET0ca9d8ead7 DATARMNETa76763310b={};struct DATARMNET4f49486833*
|
|
|
-DATARMNET63b1a086d5;struct sk_buff*DATARMNET543491eb0f=*DATARMNET89946cec52;
|
|
|
-unsigned long DATARMNETfb0677cc3c;if(!DATARMNET543491eb0f||DATARMNET543491eb0f->
|
|
|
-pkt_type==PACKET_LOOPBACK)return RX_HANDLER_PASS;if(DATARMNET543491eb0f->dev&&
|
|
|
-strncmp(DATARMNET543491eb0f->dev->name,
|
|
|
+DATARMNETc1174a0f45;}DATARMNET268a8314cf=DATARMNETe8a509e677(DATARMNET3f85732c70
|
|
|
+,DATARMNET543491eb0f);neigh_release(DATARMNET3f85732c70);if(likely(
|
|
|
+DATARMNET268a8314cf==NET_XMIT_SUCCESS||DATARMNET268a8314cf==NET_XMIT_CN)){
|
|
|
+DATARMNET17f6bc1be5(DATARMNET04311361a2);}else{DATARMNET17f6bc1be5(
|
|
|
+DATARMNET13bbe5f5c5);}return RX_HANDLER_CONSUMED;}return RX_HANDLER_PASS;
|
|
|
+DATARMNETc1174a0f45:kfree_skb(DATARMNET543491eb0f);return RX_HANDLER_CONSUMED;}
|
|
|
+static rx_handler_result_t DATARMNET68fe094884(struct sk_buff**
|
|
|
+DATARMNET89946cec52){struct DATARMNET0ca9d8ead7 DATARMNETa76763310b={};struct
|
|
|
+DATARMNET4f49486833*DATARMNET63b1a086d5;struct sk_buff*DATARMNET543491eb0f=*
|
|
|
+DATARMNET89946cec52;unsigned long DATARMNETfb0677cc3c;if(!DATARMNET543491eb0f||
|
|
|
+DATARMNET543491eb0f->pkt_type==PACKET_LOOPBACK)return RX_HANDLER_PASS;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;
|