|
@@ -20,13 +20,15 @@
|
|
|
#include "rmnet_config.h"
|
|
|
#include "rmnet_module.h"
|
|
|
#include "rmnet_descriptor.h"
|
|
|
+#include "rmnet_qmap.h"
|
|
|
#include "rmnet_aps.h"
|
|
|
#include "rmnet_aps_genl.h"
|
|
|
-static char*verinfo[]={"\x36\x35\x35\x33\x39\x62\x38\x34",
|
|
|
-"\x65\x32\x31\x38\x66\x34\x35\x31","\x33\x32\x61\x36\x65\x62\x61\x39",
|
|
|
-"\x36\x39\x30\x35\x35\x36\x38\x65","\x37\x34\x31\x35\x39\x32\x31\x63",
|
|
|
-"\x39\x66\x36\x36\x38\x31\x62\x34"};module_param_array(verinfo,charp,NULL,
|
|
|
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
|
|
|
+static char*verinfo[]={"\x38\x64\x65\x64\x63\x37\x31\x38",
|
|
|
+"\x36\x35\x35\x33\x39\x62\x38\x34","\x65\x32\x31\x38\x66\x34\x35\x31",
|
|
|
+"\x33\x32\x61\x36\x65\x62\x61\x39","\x36\x39\x30\x35\x35\x36\x38\x65",
|
|
|
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x39\x66\x36\x36\x38\x31\x62\x34"};
|
|
|
+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 DATARMNET63ff5c35c2 (0xd26+209-0xdf6)
|
|
@@ -47,7 +49,7 @@ static char*verinfo[]={"\x36\x35\x35\x33\x39\x62\x38\x34",
|
|
|
(0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047)
|
|
|
#define DATARMNETb8ab933cae ((0xc07+4861-0x1e3c) * (0xdf7+2629-0x143c) * \
|
|
|
(0xdf7+2629-0x143c) / (0xd35+210-0xdff) * DATARMNET7b5bbaa047)
|
|
|
-static const char*DATARMNETe5ef0e617c="\x31\x2e\x33";static u16
|
|
|
+static const char*DATARMNETe5ef0e617c="\x31\x2e\x34";static u16
|
|
|
DATARMNET2fe4661b82;static struct genl_info DATARMNET7d98961cbe;static bool
|
|
|
DATARMNET54b95e4416;static u32 DATARMNETfef55eaf9a;static u8 DATARMNET9628311a6b
|
|
|
[DATARMNET3bc5e7094a]={(0xd2d+202-0xdf7),(0xd03+244-0xdf1),(0xcfc+267-0xe00),
|
|
@@ -355,7 +357,7 @@ DATARMNET112d724eff(
|
|
|
,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec);}return
|
|
|
(0xd2d+202-0xdf7);}static int DATARMNETbd1d5c8f28(struct genl_info*
|
|
|
DATARMNET54338da2ff,u8 cmd,int DATARMNETbc8c3c13e8,int DATARMNET5d9df1c423,void*
|
|
|
-DATARMNET8dad72c67a,gfp_t flags){struct sk_buff*DATARMNET543491eb0f;void*
|
|
|
+DATARMNET8dad72c67a,gfp_t flags){struct sk_buff*DATARMNET543491eb0f=NULL;void*
|
|
|
DATARMNETd7f97e2e5a;int DATARMNETb14e52a504;if(unlikely(!DATARMNET54338da2ff))
|
|
|
return-EINVAL;DATARMNET543491eb0f=genlmsg_new(nla_total_size(DATARMNET5d9df1c423
|
|
|
),flags);if(!DATARMNET543491eb0f)goto DATARMNETbf4095f79e;DATARMNETd7f97e2e5a=
|
|
@@ -363,15 +365,16 @@ genlmsg_put(DATARMNET543491eb0f,(0xd2d+202-0xdf7),DATARMNET54338da2ff->snd_seq+
|
|
|
(0xd26+209-0xdf6),&DATARMNETcdba30eca9,(0xd2d+202-0xdf7),cmd);if(!
|
|
|
DATARMNETd7f97e2e5a)goto DATARMNETbf4095f79e;DATARMNETb14e52a504=nla_put(
|
|
|
DATARMNET543491eb0f,DATARMNETbc8c3c13e8,DATARMNET5d9df1c423,DATARMNET8dad72c67a)
|
|
|
-;if(DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;genlmsg_end(
|
|
|
-DATARMNET543491eb0f,DATARMNETd7f97e2e5a);DATARMNETb14e52a504=genlmsg_unicast(
|
|
|
-genl_info_net(DATARMNET54338da2ff),DATARMNET543491eb0f,DATARMNET54338da2ff->
|
|
|
-snd_portid);if(DATARMNETb14e52a504!=(0xd2d+202-0xdf7))goto DATARMNETbf4095f79e;
|
|
|
-return(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff(
|
|
|
+;if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;genlmsg_end(DATARMNET543491eb0f
|
|
|
+,DATARMNETd7f97e2e5a);DATARMNETb14e52a504=genlmsg_unicast(genl_info_net(
|
|
|
+DATARMNET54338da2ff),DATARMNET543491eb0f,DATARMNET54338da2ff->snd_portid);if(
|
|
|
+DATARMNETb14e52a504){DATARMNET543491eb0f=NULL;goto DATARMNETbf4095f79e;}return
|
|
|
+(0xd2d+202-0xdf7);DATARMNETbf4095f79e:DATARMNET112d724eff(
|
|
|
"\x61\x70\x73\x3a\x20\x46\x41\x49\x4c\x45\x44\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x6d\x73\x67\x20\x25\x64" "\n"
|
|
|
-,cmd);return-EFAULT;}static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8
|
|
|
-DATARMNETf8bbe3b0fb){struct DATARMNETca79857d4a DATARMNETa13fcf9070;if(!
|
|
|
-DATARMNET7d98961cbe.snd_portid){DATARMNET112d724eff(
|
|
|
+,cmd);if(DATARMNET543491eb0f)kfree_skb(DATARMNET543491eb0f);return-EFAULT;}
|
|
|
+static void DATARMNET446f780f19(u32 DATARMNETbb588401ec,u8 DATARMNETf8bbe3b0fb){
|
|
|
+struct DATARMNETca79857d4a DATARMNETa13fcf9070;if(!DATARMNET7d98961cbe.
|
|
|
+snd_portid){DATARMNET112d724eff(
|
|
|
"\x61\x70\x73\x3a\x20\x63\x6c\x69\x65\x6e\x74\x20\x6e\x6f\x74\x20\x63\x6f\x6e\x6e\x65\x63\x74\x65\x64" "\n"
|
|
|
);return;}DATARMNETa13fcf9070.cmd=DATARMNETdc217f1b29;DATARMNETa13fcf9070.
|
|
|
DATARMNETe65883bfce=DATARMNETf8bbe3b0fb;DATARMNETa13fcf9070.DATARMNETbb588401ec=
|
|
@@ -548,7 +551,10 @@ DATARMNET912d2a7edd;if(aps_cb->DATARMNET91119c34ed&&skb_hwtstamps(
|
|
|
DATARMNET543491eb0f)->hwtstamp&&DATARMNETe7a1ab1dab){DATARMNET912d2a7edd=
|
|
|
ktime_get_boottime();if(ktime_sub(DATARMNET912d2a7edd,skb_hwtstamps(
|
|
|
DATARMNET543491eb0f)->hwtstamp)>DATARMNETe7a1ab1dab)return-ETIMEDOUT;}return
|
|
|
-(0xd2d+202-0xdf7);}static struct proc_dir_entry*DATARMNET147f9b9f22;static
|
|
|
+(0xd2d+202-0xdf7);}static const struct rmnet_module_hook_register_info
|
|
|
+DATARMNET509284caa6[]={{.hooknum=RMNET_MODULE_HOOK_APS_PRE_QUEUE,.func=
|
|
|
+DATARMNETe0c7b9d5a4,},{.hooknum=RMNET_MODULE_HOOK_APS_POST_QUEUE,.func=
|
|
|
+DATARMNET6ab4bbdaf4,},};static struct proc_dir_entry*DATARMNET147f9b9f22;static
|
|
|
struct proc_dir_entry*DATARMNETf9422af3b0;static DEFINE_SPINLOCK(
|
|
|
DATARMNET86e81617f0);struct DATARMNET837f670f1d{ktime_t DATARMNET763f2e5fac;
|
|
|
struct DATARMNETf21ed5deb4 DATARMNET5fe4c722a8;};
|
|
@@ -573,34 +579,35 @@ DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2==IPPROTO_TCP||
|
|
|
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2==IPPROTO_UDP){if(
|
|
|
DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET9d758b8e5b==(0xd11+230-0xdf3))
|
|
|
seq_printf(DATARMNET80f4138358,
|
|
|
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x34\x2f\x25\x75\x20"
|
|
|
-"\x25\x70\x49\x34\x2f\x25\x75" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
|
|
|
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20"
|
|
|
+"\x25\x70\x49\x34\x2f\x25\x75\x20\x25\x70\x49\x34\x2f\x25\x75" "\n",
|
|
|
+DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f,
|
|
|
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,DATARMNET590c4d44f6
|
|
|
+->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,
|
|
|
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->
|
|
|
+DATARMNET5fe4c722a8.dport);else seq_printf(DATARMNET80f4138358,
|
|
|
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20"
|
|
|
+"\x25\x70\x49\x36\x2f\x25\x75\x20\x25\x70\x49\x36\x2f\x25\x75" "\n",
|
|
|
+DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f,
|
|
|
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,DATARMNET590c4d44f6
|
|
|
+->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,
|
|
|
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->
|
|
|
+DATARMNET5fe4c722a8.dport);}else{if(DATARMNET590c4d44f6->DATARMNET5fe4c722a8.
|
|
|
+DATARMNET9d758b8e5b==(0xd11+230-0xdf3))seq_printf(DATARMNET80f4138358,
|
|
|
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x34\x20"
|
|
|
+"\x25\x70\x49\x34" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
|
|
|
DATARMNETa845529338,DATARMNET35784a722f,DATARMNET590c4d44f6->DATARMNET5fe4c722a8
|
|
|
.DATARMNET06d2413ad2,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,
|
|
|
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,DATARMNET590c4d44f6->
|
|
|
-DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.dport);else
|
|
|
-seq_printf(DATARMNET80f4138358,
|
|
|
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x36\x2f\x25\x75\x20"
|
|
|
-"\x25\x70\x49\x36\x2f\x25\x75" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
|
|
|
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr);else seq_printf(
|
|
|
+DATARMNET80f4138358,
|
|
|
+"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x36\x20"
|
|
|
+"\x25\x70\x49\x36" "\n",DATARMNET7d003c10d9,DATARMNET5c33dbe77d,
|
|
|
DATARMNETa845529338,DATARMNET35784a722f,DATARMNET590c4d44f6->DATARMNET5fe4c722a8
|
|
|
.DATARMNET06d2413ad2,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,
|
|
|
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.sport,DATARMNET590c4d44f6->
|
|
|
-DATARMNET5fe4c722a8.daddr,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.dport);}else{
|
|
|
-if(DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET9d758b8e5b==
|
|
|
-(0xd11+230-0xdf3))seq_printf(DATARMNET80f4138358,
|
|
|
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x34\x20\x25\x70\x49\x34" "\n"
|
|
|
-,DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f
|
|
|
-,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,
|
|
|
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->
|
|
|
-DATARMNET5fe4c722a8.daddr);else seq_printf(DATARMNET80f4138358,
|
|
|
-"\x5b\x25\x36\x6c\x6c\x64\x20\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x3a\x25\x30\x32\x64\x5d\x20\x25\x32\x75\x20\x25\x70\x49\x36\x20\x25\x70\x49\x36" "\n"
|
|
|
-,DATARMNET7d003c10d9,DATARMNET5c33dbe77d,DATARMNETa845529338,DATARMNET35784a722f
|
|
|
-,DATARMNET590c4d44f6->DATARMNET5fe4c722a8.DATARMNET06d2413ad2,
|
|
|
-DATARMNET590c4d44f6->DATARMNET5fe4c722a8.saddr,DATARMNET590c4d44f6->
|
|
|
-DATARMNET5fe4c722a8.daddr);}if(++DATARMNETefc9df3df2>=DATARMNET137373fbd9)
|
|
|
-DATARMNETefc9df3df2=(0xd2d+202-0xdf7);}while(DATARMNETefc9df3df2!=
|
|
|
-DATARMNET04583f0705);spin_unlock_bh(&DATARMNET86e81617f0);return
|
|
|
-(0xd2d+202-0xdf7);}static void DATARMNET71e03e7287(void){spin_lock_bh(&
|
|
|
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8.daddr);}if(++DATARMNETefc9df3df2>=
|
|
|
+DATARMNET137373fbd9)DATARMNETefc9df3df2=(0xd2d+202-0xdf7);}while(
|
|
|
+DATARMNETefc9df3df2!=DATARMNET04583f0705);spin_unlock_bh(&DATARMNET86e81617f0);
|
|
|
+return(0xd2d+202-0xdf7);}static void DATARMNET71e03e7287(void){spin_lock_bh(&
|
|
|
DATARMNET86e81617f0);DATARMNETd4b2cd928c=ktime_get_coarse_boottime();
|
|
|
spin_unlock_bh(&DATARMNET86e81617f0);}static void DATARMNETfb7a2ce025(struct
|
|
|
rmnet_frag_descriptor*DATARMNET9d1b321642,struct sk_buff*DATARMNET543491eb0f){
|
|
@@ -645,11 +652,119 @@ inactive_time,(0xdb7+6665-0x261c));MODULE_PARM_DESC(inactive_time,
|
|
|
DATARMNET147f9b9f22,DATARMNETd7fae4b1c9,NULL);if(!DATARMNETf9422af3b0)pr_err(
|
|
|
"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x64\x6c\x5f\x61\x63\x74\x69\x76\x69\x74\x79\x20\x65\x6e\x74\x72\x79" "\n"
|
|
|
);}static void DATARMNETb4a75cfdea(void){proc_remove(DATARMNETf9422af3b0);
|
|
|
-proc_remove(DATARMNET147f9b9f22);}static const struct
|
|
|
-rmnet_module_hook_register_info DATARMNET509284caa6[]={{.hooknum=
|
|
|
-RMNET_MODULE_HOOK_APS_PRE_QUEUE,.func=DATARMNETe0c7b9d5a4,},{.hooknum=
|
|
|
-RMNET_MODULE_HOOK_APS_POST_QUEUE,.func=DATARMNET6ab4bbdaf4,},};static int __init
|
|
|
- DATARMNET0718a3fa4c(void){int DATARMNETb14e52a504;pr_info(
|
|
|
+proc_remove(DATARMNET147f9b9f22);}static bool DATARMNET5500f4ed98=true;static
|
|
|
+u32 DATARMNETb666ba3e85;static DEFINE_SPINLOCK(DATARMNETc3c07e6644);static
|
|
|
+LIST_HEAD(DATARMNET5e3c62e3a4);static void DATARMNET2cc15953ac(struct timer_list
|
|
|
+*DATARMNET6e4292679f);static DEFINE_TIMER(DATARMNET2d8efce4f0,
|
|
|
+DATARMNET2cc15953ac);struct DATARMNET321b555862{struct list_head
|
|
|
+DATARMNET46c1c4375f;struct genl_info DATARMNET54338da2ff;__be32 tx_id;unsigned
|
|
|
+long expires;};struct DATARMNET548caa01db{struct qmap_cmd_hdr
|
|
|
+DATARMNET9eab1e957c;u8 DATARMNETde8ef6e56a;u8 DATARMNET6f031e7934;u8
|
|
|
+DATARMNET08e1628d23;u8 len;__be32 DATARMNETa960d37cad[(0xd35+210-0xdff)];}
|
|
|
+__aligned((0xd26+209-0xdf6));static int DATARMNET3eadc89edf(u8
|
|
|
+DATARMNET6f031e7934,u8 mux_id,u8 DATARMNETc2284e5688,__be32*DATARMNET40f827eabe)
|
|
|
+{struct sk_buff*DATARMNET543491eb0f;struct DATARMNET548caa01db*
|
|
|
+DATARMNET791beb2b4a;unsigned int len;len=sizeof(struct DATARMNET548caa01db);
|
|
|
+DATARMNET543491eb0f=alloc_skb(len,GFP_ATOMIC);if(!DATARMNET543491eb0f)return-
|
|
|
+ENOMEM;DATARMNET543491eb0f->protocol=htons(ETH_P_MAP);DATARMNET791beb2b4a=
|
|
|
+skb_put(DATARMNET543491eb0f,len);memset(DATARMNET791beb2b4a,(0xd2d+202-0xdf7),
|
|
|
+len);DATARMNET791beb2b4a->DATARMNET9eab1e957c.cd_bit=(0xd26+209-0xdf6);
|
|
|
+DATARMNET791beb2b4a->DATARMNET9eab1e957c.mux_id=DATARMNETc2284e5688?
|
|
|
+(0xbf7+4364-0x1c04):mux_id;DATARMNET791beb2b4a->DATARMNET9eab1e957c.pkt_len=
|
|
|
+htons(len-QMAP_HDR_LEN);DATARMNET791beb2b4a->DATARMNET9eab1e957c.cmd_name=
|
|
|
+QMAP_DATA_REPORT;DATARMNET791beb2b4a->DATARMNET9eab1e957c.cmd_type=
|
|
|
+QMAP_CMD_REQUEST;DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id=htonl(
|
|
|
+rmnet_qmap_next_txid());DATARMNET791beb2b4a->DATARMNETde8ef6e56a=
|
|
|
+(0xd26+209-0xdf6);DATARMNET791beb2b4a->DATARMNET6f031e7934=DATARMNET6f031e7934;
|
|
|
+DATARMNET791beb2b4a->DATARMNET08e1628d23=DATARMNETc2284e5688?(0xd26+209-0xdf6):
|
|
|
+(0xd2d+202-0xdf7);if(DATARMNET40f827eabe)*DATARMNET40f827eabe=
|
|
|
+DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id;return rmnet_qmap_send(
|
|
|
+DATARMNET543491eb0f,RMNET_CH_CTL,false);}void DATARMNET5ff569bc33(struct sk_buff
|
|
|
+*DATARMNET543491eb0f){struct DATARMNET548caa01db*DATARMNET791beb2b4a;struct
|
|
|
+DATARMNET321b555862*DATARMNET66942f9c00=NULL;struct DATARMNET321b555862*
|
|
|
+DATARMNETf7b3d2c1a0;struct DATARMNET7fb3ee4333 DATARMNETa13fcf9070;int
|
|
|
+DATARMNETefc9df3df2;if(DATARMNET543491eb0f->len<sizeof(struct
|
|
|
+DATARMNET548caa01db))return;DATARMNET791beb2b4a=(struct DATARMNET548caa01db*)
|
|
|
+DATARMNET543491eb0f->data;if(!DATARMNET791beb2b4a||DATARMNET791beb2b4a->
|
|
|
+DATARMNET9eab1e957c.cmd_name!=QMAP_DATA_REPORT||DATARMNET791beb2b4a->
|
|
|
+DATARMNET9eab1e957c.cmd_type!=QMAP_CMD_ACK)return;if(DATARMNET791beb2b4a->len>
|
|
|
+ARRAY_SIZE(DATARMNET791beb2b4a->DATARMNETa960d37cad))return;spin_lock_bh(&
|
|
|
+DATARMNETc3c07e6644);list_for_each_entry(DATARMNETf7b3d2c1a0,&
|
|
|
+DATARMNET5e3c62e3a4,DATARMNET46c1c4375f){if(DATARMNETf7b3d2c1a0->tx_id==
|
|
|
+DATARMNET791beb2b4a->DATARMNET9eab1e957c.tx_id){DATARMNET66942f9c00=
|
|
|
+DATARMNETf7b3d2c1a0;list_del(&DATARMNET66942f9c00->DATARMNET46c1c4375f);
|
|
|
+DATARMNETb666ba3e85--;break;}}spin_unlock_bh(&DATARMNETc3c07e6644);if(
|
|
|
+DATARMNET66942f9c00){DATARMNETa13fcf9070.mux_id=DATARMNET791beb2b4a->
|
|
|
+DATARMNET9eab1e957c.mux_id;DATARMNETa13fcf9070.DATARMNET6f031e7934=
|
|
|
+DATARMNET791beb2b4a->DATARMNET6f031e7934;DATARMNETa13fcf9070.DATARMNET08e1628d23
|
|
|
+=DATARMNET791beb2b4a->DATARMNET08e1628d23;DATARMNETa13fcf9070.len=
|
|
|
+DATARMNET791beb2b4a->len;for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);
|
|
|
+DATARMNETefc9df3df2<DATARMNETa13fcf9070.len;DATARMNETefc9df3df2++)
|
|
|
+DATARMNETa13fcf9070.DATARMNETa960d37cad[DATARMNETefc9df3df2]=ntohl(
|
|
|
+DATARMNET791beb2b4a->DATARMNETa960d37cad[DATARMNETefc9df3df2]);
|
|
|
+DATARMNETbd1d5c8f28(&DATARMNET66942f9c00->DATARMNET54338da2ff,
|
|
|
+DATARMNET30180ab70e,DATARMNET24b8b9ef93,sizeof(DATARMNETa13fcf9070),&
|
|
|
+DATARMNETa13fcf9070,GFP_ATOMIC);kfree(DATARMNET66942f9c00);}}int
|
|
|
+DATARMNET568dffe281(struct sk_buff*DATARMNETaafc1d9519,struct genl_info*
|
|
|
+DATARMNET54338da2ff){struct nlattr*DATARMNET9c5e00ef03;struct
|
|
|
+DATARMNET7fb3ee4333 DATARMNETddcafd8b91;__be32 DATARMNET40f827eabe;struct
|
|
|
+DATARMNET321b555862*DATARMNET66942f9c00;unsigned long DATARMNETfb1521ef26=
|
|
|
+(0xd2d+202-0xdf7);int DATARMNETb14e52a504;if(!DATARMNET54338da2ff)return-EINVAL;
|
|
|
+DATARMNET9c5e00ef03=DATARMNET54338da2ff->attrs[DATARMNET24b8b9ef93];if(!
|
|
|
+DATARMNET9c5e00ef03){DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x4e\x6f\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x61\x74\x74\x72" "\n"
|
|
|
+);return-EINVAL;}if(nla_memcpy(&DATARMNETddcafd8b91,DATARMNET9c5e00ef03,sizeof(
|
|
|
+DATARMNETddcafd8b91))<=(0xd2d+202-0xdf7)){DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x63\x6f\x70\x79\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x61\x74\x74\x72\x20\x66\x61\x69\x6c\x65\x64" "\n"
|
|
|
+);return-EINVAL;}spin_lock_bh(&DATARMNETc3c07e6644);if(!DATARMNET5500f4ed98){
|
|
|
+DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x69\x67\x6e\x6f\x72\x65\x20\x74\x68\x65\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x72\x65\x71\x75\x65\x73\x74" "\n"
|
|
|
+);goto DATARMNETbf2e68b8a3;}if(DATARMNETb666ba3e85>=(0xd0a+237-0xdf2)){
|
|
|
+DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x74\x6f\x6f\x20\x6d\x61\x6e\x79\x20\x6f\x75\x74\x73\x74\x61\x6e\x64\x69\x6e\x67\x20\x72\x65\x71\x75\x65\x73\x74\x73" "\n"
|
|
|
+);goto DATARMNETbf2e68b8a3;}if(DATARMNET3eadc89edf(DATARMNETddcafd8b91.
|
|
|
+DATARMNET6f031e7934,DATARMNETddcafd8b91.mux_id,DATARMNETddcafd8b91.
|
|
|
+DATARMNET08e1628d23,&DATARMNET40f827eabe)){DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x73\x65\x6e\x64\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x63\x6f\x6d\x6d\x61\x6e\x64"
|
|
|
+);goto DATARMNETbf2e68b8a3;}DATARMNET66942f9c00=kzalloc(sizeof(*
|
|
|
+DATARMNET66942f9c00),GFP_ATOMIC);if(!DATARMNET66942f9c00){DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x6e\x6f\x20\x6d\x65\x6d\x6f\x72\x79\x20\x66\x6f\x72\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74" "\n"
|
|
|
+);goto DATARMNETbf2e68b8a3;}DATARMNET66942f9c00->DATARMNET54338da2ff=*
|
|
|
+DATARMNET54338da2ff;DATARMNET66942f9c00->tx_id=DATARMNET40f827eabe;
|
|
|
+DATARMNET66942f9c00->expires=jiffies+HZ;if(list_empty(&DATARMNET5e3c62e3a4))
|
|
|
+DATARMNETfb1521ef26=DATARMNET66942f9c00->expires;list_add(&DATARMNET66942f9c00->
|
|
|
+DATARMNET46c1c4375f,&DATARMNET5e3c62e3a4);DATARMNETb666ba3e85++;spin_unlock_bh(&
|
|
|
+DATARMNETc3c07e6644);if(DATARMNETfb1521ef26){DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x73\x74\x61\x72\x74\x69\x6e\x67\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72" "\n"
|
|
|
+);mod_timer(&DATARMNET2d8efce4f0,DATARMNETfb1521ef26);}return(0xd2d+202-0xdf7);
|
|
|
+DATARMNETbf2e68b8a3:spin_unlock_bh(&DATARMNETc3c07e6644);DATARMNETddcafd8b91.len
|
|
|
+=(0xd2d+202-0xdf7);DATARMNETb14e52a504=DATARMNETbd1d5c8f28(DATARMNET54338da2ff,
|
|
|
+DATARMNET30180ab70e,DATARMNET24b8b9ef93,sizeof(DATARMNETddcafd8b91),&
|
|
|
+DATARMNETddcafd8b91,GFP_KERNEL);return DATARMNETb14e52a504;}static void
|
|
|
+DATARMNET2cc15953ac(struct timer_list*DATARMNET6e4292679f){struct
|
|
|
+DATARMNET321b555862*DATARMNET66942f9c00;struct DATARMNET321b555862*
|
|
|
+DATARMNETf7b3d2c1a0;unsigned long DATARMNET02dfdbc38d=jiffies;bool
|
|
|
+DATARMNETb7430302d6=false;DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72\x20\x66\x69\x72\x65\x64" "\n"
|
|
|
+);spin_lock_bh(&DATARMNETc3c07e6644);list_for_each_entry_safe(
|
|
|
+DATARMNET66942f9c00,DATARMNETf7b3d2c1a0,&DATARMNET5e3c62e3a4,DATARMNET46c1c4375f
|
|
|
+){if(time_before_eq(DATARMNET66942f9c00->expires,DATARMNET02dfdbc38d)){list_del(
|
|
|
+&DATARMNET66942f9c00->DATARMNET46c1c4375f);kfree(DATARMNET66942f9c00);
|
|
|
+DATARMNETb666ba3e85--;DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x72\x65\x6d\x6f\x76\x65\x64\x20\x6f\x6e\x65\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x72\x65\x71\x75\x65\x73\x74" "\n"
|
|
|
+);}}if(!list_empty(&DATARMNET5e3c62e3a4))DATARMNETb7430302d6=true;spin_unlock_bh
|
|
|
+(&DATARMNETc3c07e6644);if(DATARMNETb7430302d6){DATARMNET112d724eff(
|
|
|
+"\x61\x70\x73\x3a\x20\x64\x61\x74\x61\x20\x72\x65\x70\x6f\x72\x74\x20\x74\x69\x6d\x65\x72\x20\x72\x65\x2d\x61\x72\x6d\x65\x64" "\n"
|
|
|
+);mod_timer(&DATARMNET2d8efce4f0,jiffies+HZ);}}static void DATARMNETb3f219d872(
|
|
|
+void){struct DATARMNET321b555862*DATARMNET66942f9c00;struct DATARMNET321b555862*
|
|
|
+DATARMNETf7b3d2c1a0;spin_lock_bh(&DATARMNETc3c07e6644);list_for_each_entry_safe(
|
|
|
+DATARMNET66942f9c00,DATARMNETf7b3d2c1a0,&DATARMNET5e3c62e3a4,DATARMNET46c1c4375f
|
|
|
+){list_del(&DATARMNET66942f9c00->DATARMNET46c1c4375f);kfree(DATARMNET66942f9c00)
|
|
|
+;}DATARMNET5500f4ed98=false;DATARMNETb666ba3e85=(0xd2d+202-0xdf7);spin_unlock_bh
|
|
|
+(&DATARMNETc3c07e6644);}static const struct rmnet_module_hook_register_info
|
|
|
+DATARMNET644887c40e[]={{.hooknum=RMNET_MODULE_HOOK_APS_DATA_REPORT,.func=
|
|
|
+DATARMNET5ff569bc33,},};static int __init DATARMNET0718a3fa4c(void){int
|
|
|
+DATARMNETb14e52a504;pr_info(
|
|
|
"\x61\x70\x73\x3a\x20\x69\x6e\x69\x74\x20\x28\x25\x73\x29" "\n",
|
|
|
DATARMNETe5ef0e617c);DATARMNETb14e52a504=DATARMNETcfa8d492f8();if(
|
|
|
DATARMNETb14e52a504){pr_err(
|
|
@@ -657,18 +772,21 @@ DATARMNETb14e52a504){pr_err(
|
|
|
);return DATARMNETb14e52a504;}register_netdevice_notifier(&DATARMNETc580548769);
|
|
|
rcu_assign_pointer(rmnet_aps_pre_queue,DATARMNETe0c7b9d5a4);rcu_assign_pointer(
|
|
|
rmnet_aps_post_queue,DATARMNET6ab4bbdaf4);rmnet_module_hook_register(
|
|
|
-DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));mutex_lock(&
|
|
|
+DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));rmnet_module_hook_register(
|
|
|
+DATARMNET644887c40e,ARRAY_SIZE(DATARMNET644887c40e));mutex_lock(&
|
|
|
DATARMNETd7b5a80f84);DATARMNET54b95e4416=true;mutex_unlock(&DATARMNETd7b5a80f84)
|
|
|
;DATARMNET519162865c();return(0xd2d+202-0xdf7);}static void __exit
|
|
|
DATARMNETff67054ba9(void){DATARMNETb4a75cfdea();
|
|
|
rmnet_module_hook_unregister_no_sync(DATARMNETbdf157f06a,ARRAY_SIZE(
|
|
|
-DATARMNETbdf157f06a));rcu_assign_pointer(rmnet_aps_pre_queue,NULL);
|
|
|
+DATARMNETbdf157f06a));rmnet_module_hook_unregister_no_sync(DATARMNET644887c40e,
|
|
|
+ARRAY_SIZE(DATARMNET644887c40e));rcu_assign_pointer(rmnet_aps_pre_queue,NULL);
|
|
|
rcu_assign_pointer(rmnet_aps_post_queue,NULL);rmnet_module_hook_unregister(
|
|
|
DATARMNET509284caa6,ARRAY_SIZE(DATARMNET509284caa6));mutex_lock(&
|
|
|
DATARMNETd7b5a80f84);DATARMNET54b95e4416=false;DATARMNET9ac8a34003();
|
|
|
mutex_unlock(&DATARMNETd7b5a80f84);DATARMNET446f780f19((0xd2d+202-0xdf7),
|
|
|
DATARMNET94016043b8);cancel_delayed_work_sync(&DATARMNET3481998252);
|
|
|
del_timer_sync(&DATARMNETd21629e047);cancel_work_sync(&DATARMNET8e3aef0760);
|
|
|
+DATARMNETb3f219d872();del_timer_sync(&DATARMNET2d8efce4f0);
|
|
|
unregister_netdevice_notifier(&DATARMNETc580548769);DATARMNETca7606cfd1();
|
|
|
DATARMNET112d724eff("\x61\x70\x73\x3a\x20\x65\x78\x69\x74" "\n");}MODULE_LICENSE
|
|
|
("\x47\x50\x4c\x20\x76\x32");module_init(DATARMNET0718a3fa4c);module_exit(
|