|
@@ -25,14 +25,15 @@
|
|
|
#include "rmnet_wlan_stats.h"
|
|
|
#include "rmnet_wlan_fragment.h"
|
|
|
#include "rmnet_wlan_connection.h"
|
|
|
-static char*verinfo[]={"\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",
|
|
|
-"\x61\x33\x33\x33\x36\x37\x61\x31","\x37\x34\x31\x35\x39\x32\x31\x63",
|
|
|
-"\x33\x35\x36\x63\x34\x39\x31\x63","\x34\x64\x32\x32\x34\x33\x36\x33",
|
|
|
-"\x61\x34\x31\x63\x39\x64\x37\x62","\x38\x66\x32\x66\x65\x64\x32\x66",
|
|
|
-"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL,
|
|
|
-(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
|
|
|
+static char*verinfo[]={"\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","\x61\x33\x33\x33\x36\x37\x61\x31",
|
|
|
+"\x37\x34\x31\x35\x39\x32\x31\x63","\x33\x35\x36\x63\x34\x39\x31\x63",
|
|
|
+"\x34\x64\x32\x32\x34\x33\x36\x33","\x61\x34\x31\x63\x39\x64\x37\x62",
|
|
|
+"\x38\x66\x32\x66\x65\x64\x32\x66","\x63\x30\x32\x62\x61\x39\x30\x65"};
|
|
|
+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))
|
|
@@ -48,19 +49,20 @@ DATARMNET954bef55d0);static DEFINE_HASHTABLE(DATARMNET133502ca0e,
|
|
|
DATARMNET6b4ac8224c);static DEFINE_HASHTABLE(DATARMNET665d2f133f,
|
|
|
DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNET38726379d1);static
|
|
|
DEFINE_SPINLOCK(DATARMNETe6ee7c273e);static char DATARMNET30500ba48c[IFNAMSIZ];
|
|
|
-static char DATARMNET755f0f0df8[IFNAMSIZ];struct DATARMNETe117226f58*
|
|
|
-DATARMNETcde6e442f5;static bool DATARMNET1e31b22eff(struct DATARMNETb89ecedefc*
|
|
|
-DATARMNETae0905b0b3,struct DATARMNETb89ecedefc*DATARMNETdb49f21565){if(
|
|
|
-DATARMNETae0905b0b3->DATARMNET0d956cc77a!=DATARMNETdb49f21565->
|
|
|
-DATARMNET0d956cc77a||DATARMNETae0905b0b3->DATARMNET4924e79411!=
|
|
|
-DATARMNETdb49f21565->DATARMNET4924e79411)return false;if(DATARMNETae0905b0b3->
|
|
|
-DATARMNET0d956cc77a==IPPROTO_ESP)return DATARMNETae0905b0b3->DATARMNET906b2ee561
|
|
|
-==DATARMNETdb49f21565->DATARMNET906b2ee561;return DATARMNETae0905b0b3->
|
|
|
-DATARMNETf0d9de7e2f==DATARMNETdb49f21565->DATARMNETf0d9de7e2f;}static int
|
|
|
-DATARMNET0b72d312f9(struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct
|
|
|
-genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET63a2b7773e){struct
|
|
|
-DATARMNET745f724205*DATARMNET63b1a086d5;rcu_read_lock();if(DATARMNET4eafcdee07(
|
|
|
-DATARMNET3396919a68)){rcu_read_unlock();GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
|
+static char DATARMNET755f0f0df8[IFNAMSIZ];static u32 DATARMNET7c77d83017;struct
|
|
|
+DATARMNETe117226f58*DATARMNETcde6e442f5;static bool DATARMNET1e31b22eff(struct
|
|
|
+DATARMNETb89ecedefc*DATARMNETae0905b0b3,struct DATARMNETb89ecedefc*
|
|
|
+DATARMNETdb49f21565){if(DATARMNETae0905b0b3->DATARMNET0d956cc77a!=
|
|
|
+DATARMNETdb49f21565->DATARMNET0d956cc77a||DATARMNETae0905b0b3->
|
|
|
+DATARMNET4924e79411!=DATARMNETdb49f21565->DATARMNET4924e79411)return false;if(
|
|
|
+DATARMNETae0905b0b3->DATARMNET0d956cc77a==IPPROTO_ESP)return DATARMNETae0905b0b3
|
|
|
+->DATARMNET906b2ee561==DATARMNETdb49f21565->DATARMNET906b2ee561;return
|
|
|
+DATARMNETae0905b0b3->DATARMNETf0d9de7e2f==DATARMNETdb49f21565->
|
|
|
+DATARMNETf0d9de7e2f;}static int DATARMNET0b72d312f9(struct DATARMNETb89ecedefc*
|
|
|
+DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff)__must_hold(&
|
|
|
+DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5;
|
|
|
+rcu_read_lock();if(DATARMNET4eafcdee07(DATARMNET3396919a68)){rcu_read_unlock();
|
|
|
+GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
|
"\x54\x75\x70\x6c\x65\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74"
|
|
|
);return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(*
|
|
|
DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG(
|
|
@@ -84,21 +86,22 @@ GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
|
"\x4e\x6f\x20\x73\x75\x63\x68\x20\x74\x75\x70\x6c\x65");return-ESRCH;}static
|
|
|
void DATARMNETad43e44c7e(void){struct DATARMNET745f724205*DATARMNET63b1a086d5;
|
|
|
struct hlist_node*DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;mutex_lock(&
|
|
|
-DATARMNET63a2b7773e);hash_for_each_safe(DATARMNET1903907456,DATARMNET5c2fd31d7b,
|
|
|
-DATARMNET0386f6f82a,DATARMNET63b1a086d5,DATARMNETe8608dd267){hash_del_rcu(&
|
|
|
-DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,
|
|
|
-DATARMNET28bfe9e6ad);}mutex_unlock(&DATARMNET63a2b7773e);}static bool
|
|
|
-DATARMNET55aac1386b(struct DATARMNET8d3c2559ca*DATARMNET1476c48228,struct
|
|
|
-DATARMNET8d3c2559ca*DATARMNET57a0f36a25){struct in6_addr DATARMNET4c8c2ca74e={.
|
|
|
-s6_addr32={4294967295,4294967295,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7)},};if(
|
|
|
-DATARMNET1476c48228->DATARMNET0d956cc77a!=DATARMNET57a0f36a25->
|
|
|
-DATARMNET0d956cc77a)return false;if(DATARMNET1476c48228->DATARMNET0d956cc77a==
|
|
|
-(0xd11+230-0xdf3))return DATARMNET1476c48228->DATARMNET0dc14167a1==
|
|
|
-DATARMNET57a0f36a25->DATARMNET0dc14167a1;return!ipv6_masked_addr_cmp(&
|
|
|
-DATARMNET1476c48228->DATARMNET5700daac01,&DATARMNET4c8c2ca74e,&
|
|
|
-DATARMNET57a0f36a25->DATARMNET5700daac01);}struct DATARMNET41b426061d*
|
|
|
-DATARMNETcc0a01df2a(struct DATARMNET8d3c2559ca*DATARMNET54338da2ff)__must_hold(
|
|
|
-RCU){struct DATARMNET41b426061d*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
|
|
|
+DATARMNET63a2b7773e);DATARMNET7c77d83017=(0xd2d+202-0xdf7);hash_for_each_safe(
|
|
|
+DATARMNET1903907456,DATARMNET5c2fd31d7b,DATARMNET0386f6f82a,DATARMNET63b1a086d5,
|
|
|
+DATARMNETe8608dd267){hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);
|
|
|
+kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);}mutex_unlock(&
|
|
|
+DATARMNET63a2b7773e);}static bool DATARMNET55aac1386b(struct DATARMNET8d3c2559ca
|
|
|
+*DATARMNET1476c48228,struct DATARMNET8d3c2559ca*DATARMNET57a0f36a25){struct
|
|
|
+in6_addr DATARMNET4c8c2ca74e={.s6_addr32={4294967295,4294967295,
|
|
|
+(0xd2d+202-0xdf7),(0xd2d+202-0xdf7)},};if(DATARMNET1476c48228->
|
|
|
+DATARMNET0d956cc77a!=DATARMNET57a0f36a25->DATARMNET0d956cc77a)return false;if(
|
|
|
+DATARMNET1476c48228->DATARMNET0d956cc77a==(0xd11+230-0xdf3))return
|
|
|
+DATARMNET1476c48228->DATARMNET0dc14167a1==DATARMNET57a0f36a25->
|
|
|
+DATARMNET0dc14167a1;return!ipv6_masked_addr_cmp(&DATARMNET1476c48228->
|
|
|
+DATARMNET5700daac01,&DATARMNET4c8c2ca74e,&DATARMNET57a0f36a25->
|
|
|
+DATARMNET5700daac01);}struct DATARMNET41b426061d*DATARMNETcc0a01df2a(struct
|
|
|
+DATARMNET8d3c2559ca*DATARMNET54338da2ff)__must_hold(RCU){struct
|
|
|
+DATARMNET41b426061d*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
|
|
|
DATARMNET78ed39f13b,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff
|
|
|
->DATARMNET0dc14167a1){if(DATARMNET55aac1386b(&DATARMNET63b1a086d5->
|
|
|
DATARMNET7ed5754a5c,DATARMNET54338da2ff))return DATARMNET63b1a086d5;}return NULL
|
|
@@ -455,20 +458,21 @@ DATARMNETefc9df3df2;mutex_lock(&DATARMNET63a2b7773e);for(DATARMNETefc9df3df2=
|
|
|
(0xd2d+202-0xdf7);DATARMNETefc9df3df2<DATARMNETef77661260;DATARMNETefc9df3df2++)
|
|
|
{DATARMNET268a8314cf=DATARMNET0b72d312f9(&DATARMNETcadc2ef9aa[
|
|
|
DATARMNETefc9df3df2],DATARMNET54338da2ff);if(DATARMNET268a8314cf){if(
|
|
|
-DATARMNET268a8314cf==-EEXIST)DATARMNET268a8314cf=(0xd2d+202-0xdf7);else break;}}
|
|
|
-mutex_unlock(&DATARMNET63a2b7773e);return DATARMNET268a8314cf;}int
|
|
|
-DATARMNET07f6485c9b(struct DATARMNETb89ecedefc*DATARMNETcadc2ef9aa,u32
|
|
|
-DATARMNETef77661260,struct genl_info*DATARMNET54338da2ff){int
|
|
|
-DATARMNET268a8314cf=(0xd2d+202-0xdf7);u32 DATARMNETefc9df3df2;mutex_lock(&
|
|
|
+DATARMNET268a8314cf==-EEXIST)DATARMNET268a8314cf=(0xd2d+202-0xdf7);else break;}
|
|
|
+else{DATARMNET7c77d83017++;}}mutex_unlock(&DATARMNET63a2b7773e);return
|
|
|
+DATARMNET268a8314cf;}int DATARMNET07f6485c9b(struct DATARMNETb89ecedefc*
|
|
|
+DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info*DATARMNET54338da2ff
|
|
|
+){int DATARMNET268a8314cf=(0xd2d+202-0xdf7);u32 DATARMNETefc9df3df2;mutex_lock(&
|
|
|
DATARMNET63a2b7773e);for(DATARMNETefc9df3df2=(0xd2d+202-0xdf7);
|
|
|
DATARMNETefc9df3df2<DATARMNETef77661260;DATARMNETefc9df3df2++){
|
|
|
DATARMNET268a8314cf=DATARMNET79343e3135(&DATARMNETcadc2ef9aa[DATARMNETefc9df3df2
|
|
|
],DATARMNET54338da2ff);if(DATARMNET268a8314cf){if(DATARMNET268a8314cf==-ESRCH)
|
|
|
-DATARMNET268a8314cf=(0xd2d+202-0xdf7);else break;}}mutex_unlock(&
|
|
|
-DATARMNET63a2b7773e);return DATARMNET268a8314cf;}int DATARMNET97b2388e63(char*
|
|
|
-DATARMNET852d4d00e2,struct genl_info*DATARMNET54338da2ff){int
|
|
|
-DATARMNET268a8314cf;if(!DATARMNETaba2beb199(DATARMNET30500ba48c,
|
|
|
-DATARMNET852d4d00e2,IFNAMSIZ)){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
|
+DATARMNET268a8314cf=(0xd2d+202-0xdf7);else break;}else{DATARMNET7c77d83017--;}}
|
|
|
+mutex_unlock(&DATARMNET63a2b7773e);return DATARMNET268a8314cf;}int
|
|
|
+DATARMNET97b2388e63(char*DATARMNET852d4d00e2,struct genl_info*
|
|
|
+DATARMNET54338da2ff){int DATARMNET268a8314cf;if(!DATARMNETaba2beb199(
|
|
|
+DATARMNET30500ba48c,DATARMNET852d4d00e2,IFNAMSIZ)){GENL_SET_ERR_MSG(
|
|
|
+DATARMNET54338da2ff,
|
|
|
"\x44\x65\x76\x69\x63\x65\x20\x69\x73\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x73\x65\x74"
|
|
|
);return(0xd2d+202-0xdf7);}DATARMNET268a8314cf=DATARMNET116f9a46aa();if(
|
|
|
DATARMNET268a8314cf){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
@@ -530,6 +534,32 @@ DATARMNET268a8314cf=DATARMNET51f60f2fd3(DATARMNET3396919a68);mutex_unlock(&
|
|
|
DATARMNET38726379d1);return DATARMNET268a8314cf;}int DATARMNET56fde5181e(void){
|
|
|
int DATARMNET268a8314cf;mutex_lock(&DATARMNET38726379d1);DATARMNET268a8314cf=
|
|
|
DATARMNETb9c7621157();mutex_unlock(&DATARMNET38726379d1);return
|
|
|
+DATARMNET268a8314cf;}static int DATARMNETed41dd2d3f(struct sk_buff*
|
|
|
+DATARMNET543491eb0f,struct DATARMNETb89ecedefc*DATARMNET3396919a68){struct
|
|
|
+nlattr*DATARMNET4186ba2d8f;DATARMNET4186ba2d8f=nla_nest_start(
|
|
|
+DATARMNET543491eb0f,DATARMNET4e9cd7b8bf);if(!DATARMNET4186ba2d8f)return-EINVAL;
|
|
|
+if(nla_put(DATARMNET543491eb0f,DATARMNET8c062d7709,sizeof(*DATARMNET3396919a68),
|
|
|
+DATARMNET3396919a68)){nla_nest_cancel(DATARMNET543491eb0f,DATARMNET4186ba2d8f);
|
|
|
+return-EINVAL;}nla_nest_end(DATARMNET543491eb0f,DATARMNET4186ba2d8f);return
|
|
|
+(0xd2d+202-0xdf7);}int DATARMNETe14c875532(struct sk_buff**DATARMNET89946cec52,
|
|
|
+struct genl_family*DATARMNET4a4aca7220,struct genl_info*DATARMNET54338da2ff){
|
|
|
+struct DATARMNET745f724205*DATARMNET63b1a086d5;struct sk_buff*
|
|
|
+DATARMNET49b2094b56=NULL;struct nlattr*DATARMNETa5d4001a4a;int
|
|
|
+DATARMNETd6c25fe6b5;int DATARMNET268a8314cf=(0xd2d+202-0xdf7);void*
|
|
|
+DATARMNET9eab1e957c;int DATARMNET5c2fd31d7b;mutex_lock(&DATARMNET63a2b7773e);
|
|
|
+DATARMNETd6c25fe6b5=nla_total_size(nla_total_size(sizeof(DATARMNET63b1a086d5->
|
|
|
+DATARMNET54338da2ff))*DATARMNET7c77d83017);DATARMNET49b2094b56=genlmsg_new(
|
|
|
+DATARMNETd6c25fe6b5,GFP_KERNEL);if(!DATARMNET49b2094b56)return-ENOMEM;
|
|
|
+DATARMNET9eab1e957c=genlmsg_put_reply(DATARMNET49b2094b56,DATARMNET54338da2ff,
|
|
|
+DATARMNET4a4aca7220,(0xd2d+202-0xdf7),DATARMNET7c479706fb);if(!
|
|
|
+DATARMNET9eab1e957c){kfree(DATARMNET49b2094b56);return-EINVAL;}
|
|
|
+DATARMNETa5d4001a4a=nla_nest_start(DATARMNET49b2094b56,DATARMNET4e9cd7b8bf);if(!
|
|
|
+DATARMNETa5d4001a4a){kfree(DATARMNET49b2094b56);return-EINVAL;}hash_for_each(
|
|
|
+DATARMNET1903907456,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5,DATARMNETe8608dd267)
|
|
|
+DATARMNETed41dd2d3f(DATARMNET49b2094b56,&DATARMNET63b1a086d5->
|
|
|
+DATARMNET54338da2ff);nla_nest_end(DATARMNET49b2094b56,DATARMNETa5d4001a4a);
|
|
|
+genlmsg_end(DATARMNET49b2094b56,DATARMNET9eab1e957c);*DATARMNET89946cec52=
|
|
|
+DATARMNET49b2094b56;mutex_unlock(&DATARMNET63a2b7773e);return
|
|
|
DATARMNET268a8314cf;}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return
|
|
|
(0xd2d+202-0xdf7);}void DATARMNETfae36afa03(void){DATARMNETbb4efa5b3d();}char*
|
|
|
DATARMNET934406764d(void){return DATARMNET30500ba48c;}char*DATARMNETe447822105(
|