rmnet_wlan: I99ae1b3640bd39ef5af69769701e356166dfa294

Updates the module to version I99ae1b3640bd39ef5af69769701e356166dfa294.

CRs-Fixed: 3731036
Change-Id: I99ae1b3640bd39ef5af69769701e356166dfa294
Signed-off-by: Sean Tranchetti <quic_stranche@quicinc.com>
Esse commit está contido em:
Subash Abhinov Kasiviswanathan
2024-02-12 14:19:47 -08:00
commit a478ad3bd5
2 arquivos alterados com 132 adições e 131 exclusões

Ver arquivo

@@ -13,7 +13,7 @@
#include <linux/rcupdate.h>
#include <linux/hashtable.h>
#include <linux/if_ether.h>
#include <linux/hrtimer.h>
#include <linux/workqueue.h>
#include <net/ip.h>
#include <net/ipv6.h>
#include <net/dst.h>
@@ -22,53 +22,73 @@
#include "rmnet_wlan.h"
#include "rmnet_wlan_connection.h"
#include "rmnet_wlan_stats.h"
#define DATARMNET5da8c68c19 (2000000000)
#define DATARMNET5da8c68c19 ((0x16a8+1565-0x14f5))
#define DATARMNET4d011802ef ((0xdf7+6169-0x241c))
#define DATARMNET8fc07fbb24 ((0xeb7+1158-0x132d))
#define DATARMNETeaf0945284 \
(const_ilog2(DATARMNET8fc07fbb24))
extern void(*rmnet_wlan_ll_tuple_hook)(struct sk_buff*DATARMNET543491eb0f);
struct DATARMNET4f49486833{struct hlist_node DATARMNETe8608dd267;struct rcu_head
DATARMNET28bfe9e6ad;struct hrtimer DATARMNET9f31ce5d2d;struct
DATARMNET0ca9d8ead7 DATARMNET54338da2ff;struct DATARMNET8d3c2559ca
DATARMNET7ed5754a5c;};static DEFINE_SPINLOCK(DATARMNET820642743b);static
DEFINE_HASHTABLE(DATARMNET5413d6f8ec,DATARMNETeaf0945284);static bool
DATARMNET5f3c9ed4da(struct DATARMNET0ca9d8ead7*DATARMNET75decd6f60,struct
DATARMNET0ca9d8ead7*DATARMNET6745cad668){if(DATARMNET75decd6f60->
DATARMNET0d956cc77a!=DATARMNET6745cad668->DATARMNET0d956cc77a)return false;if(
DATARMNET75decd6f60->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return
DATARMNET75decd6f60->DATARMNETdfe430c2d6==DATARMNET6745cad668->
DATARMNETdfe430c2d6&&DATARMNET75decd6f60->DATARMNET2cb607d686==
DATARMNET6745cad668->DATARMNET2cb607d686;return!ipv6_addr_cmp(&
DATARMNET75decd6f60->DATARMNET815cbb4bf5,&DATARMNET6745cad668->
DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&DATARMNET75decd6f60->DATARMNETc3f31215b7,&
DATARMNET6745cad668->DATARMNETc3f31215b7);}static enum hrtimer_restart
DATARMNET299a8a08b5(struct hrtimer*DATARMNET6e4292679f){struct
DATARMNET4f49486833*DATARMNET63b1a086d5;unsigned long DATARMNETfb0677cc3c;
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,
uint8_t DATARMNET1a901c3d09){if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->
protocol==htons(ETH_P_IP))&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6){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(DATARMNET15454f969d);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));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06->
ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;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(!
DATARMNET28bfe9e6ad;struct DATARMNET0ca9d8ead7 DATARMNET54338da2ff;struct
DATARMNET8d3c2559ca*DATARMNET7ed5754a5c;unsigned long DATARMNET763f2e5fac;bool
DATARMNET1717afebc7;};struct DATARMNETeb4a7e58d8{struct delayed_work
DATARMNET190b4452e8;bool DATARMNETcd94e0d3c7;};static DEFINE_SPINLOCK(
DATARMNET820642743b);static DEFINE_HASHTABLE(DATARMNET5413d6f8ec,
DATARMNETeaf0945284);static u32 DATARMNETf658004dbc;static struct
DATARMNETeb4a7e58d8 DATARMNET0b04fde883;static bool DATARMNET5f3c9ed4da(struct
DATARMNET0ca9d8ead7*DATARMNET75decd6f60,struct DATARMNET0ca9d8ead7*
DATARMNET6745cad668){if(DATARMNET75decd6f60->DATARMNET0d956cc77a!=
DATARMNET6745cad668->DATARMNET0d956cc77a)return false;if(DATARMNET75decd6f60->
DATARMNET0d956cc77a==(0xd11+230-0xdf3))return DATARMNET75decd6f60->
DATARMNETdfe430c2d6==DATARMNET6745cad668->DATARMNETdfe430c2d6&&
DATARMNET75decd6f60->DATARMNET2cb607d686==DATARMNET6745cad668->
DATARMNET2cb607d686;return!ipv6_addr_cmp(&DATARMNET75decd6f60->
DATARMNET815cbb4bf5,&DATARMNET6745cad668->DATARMNET815cbb4bf5)&&!ipv6_addr_cmp(&
DATARMNET75decd6f60->DATARMNETc3f31215b7,&DATARMNET6745cad668->
DATARMNETc3f31215b7);}static bool DATARMNET64cb643bf6(struct DATARMNET4f49486833
*DATARMNET63b1a086d5,unsigned long DATARMNET763f2e5fac){unsigned long
DATARMNETc2d5c71ce1;DATARMNETc2d5c71ce1=msecs_to_jiffies(DATARMNET5da8c68c19);if
(DATARMNET763f2e5fac-DATARMNET63b1a086d5->DATARMNET763f2e5fac>
DATARMNETc2d5c71ce1)return true;return false;}static bool DATARMNETd0a7ffc2d1(
bool DATARMNETe78ad140cc){struct DATARMNET4f49486833*DATARMNET63b1a086d5;struct
hlist_node*DATARMNET0386f6f82a;unsigned long DATARMNET763f2e5fac;int
DATARMNET5c2fd31d7b;DATARMNET763f2e5fac=jiffies;hash_for_each_safe(
DATARMNET5413d6f8ec,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNET63b1a086d5,
DATARMNETe8608dd267){if(DATARMNET63b1a086d5->DATARMNET1717afebc7)continue;if(
DATARMNETe78ad140cc||DATARMNET64cb643bf6(DATARMNET63b1a086d5,DATARMNET763f2e5fac
)){DATARMNET63b1a086d5->DATARMNET1717afebc7=true;hash_del_rcu(&
DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,
DATARMNET28bfe9e6ad);DATARMNETf658004dbc--;}}return!!DATARMNETf658004dbc;}static
void DATARMNET8211acc766(struct work_struct*DATARMNET190b4452e8){struct
DATARMNETeb4a7e58d8*DATARMNET563f32ea64;unsigned long DATARMNETfb0677cc3c;bool
DATARMNET6e1c466378;DATARMNET563f32ea64=container_of(to_delayed_work(
DATARMNET190b4452e8),struct DATARMNETeb4a7e58d8,DATARMNET190b4452e8);
spin_lock_irqsave(&DATARMNET820642743b,DATARMNETfb0677cc3c);DATARMNET6e1c466378=
DATARMNETd0a7ffc2d1(DATARMNET563f32ea64->DATARMNETcd94e0d3c7);if(
DATARMNET6e1c466378){unsigned long DATARMNETf71ef1b8da;DATARMNETf71ef1b8da=
msecs_to_jiffies(DATARMNET4d011802ef);schedule_delayed_work(&DATARMNET563f32ea64
->DATARMNET190b4452e8,DATARMNETf71ef1b8da);}spin_unlock_irqrestore(&
DATARMNET820642743b,DATARMNETfb0677cc3c);}static rx_handler_result_t
DATARMNETc9ed97754a(struct sk_buff*DATARMNET543491eb0f,uint8_t
DATARMNET1a901c3d09){if(DATARMNET543491eb0f->dev&&(DATARMNET543491eb0f->protocol
==htons(ETH_P_IP))&&DATARMNET1a901c3d09==DATARMNET9bfbc31cd6){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(DATARMNET15454f969d);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));
DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06->ifindex;DATARMNET099aa93adc.
flowi4_flags=FLOWI_FLAG_KNOWN_NH;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;}if(DATARMNET3f85732c70->dev!=DATARMNET543491eb0f->dev||!
DATARMNET3f85732c70->dev->header_ops){DATARMNET17f6bc1be5(DATARMNET64aecaa865);
@@ -259,74 +279,60 @@ DATARMNETbf55123e5b->daddr,sizeof(DATARMNETa76763310b.DATARMNETc3f31215b7));
DATARMNETa76763310b.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else{goto
DATARMNETbf4095f79e;}rcu_read_lock();hash_for_each_possible_rcu(
DATARMNET5413d6f8ec,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNETa76763310b.
DATARMNET2cb607d686){if(!DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,&DATARMNETa76763310b))continue;if(likely(hrtimer_is_queued(&
DATARMNET63b1a086d5->DATARMNET9f31ce5d2d)))hrtimer_start(&DATARMNET63b1a086d5->
DATARMNET9f31ce5d2d,DATARMNET5da8c68c19,HRTIMER_MODE_REL);rcu_read_unlock();goto
DATARMNETbf4095f79e;}rcu_read_unlock();spin_lock_irqsave(&DATARMNET820642743b,
DATARMNETfb0677cc3c);DATARMNET63b1a086d5=kzalloc(sizeof(*DATARMNET63b1a086d5),
GFP_ATOMIC);if(!DATARMNET63b1a086d5){spin_unlock_irqrestore(&DATARMNET820642743b
,DATARMNETfb0677cc3c);goto DATARMNETbf4095f79e;}INIT_HLIST_NODE(&
DATARMNET63b1a086d5->DATARMNETe8608dd267);memcpy(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,&DATARMNETa76763310b,sizeof(DATARMNETa76763310b));
DATARMNET63b1a086d5->DATARMNET7ed5754a5c.DATARMNET57656f6f2f=DATARMNET543491eb0f
->dev;hrtimer_init(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,CLOCK_MONOTONIC,
HRTIMER_MODE_REL);DATARMNET63b1a086d5->DATARMNET9f31ce5d2d.function=
DATARMNET299a8a08b5;hrtimer_start(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d,
DATARMNET5da8c68c19,HRTIMER_MODE_REL);hash_add_rcu(DATARMNET5413d6f8ec,&
DATARMNET2cb607d686){if(DATARMNET63b1a086d5->DATARMNET1717afebc7)continue;if(!
DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5->DATARMNET54338da2ff,&
DATARMNETa76763310b))continue;DATARMNET63b1a086d5->DATARMNET763f2e5fac=jiffies;
rcu_read_unlock();goto DATARMNETbf4095f79e;}rcu_read_unlock();spin_lock_irqsave(
&DATARMNET820642743b,DATARMNETfb0677cc3c);DATARMNET63b1a086d5=kzalloc(sizeof(*
DATARMNET63b1a086d5),GFP_ATOMIC);if(!DATARMNET63b1a086d5){spin_unlock_irqrestore
(&DATARMNET820642743b,DATARMNETfb0677cc3c);goto DATARMNETbf4095f79e;}
INIT_HLIST_NODE(&DATARMNET63b1a086d5->DATARMNETe8608dd267);memcpy(&
DATARMNET63b1a086d5->DATARMNET54338da2ff,&DATARMNETa76763310b,sizeof(
DATARMNETa76763310b));DATARMNET63b1a086d5->DATARMNET7ed5754a5c=&
DATARMNET8184934307->DATARMNET7ed5754a5c;hash_add_rcu(DATARMNET5413d6f8ec,&
DATARMNET63b1a086d5->DATARMNETe8608dd267,DATARMNETa76763310b.DATARMNET2cb607d686
);spin_unlock_irqrestore(&DATARMNET820642743b,DATARMNETfb0677cc3c);
DATARMNETbf4095f79e:return DATARMNETc9ed97754a(DATARMNET543491eb0f,
DATARMNET1a901c3d09);DATARMNET9b3d23a43b:DATARMNET7ca470d54b(DATARMNET543491eb0f
,TCP_FLAG_SYN);return DATARMNETc9ed97754a(DATARMNET543491eb0f,
DATARMNET1a901c3d09);}static void DATARMNETbc6bd11f47(struct net_device*
DATARMNET00dcb79bc4){struct DATARMNET4f49486833*DATARMNET63b1a086d5;int
DATARMNET5c2fd31d7b;rcu_read_lock();hash_for_each_rcu(DATARMNET5413d6f8ec,
DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267){if(
DATARMNET63b1a086d5->DATARMNET7ed5754a5c.DATARMNET57656f6f2f==
DATARMNET00dcb79bc4)hrtimer_cancel(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d);}
rcu_read_unlock();}static int DATARMNET81ab4de243(struct notifier_block*
DATARMNET272c159b3c,unsigned long DATARMNET7f045a1e6e,void*data){struct
net_device*DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);if(!
DATARMNET00dcb79bc4||DATARMNETaba2beb199(DATARMNET00dcb79bc4->name,
"\x72\x5f\x72\x6d\x6e\x65\x74\x5f\x64\x61\x74\x61",(0xd19+238-0xdfb)))return
NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:
DATARMNETbc6bd11f47(DATARMNET00dcb79bc4);break;default:break;}return NOTIFY_DONE
;}static struct notifier_block DATARMNET61d0113123={.notifier_call=
DATARMNET81ab4de243,};struct DATARMNET8d3c2559ca*DATARMNET07f0e0f286(struct
DATARMNET0ca9d8ead7*DATARMNET54338da2ff)__must_hold(RCU){struct
DATARMNET4f49486833*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
);if(!DATARMNETf658004dbc){unsigned long DATARMNETf71ef1b8da;DATARMNETf71ef1b8da
=msecs_to_jiffies(DATARMNET4d011802ef);schedule_delayed_work(&
DATARMNET0b04fde883.DATARMNET190b4452e8,DATARMNETf71ef1b8da);}
DATARMNETf658004dbc++;spin_unlock_irqrestore(&DATARMNET820642743b,
DATARMNETfb0677cc3c);DATARMNETbf4095f79e:return DATARMNETc9ed97754a(
DATARMNET543491eb0f,DATARMNET1a901c3d09);DATARMNET9b3d23a43b:DATARMNET7ca470d54b
(DATARMNET543491eb0f,TCP_FLAG_SYN);return DATARMNETc9ed97754a(
DATARMNET543491eb0f,DATARMNET1a901c3d09);}struct DATARMNET8d3c2559ca*
DATARMNET07f0e0f286(struct DATARMNET0ca9d8ead7*DATARMNET54338da2ff)__must_hold(
RCU){struct DATARMNET4f49486833*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
DATARMNET5413d6f8ec,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff
->DATARMNET2cb607d686){if(!DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5->
DATARMNET54338da2ff,DATARMNET54338da2ff))continue;return&DATARMNET63b1a086d5->
DATARMNET7ed5754a5c;}return NULL;}void DATARMNETf4e1a29dbc(void){struct
DATARMNET4f49486833*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;rcu_read_lock();
hash_for_each_rcu(DATARMNET5413d6f8ec,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,
DATARMNETe8608dd267)hrtimer_cancel(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d);
rcu_read_unlock();}void DATARMNET6f73df41cd(struct sk_buff*DATARMNET543491eb0f){
int protocol=-(0xd26+209-0xdf6);struct DATARMNETe117226f58*DATARMNET3396919a68=
rcu_dereference(DATARMNETcde6e442f5);if(!DATARMNET3396919a68)return;if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9
,DATARMNETbf6548198e;DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f,
(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(!
DATARMNET86f1f2cdc9)return;if(DATARMNET86f1f2cdc9->version!=DATARMNET3396919a68
->DATARMNET0d956cc77a&&DATARMNET86f1f2cdc9->saddr!=DATARMNET3396919a68->
DATARMNETdfe430c2d6&&DATARMNET86f1f2cdc9->daddr!=DATARMNET3396919a68->
DATARMNET2cb607d686)return;protocol=DATARMNET86f1f2cdc9->protocol;}else if(
DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return;if(DATARMNETbf55123e5b->
version!=DATARMNET3396919a68->DATARMNET0d956cc77a&&ipv6_addr_cmp(&
DATARMNETbf55123e5b->saddr,&DATARMNET3396919a68->DATARMNET815cbb4bf5)&&
ipv6_addr_cmp(&DATARMNETbf55123e5b->daddr,&DATARMNET3396919a68->
DATARMNETc3f31215b7))return;protocol=DATARMNETbf55123e5b->nexthdr;}if(protocol==
IPPROTO_UDP){if(udp_hdr(DATARMNET543491eb0f)->source==DATARMNET3396919a68->
DATARMNET08e913477e&&udp_hdr(DATARMNET543491eb0f)->dest==DATARMNET3396919a68->
DATARMNETda7f7fa492)goto DATARMNET9573fcc9c6;}return;DATARMNET9573fcc9c6:
DATARMNET543491eb0f->priority=2607612160;DATARMNET5ca94dbc3c(DATARMNETc2cade1d75
);}static rx_handler_result_t DATARMNETd2f80b03ce(struct sk_buff**
DATARMNET89946cec52){struct net_device*DATARMNET00dcb79bc4;if(!
->DATARMNET2cb607d686){if(DATARMNET63b1a086d5->DATARMNET1717afebc7)continue;if(!
DATARMNET5f3c9ed4da(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
DATARMNET54338da2ff))continue;return DATARMNET63b1a086d5->DATARMNET7ed5754a5c;}
return NULL;}void DATARMNETf4e1a29dbc(void){cancel_delayed_work_sync(&
DATARMNET0b04fde883.DATARMNET190b4452e8);DATARMNET0b04fde883.DATARMNETcd94e0d3c7
=true;schedule_delayed_work(&DATARMNET0b04fde883.DATARMNET190b4452e8,
(0xd2d+202-0xdf7));cancel_delayed_work_sync(&DATARMNET0b04fde883.
DATARMNET190b4452e8);}void DATARMNET6f73df41cd(struct sk_buff*
DATARMNET543491eb0f){int protocol=-(0xd26+209-0xdf6);struct DATARMNETe117226f58*
DATARMNET3396919a68=rcu_dereference(DATARMNETcde6e442f5);if(!DATARMNET3396919a68
)return;if(DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*
DATARMNET86f1f2cdc9,DATARMNETbf6548198e;DATARMNET86f1f2cdc9=skb_header_pointer(
DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&
DATARMNETbf6548198e);if(!DATARMNET86f1f2cdc9)return;if(DATARMNET86f1f2cdc9->
version!=DATARMNET3396919a68->DATARMNET0d956cc77a&&DATARMNET86f1f2cdc9->saddr!=
DATARMNET3396919a68->DATARMNETdfe430c2d6&&DATARMNET86f1f2cdc9->daddr!=
DATARMNET3396919a68->DATARMNET2cb607d686)return;protocol=DATARMNET86f1f2cdc9->
protocol;}else if(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct
ipv6hdr*DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b=
skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*
DATARMNETbf55123e5b),&DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return;if(
DATARMNETbf55123e5b->version!=DATARMNET3396919a68->DATARMNET0d956cc77a&&
ipv6_addr_cmp(&DATARMNETbf55123e5b->saddr,&DATARMNET3396919a68->
DATARMNET815cbb4bf5)&&ipv6_addr_cmp(&DATARMNETbf55123e5b->daddr,&
DATARMNET3396919a68->DATARMNETc3f31215b7))return;protocol=DATARMNETbf55123e5b->
nexthdr;}if(protocol==IPPROTO_UDP){if(udp_hdr(DATARMNET543491eb0f)->source==
DATARMNET3396919a68->DATARMNET08e913477e&&udp_hdr(DATARMNET543491eb0f)->dest==
DATARMNET3396919a68->DATARMNETda7f7fa492)goto DATARMNET9573fcc9c6;}return;
DATARMNET9573fcc9c6:DATARMNET543491eb0f->priority=2607612160;DATARMNET5ca94dbc3c
(DATARMNETc2cade1d75);}static rx_handler_result_t DATARMNETd2f80b03ce(struct
sk_buff**DATARMNET89946cec52){struct net_device*DATARMNET00dcb79bc4;if(!
DATARMNET89946cec52||!(*DATARMNET89946cec52)||!(*DATARMNET89946cec52)->dev)
return RX_HANDLER_PASS;DATARMNET00dcb79bc4=(*DATARMNET89946cec52)->dev;if(!
DATARMNETaba2beb199(DATARMNET00dcb79bc4->name,
@@ -343,12 +349,7 @@ DATARMNET333c107558(void){rcu_assign_pointer(rmnet_wlan_ll_tuple_hook,
DATARMNET6f73df41cd);rmnet_module_hook_register(DATARMNET1928843de7,ARRAY_SIZE(
DATARMNET1928843de7));}void DATARMNET4c08c7210c(void){rcu_assign_pointer(
rmnet_wlan_ll_tuple_hook,NULL);rmnet_module_hook_unregister(DATARMNET1928843de7,
ARRAY_SIZE(DATARMNET1928843de7));}int DATARMNET9f106ed933(void){int
DATARMNET268a8314cf;DATARMNET268a8314cf=register_netdevice_notifier(&
DATARMNET61d0113123);if(DATARMNET268a8314cf)pr_err(
"\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return DATARMNET268a8314cf;}int DATARMNETf56cbaa2b1(void){int
DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(&
DATARMNET61d0113123);if(DATARMNET268a8314cf)pr_err(
"\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
,__func__);return DATARMNET268a8314cf;}
ARRAY_SIZE(DATARMNET1928843de7));}int DATARMNET9f106ed933(void){
INIT_DELAYED_WORK(&DATARMNET0b04fde883.DATARMNET190b4452e8,DATARMNET8211acc766);
return(0xd2d+202-0xdf7);}int DATARMNETf56cbaa2b1(void){DATARMNETf4e1a29dbc();
return(0xd2d+202-0xdf7);}

Ver arquivo

@@ -25,17 +25,17 @@
#include "rmnet_wlan_stats.h"
#include "rmnet_wlan_fragment.h"
#include "rmnet_wlan_connection.h"
static char*verinfo[]={"\x63\x32\x30\x33\x65\x36\x39\x39",
"\x35\x66\x66\x38\x62\x34\x38\x34","\x62\x33\x30\x63\x65\x32\x36\x36",
"\x37\x32\x39\x63\x61\x37\x33\x37","\x66\x34\x35\x34\x32\x32\x62\x64",
"\x30\x32\x39\x33\x31\x66\x62\x66","\x32\x31\x39\x38\x30\x64\x66\x62",
"\x61\x33\x31\x34\x63\x62\x32\x35","\x34\x33\x62\x62\x38\x34\x39\x39",
"\x32\x66\x33\x36\x30\x30\x31\x34","\x62\x64\x66\x66\x39\x32\x62\x33",
"\x34\x36\x35\x36\x30\x62\x31\x34","\x64\x33\x37\x61\x30\x39\x63\x63",
"\x65\x32\x31\x38\x66\x34\x35\x31","\x30\x65\x33\x34\x62\x31\x39\x31",
"\x39\x66\x33\x66\x31\x31\x33\x30","\x62\x31\x62\x63\x64\x66\x66\x61"};
module_param_array(verinfo,charp,NULL,(0xcb7+5769-0x221c));MODULE_PARM_DESC(
verinfo,
static char*verinfo[]={"\x36\x36\x64\x66\x61\x32\x39\x34",
"\x63\x32\x30\x33\x65\x36\x39\x39","\x35\x66\x66\x38\x62\x34\x38\x34",
"\x62\x33\x30\x63\x65\x32\x36\x36","\x37\x32\x39\x63\x61\x37\x33\x37",
"\x66\x34\x35\x34\x32\x32\x62\x64","\x30\x32\x39\x33\x31\x66\x62\x66",
"\x32\x31\x39\x38\x30\x64\x66\x62","\x61\x33\x31\x34\x63\x62\x32\x35",
"\x34\x33\x62\x62\x38\x34\x39\x39","\x32\x66\x33\x36\x30\x30\x31\x34",
"\x62\x64\x66\x66\x39\x32\x62\x33","\x34\x36\x35\x36\x30\x62\x31\x34",
"\x64\x33\x37\x61\x30\x39\x63\x63","\x65\x32\x31\x38\x66\x34\x35\x31",
"\x30\x65\x33\x34\x62\x31\x39\x31","\x39\x66\x33\x66\x31\x31\x33\x30",
"\x62\x31\x62\x63\x64\x66\x66\x61"};module_param_array(verinfo,charp,NULL,
(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
"\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
);
#define DATARMNETaf49b04806 ((0xeb7+1158-0x132d))
@@ -114,10 +114,10 @@ DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);struct DATARMNET41b426061d
DATARMNET41b426061d,DATARMNET272c159b3c);if(!DATARMNET00dcb79bc4||
DATARMNETaba2beb199(DATARMNET00dcb79bc4->name,DATARMNET2d4b4cfc9e->
DATARMNET852d4d00e2,IFNAMSIZ))return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){
case NETDEV_UNREGISTER:if(DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.
case NETDEV_GOING_DOWN:if(DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.
DATARMNET57656f6f2f){dev_put(DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.
DATARMNET57656f6f2f);WRITE_ONCE(DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.
DATARMNET57656f6f2f,NULL);}break;case NETDEV_REGISTER:if(!DATARMNET2d4b4cfc9e->
DATARMNET57656f6f2f,NULL);}break;case NETDEV_UP:if(!DATARMNET2d4b4cfc9e->
DATARMNET7ed5754a5c.DATARMNET57656f6f2f){dev_hold(DATARMNET00dcb79bc4);
WRITE_ONCE(DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f,
DATARMNET00dcb79bc4);}break;default:break;}return NOTIFY_DONE;}static int