|
@@ -1,4 +1,4 @@
|
|
|
-/* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
+/* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
|
*
|
|
|
* This program is free software; you can redistribute it and/or modify
|
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
@@ -14,17 +14,19 @@
|
|
|
#include <linux/list_sort.h>
|
|
|
#include <linux/workqueue.h>
|
|
|
#include <linux/netdevice.h>
|
|
|
+#include <linux/proc_fs.h>
|
|
|
#include <net/ip.h>
|
|
|
#include <net/ipv6.h>
|
|
|
#include "rmnet_config.h"
|
|
|
#include "rmnet_module.h"
|
|
|
+#include "rmnet_descriptor.h"
|
|
|
#include "rmnet_aps.h"
|
|
|
#include "rmnet_aps_genl.h"
|
|
|
-static char*verinfo[]={"\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[]={"\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)
|
|
@@ -45,7 +47,7 @@ verinfo,
|
|
|
(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\x32";static u16
|
|
|
+static const char*DATARMNETe5ef0e617c="\x31\x2e\x33";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),
|
|
@@ -83,99 +85,153 @@ DATARMNET5979020f87);static int DATARMNET998f6cbce7(struct notifier_block*
|
|
|
DATARMNET272c159b3c,unsigned long DATARMNET9a4761f31c,void*data);static struct
|
|
|
notifier_block DATARMNETc580548769 __read_mostly={.notifier_call=
|
|
|
DATARMNET998f6cbce7,.priority=(0xd1f+216-0xdf5),};struct DATARMNETf21ed5deb4{
|
|
|
-__u8 DATARMNET06d2413ad2;__be32*saddr;__be32*daddr;__u16 sport;__u16 dport;__u32
|
|
|
- DATARMNETe9aad463ce;__u8 tos;};static int DATARMNET481989429b(struct sk_buff*
|
|
|
-DATARMNET543491eb0f,struct DATARMNETf21ed5deb4*DATARMNET203a7a0136){struct
|
|
|
-DATARMNET6d4c22c781{__be16 sport;__be16 dport;};int DATARMNETb65c469a15;if(
|
|
|
-DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9
|
|
|
-,DATARMNET8dc568fa4c;DATARMNET86f1f2cdc9=__skb_header_pointer(
|
|
|
-DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),
|
|
|
-DATARMNET543491eb0f->data,skb_headlen(DATARMNET543491eb0f),&DATARMNET8dc568fa4c)
|
|
|
-;if(unlikely(!DATARMNET86f1f2cdc9||DATARMNET86f1f2cdc9->ihl<(0xd0a+237-0xdf2)))
|
|
|
-return-EINVAL;if(unlikely(ip_is_fragment(DATARMNET86f1f2cdc9)))return-EFAULT;
|
|
|
-DATARMNETb65c469a15=DATARMNET86f1f2cdc9->ihl<<(0xd1f+216-0xdf5);
|
|
|
+__u8 DATARMNET9d758b8e5b;__u8 DATARMNETe419bc836d;__u8 DATARMNETd43be7664c;__u8
|
|
|
+DATARMNET06d2413ad2;__be32 saddr[(0xd11+230-0xdf3)];__be32 daddr[
|
|
|
+(0xd11+230-0xdf3)];__u16 sport;__u16 dport;__u32 DATARMNETe9aad463ce;__u8 tos;};
|
|
|
+static int DATARMNET481989429b(struct sk_buff*DATARMNET543491eb0f,struct
|
|
|
+DATARMNETf21ed5deb4*DATARMNET203a7a0136){struct DATARMNET6d4c22c781{__be16 sport
|
|
|
+;__be16 dport;};int DATARMNETb65c469a15;if(DATARMNET543491eb0f->protocol==htons(
|
|
|
+ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9,DATARMNET8dc568fa4c;
|
|
|
+DATARMNET86f1f2cdc9=__skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
|
|
|
+sizeof(*DATARMNET86f1f2cdc9),DATARMNET543491eb0f->data,skb_headlen(
|
|
|
+DATARMNET543491eb0f),&DATARMNET8dc568fa4c);if(unlikely(!DATARMNET86f1f2cdc9||
|
|
|
+DATARMNET86f1f2cdc9->ihl<(0xd0a+237-0xdf2)))return-EINVAL;if(unlikely(
|
|
|
+ip_is_fragment(DATARMNET86f1f2cdc9))){DATARMNET203a7a0136->DATARMNETe419bc836d=
|
|
|
+(0xd26+209-0xdf6);DATARMNET203a7a0136->DATARMNETd43be7664c=!(DATARMNET86f1f2cdc9
|
|
|
+->frag_off&htons(IP_OFFSET));}DATARMNETb65c469a15=DATARMNET86f1f2cdc9->ihl<<
|
|
|
+(0xd1f+216-0xdf5);DATARMNET203a7a0136->DATARMNET9d758b8e5b=(0xd11+230-0xdf3);
|
|
|
DATARMNET203a7a0136->DATARMNET06d2413ad2=DATARMNET86f1f2cdc9->protocol;
|
|
|
-DATARMNET203a7a0136->saddr=&DATARMNET86f1f2cdc9->saddr;DATARMNET203a7a0136->
|
|
|
-daddr=&DATARMNET86f1f2cdc9->daddr;DATARMNET203a7a0136->tos=DATARMNET86f1f2cdc9->
|
|
|
-tos;}else if(DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr*
|
|
|
-DATARMNETbf55123e5b,DATARMNET9df40d3f99;DATARMNETbf55123e5b=__skb_header_pointer
|
|
|
-(DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),
|
|
|
-DATARMNET543491eb0f->data,skb_headlen(DATARMNET543491eb0f),&DATARMNET9df40d3f99)
|
|
|
-;if(unlikely(!DATARMNETbf55123e5b))return-EINVAL;if(unlikely(DATARMNETbf55123e5b
|
|
|
-->nexthdr==IPPROTO_FRAGMENT))return-EFAULT;DATARMNETb65c469a15=sizeof(*
|
|
|
-DATARMNETbf55123e5b);DATARMNET203a7a0136->DATARMNET06d2413ad2=
|
|
|
-DATARMNETbf55123e5b->nexthdr;DATARMNET203a7a0136->saddr=DATARMNETbf55123e5b->
|
|
|
-saddr.in6_u.u6_addr32;DATARMNET203a7a0136->daddr=DATARMNETbf55123e5b->daddr.
|
|
|
-in6_u.u6_addr32;DATARMNET203a7a0136->tos=ip6_tclass(ip6_flowinfo(
|
|
|
+DATARMNET203a7a0136->saddr[(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->saddr;
|
|
|
+DATARMNET203a7a0136->daddr[(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->daddr;
|
|
|
+DATARMNET203a7a0136->tos=DATARMNET86f1f2cdc9->tos;}else if(DATARMNET543491eb0f->
|
|
|
+protocol==htons(ETH_P_IPV6)){struct ipv6hdr*DATARMNETbf55123e5b,
|
|
|
+DATARMNET9df40d3f99;__be16 frag_off=(0xd2d+202-0xdf7);u8 nexthdr;
|
|
|
+DATARMNETbf55123e5b=__skb_header_pointer(DATARMNET543491eb0f,(0xd2d+202-0xdf7),
|
|
|
+sizeof(*DATARMNETbf55123e5b),DATARMNET543491eb0f->data,skb_headlen(
|
|
|
+DATARMNET543491eb0f),&DATARMNET9df40d3f99);if(unlikely(!DATARMNETbf55123e5b))
|
|
|
+return-EINVAL;nexthdr=DATARMNETbf55123e5b->nexthdr;DATARMNETb65c469a15=
|
|
|
+ipv6_skip_exthdr(DATARMNET543491eb0f,sizeof(*DATARMNETbf55123e5b),&nexthdr,&
|
|
|
+frag_off);if(unlikely(DATARMNETb65c469a15<(0xd2d+202-0xdf7)))return-EFAULT;if(
|
|
|
+unlikely(frag_off)){DATARMNET203a7a0136->DATARMNETe419bc836d=(0xd26+209-0xdf6);
|
|
|
+DATARMNET203a7a0136->DATARMNETd43be7664c=!(frag_off&htons(IP6_OFFSET));}
|
|
|
+DATARMNET203a7a0136->DATARMNET9d758b8e5b=(0xd03+244-0xdf1);DATARMNET203a7a0136->
|
|
|
+DATARMNET06d2413ad2=nexthdr;memcpy(DATARMNET203a7a0136->saddr,
|
|
|
+DATARMNETbf55123e5b->saddr.in6_u.u6_addr8,(0xeb7+1158-0x132d));memcpy(
|
|
|
+DATARMNET203a7a0136->daddr,DATARMNETbf55123e5b->daddr.in6_u.u6_addr8,
|
|
|
+(0xeb7+1158-0x132d));DATARMNET203a7a0136->tos=ip6_tclass(ip6_flowinfo(
|
|
|
DATARMNETbf55123e5b));DATARMNET203a7a0136->DATARMNETe9aad463ce=ntohl(
|
|
|
ip6_flowlabel(DATARMNETbf55123e5b));}else{return-EINVAL;}if(DATARMNET203a7a0136
|
|
|
-->DATARMNET06d2413ad2==IPPROTO_TCP||DATARMNET203a7a0136->DATARMNET06d2413ad2==
|
|
|
-IPPROTO_UDP){struct DATARMNET6d4c22c781*DATARMNET975b252236,DATARMNET7121c974d6;
|
|
|
-DATARMNET975b252236=__skb_header_pointer(DATARMNET543491eb0f,DATARMNETb65c469a15
|
|
|
-,sizeof(*DATARMNET975b252236),DATARMNET543491eb0f->data,skb_headlen(
|
|
|
-DATARMNET543491eb0f),&DATARMNET7121c974d6);if(unlikely(!DATARMNET975b252236))
|
|
|
-return-EINVAL;DATARMNET203a7a0136->sport=ntohs(DATARMNET975b252236->sport);
|
|
|
-DATARMNET203a7a0136->dport=ntohs(DATARMNET975b252236->dport);}return
|
|
|
-(0xd2d+202-0xdf7);}static bool DATARMNETdf0ec0363b(struct DATARMNETd51e57e3f4*
|
|
|
-DATARMNET8f197b20f6,struct DATARMNETf21ed5deb4*DATARMNET203a7a0136){if(
|
|
|
-DATARMNET8f197b20f6->DATARMNET06d2413ad2){if(DATARMNET8f197b20f6->
|
|
|
-DATARMNET06d2413ad2==(0xc07+4362-0x1c14)){if(DATARMNET203a7a0136->
|
|
|
-DATARMNET06d2413ad2!=IPPROTO_TCP&&DATARMNET203a7a0136->DATARMNET06d2413ad2!=
|
|
|
-IPPROTO_UDP)return false;}else if(DATARMNET8f197b20f6->DATARMNET06d2413ad2!=
|
|
|
-DATARMNET203a7a0136->DATARMNET06d2413ad2){return false;}}if(DATARMNET203a7a0136
|
|
|
-->DATARMNET06d2413ad2==IPPROTO_TCP||DATARMNET203a7a0136->DATARMNET06d2413ad2==
|
|
|
-IPPROTO_UDP){if((DATARMNET8f197b20f6->dport&&DATARMNET8f197b20f6->dport!=
|
|
|
-DATARMNET203a7a0136->dport)||(DATARMNET8f197b20f6->sport&&DATARMNET8f197b20f6->
|
|
|
-sport!=DATARMNET203a7a0136->sport))return false;}if(DATARMNET8f197b20f6->
|
|
|
+->DATARMNETe419bc836d&&!DATARMNET203a7a0136->DATARMNETd43be7664c)return
|
|
|
+(0xd2d+202-0xdf7);if(DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_TCP||
|
|
|
+DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_UDP){struct
|
|
|
+DATARMNET6d4c22c781*DATARMNET975b252236,DATARMNET7121c974d6;DATARMNET975b252236=
|
|
|
+__skb_header_pointer(DATARMNET543491eb0f,DATARMNETb65c469a15,sizeof(*
|
|
|
+DATARMNET975b252236),DATARMNET543491eb0f->data,skb_headlen(DATARMNET543491eb0f),
|
|
|
+&DATARMNET7121c974d6);if(unlikely(!DATARMNET975b252236))return-EINVAL;
|
|
|
+DATARMNET203a7a0136->sport=ntohs(DATARMNET975b252236->sport);DATARMNET203a7a0136
|
|
|
+->dport=ntohs(DATARMNET975b252236->dport);}return(0xd2d+202-0xdf7);}static int
|
|
|
+DATARMNET9e7ac83deb(struct rmnet_frag_descriptor*DATARMNET9d1b321642,struct
|
|
|
+DATARMNETf21ed5deb4*DATARMNET203a7a0136){struct DATARMNET6d4c22c781{__be16 sport
|
|
|
+;__be16 dport;};int DATARMNETb65c469a15;u8*data;data=rmnet_frag_data_ptr(
|
|
|
+DATARMNET9d1b321642);if(unlikely(!data))return-EINVAL;if((data[(0xd2d+202-0xdf7)
|
|
|
+]&(0xbf7+4405-0x1c3c))==(0xef7+1142-0x132d)){struct iphdr*DATARMNET86f1f2cdc9,
|
|
|
+DATARMNET8dc568fa4c;DATARMNET86f1f2cdc9=rmnet_frag_header_ptr(
|
|
|
+DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&
|
|
|
+DATARMNET8dc568fa4c);if(unlikely(!DATARMNET86f1f2cdc9||DATARMNET86f1f2cdc9->ihl<
|
|
|
+(0xd0a+237-0xdf2)))return-EINVAL;if(unlikely(ip_is_fragment(DATARMNET86f1f2cdc9)
|
|
|
+)){DATARMNET203a7a0136->DATARMNETe419bc836d=(0xd26+209-0xdf6);
|
|
|
+DATARMNET203a7a0136->DATARMNETd43be7664c=!(DATARMNET86f1f2cdc9->frag_off&htons(
|
|
|
+IP_OFFSET));}DATARMNETb65c469a15=DATARMNET86f1f2cdc9->ihl<<(0xd1f+216-0xdf5);
|
|
|
+DATARMNET203a7a0136->DATARMNET9d758b8e5b=(0xd11+230-0xdf3);DATARMNET203a7a0136->
|
|
|
+DATARMNET06d2413ad2=DATARMNET86f1f2cdc9->protocol;DATARMNET203a7a0136->saddr[
|
|
|
+(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->saddr;DATARMNET203a7a0136->daddr[
|
|
|
+(0xd2d+202-0xdf7)]=DATARMNET86f1f2cdc9->daddr;DATARMNET203a7a0136->tos=
|
|
|
+DATARMNET86f1f2cdc9->tos;}else if((data[(0xd2d+202-0xdf7)]&(0xbf7+4405-0x1c3c))
|
|
|
+==(0xeb7+726-0x112d)){struct ipv6hdr*DATARMNETbf55123e5b,DATARMNET9df40d3f99;
|
|
|
+__be16 frag_off;u8 nexthdr;DATARMNETbf55123e5b=rmnet_frag_header_ptr(
|
|
|
+DATARMNET9d1b321642,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),&
|
|
|
+DATARMNET9df40d3f99);if(unlikely(!DATARMNETbf55123e5b))return-EINVAL;nexthdr=
|
|
|
+DATARMNETbf55123e5b->nexthdr;DATARMNETb65c469a15=rmnet_frag_ipv6_skip_exthdr(
|
|
|
+DATARMNET9d1b321642,sizeof(*DATARMNETbf55123e5b),&nexthdr,&frag_off);if(unlikely
|
|
|
+(DATARMNETb65c469a15<(0xd2d+202-0xdf7)))return-EFAULT;if(unlikely(frag_off)){
|
|
|
+DATARMNET203a7a0136->DATARMNETe419bc836d=(0xd26+209-0xdf6);DATARMNET203a7a0136->
|
|
|
+DATARMNETd43be7664c=!(frag_off&htons(IP6_OFFSET));}DATARMNET203a7a0136->
|
|
|
+DATARMNET9d758b8e5b=(0xd03+244-0xdf1);DATARMNET203a7a0136->DATARMNET06d2413ad2=
|
|
|
+nexthdr;memcpy(DATARMNET203a7a0136->saddr,DATARMNETbf55123e5b->saddr.in6_u.
|
|
|
+u6_addr8,(0xeb7+1158-0x132d));memcpy(DATARMNET203a7a0136->daddr,
|
|
|
+DATARMNETbf55123e5b->daddr.in6_u.u6_addr8,(0xeb7+1158-0x132d));
|
|
|
+DATARMNET203a7a0136->tos=ip6_tclass(ip6_flowinfo(DATARMNETbf55123e5b));
|
|
|
+DATARMNET203a7a0136->DATARMNETe9aad463ce=ntohl(ip6_flowlabel(DATARMNETbf55123e5b
|
|
|
+));}else{return-EINVAL;}if(DATARMNET203a7a0136->DATARMNETe419bc836d&&!
|
|
|
+DATARMNET203a7a0136->DATARMNETd43be7664c)return(0xd2d+202-0xdf7);if(
|
|
|
+DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_TCP||DATARMNET203a7a0136->
|
|
|
+DATARMNET06d2413ad2==IPPROTO_UDP){struct DATARMNET6d4c22c781*DATARMNET975b252236
|
|
|
+,DATARMNET7121c974d6;DATARMNET975b252236=rmnet_frag_header_ptr(
|
|
|
+DATARMNET9d1b321642,DATARMNETb65c469a15,sizeof(*DATARMNET975b252236),&
|
|
|
+DATARMNET7121c974d6);if(unlikely(!DATARMNET975b252236))return-EINVAL;
|
|
|
+DATARMNET203a7a0136->sport=ntohs(DATARMNET975b252236->sport);DATARMNET203a7a0136
|
|
|
+->dport=ntohs(DATARMNET975b252236->dport);}return(0xd2d+202-0xdf7);}static bool
|
|
|
+DATARMNETdf0ec0363b(struct DATARMNETd51e57e3f4*DATARMNET8f197b20f6,struct
|
|
|
+DATARMNETf21ed5deb4*DATARMNET203a7a0136){if(DATARMNET8f197b20f6->
|
|
|
+DATARMNET06d2413ad2){if(DATARMNET8f197b20f6->DATARMNET06d2413ad2==
|
|
|
+(0xc07+4362-0x1c14)){if(DATARMNET203a7a0136->DATARMNET06d2413ad2!=IPPROTO_TCP&&
|
|
|
+DATARMNET203a7a0136->DATARMNET06d2413ad2!=IPPROTO_UDP)return false;}else if(
|
|
|
+DATARMNET8f197b20f6->DATARMNET06d2413ad2!=DATARMNET203a7a0136->
|
|
|
+DATARMNET06d2413ad2){return false;}}if(DATARMNET203a7a0136->DATARMNET06d2413ad2
|
|
|
+==IPPROTO_TCP||DATARMNET203a7a0136->DATARMNET06d2413ad2==IPPROTO_UDP){if((
|
|
|
+DATARMNET8f197b20f6->dport&&DATARMNET8f197b20f6->dport!=DATARMNET203a7a0136->
|
|
|
+dport)||(DATARMNET8f197b20f6->sport&&DATARMNET8f197b20f6->sport!=
|
|
|
+DATARMNET203a7a0136->sport))return false;}if(DATARMNET8f197b20f6->
|
|
|
DATARMNET61b4abcc9b==AF_INET){if(((DATARMNET8f197b20f6->DATARMNET0711bbda6c&
|
|
|
-DATARMNET3cff03c531)&&DATARMNET8f197b20f6->daddr[(0xd2d+202-0xdf7)]!=*
|
|
|
-DATARMNET203a7a0136->daddr)||((DATARMNET8f197b20f6->DATARMNET0711bbda6c&
|
|
|
-DATARMNET53f589a196)&&DATARMNET8f197b20f6->saddr[(0xd2d+202-0xdf7)]!=*
|
|
|
-DATARMNET203a7a0136->saddr))return false;if(DATARMNET8f197b20f6->tos&&
|
|
|
-DATARMNET8f197b20f6->tos!=(DATARMNET203a7a0136->tos&DATARMNET8f197b20f6->
|
|
|
-DATARMNETa400ad4f72))return false;}else if(DATARMNET8f197b20f6->
|
|
|
-DATARMNET61b4abcc9b==AF_INET6){if(((DATARMNET8f197b20f6->DATARMNET0711bbda6c&
|
|
|
-DATARMNET3cff03c531)&&memcmp(DATARMNET8f197b20f6->daddr,DATARMNET203a7a0136->
|
|
|
-daddr,(0xeb7+1158-0x132d)))||((DATARMNET8f197b20f6->DATARMNET0711bbda6c&
|
|
|
-DATARMNET53f589a196)&&memcmp(DATARMNET8f197b20f6->saddr,DATARMNET203a7a0136->
|
|
|
-saddr,(0xeb7+1158-0x132d))))return false;if(DATARMNET8f197b20f6->tos&&
|
|
|
-DATARMNET8f197b20f6->tos!=(DATARMNET203a7a0136->tos&DATARMNET8f197b20f6->
|
|
|
-DATARMNETa400ad4f72))return false;if(DATARMNET8f197b20f6->DATARMNETe9aad463ce&&
|
|
|
-DATARMNET8f197b20f6->DATARMNETe9aad463ce!=DATARMNET203a7a0136->
|
|
|
-DATARMNETe9aad463ce)return false;}else{return false;}return true;}static struct
|
|
|
-DATARMNET6fd48c33f6*DATARMNETfb13c018fc(struct list_head*DATARMNET817a8d238c,
|
|
|
-struct sk_buff*DATARMNET543491eb0f){struct DATARMNETf21ed5deb4
|
|
|
-DATARMNET203a7a0136={(0xd2d+202-0xdf7),};struct DATARMNET6fd48c33f6*
|
|
|
-DATARMNETaa568481cf;struct DATARMNETb356c61ad6*DATARMNET8f197b20f6;bool
|
|
|
-DATARMNETc9657a740d=false;list_for_each_entry_rcu(DATARMNETaa568481cf,
|
|
|
-DATARMNET817a8d238c,DATARMNET14c01d3877){DATARMNET8f197b20f6=rcu_dereference(
|
|
|
-DATARMNETaa568481cf->DATARMNET8f197b20f6);if(unlikely(!DATARMNET8f197b20f6))
|
|
|
-continue;if((DATARMNET8f197b20f6->DATARMNET54338da2ff.DATARMNET61b4abcc9b==
|
|
|
-AF_INET&&DATARMNET543491eb0f->protocol!=htons(ETH_P_IP))||(DATARMNET8f197b20f6->
|
|
|
-DATARMNET54338da2ff.DATARMNET61b4abcc9b==AF_INET6&&DATARMNET543491eb0f->protocol
|
|
|
-!=htons(ETH_P_IPV6)))continue;if(!DATARMNETc9657a740d){if(DATARMNET481989429b(
|
|
|
-DATARMNET543491eb0f,&DATARMNET203a7a0136))break;DATARMNETc9657a740d=true;}if(
|
|
|
-DATARMNETdf0ec0363b(&DATARMNET8f197b20f6->DATARMNET54338da2ff,&
|
|
|
-DATARMNET203a7a0136))return DATARMNETaa568481cf;}return NULL;}static struct
|
|
|
-DATARMNET6fd48c33f6*DATARMNET3ed11fdc8d(struct list_head*DATARMNET817a8d238c,u32
|
|
|
- DATARMNETbb588401ec){struct DATARMNET6fd48c33f6*DATARMNETaa568481cf;
|
|
|
-list_for_each_entry_rcu(DATARMNETaa568481cf,DATARMNET817a8d238c,
|
|
|
-DATARMNET14c01d3877){if(DATARMNETaa568481cf->DATARMNET54338da2ff.
|
|
|
-DATARMNETbb588401ec==DATARMNETbb588401ec)return DATARMNETaa568481cf;}return NULL
|
|
|
-;}static void DATARMNET1e616c2160(struct list_head*DATARMNET817a8d238c,struct
|
|
|
-DATARMNET6fd48c33f6*DATARMNETaa568481cf){list_add_rcu(&DATARMNETaa568481cf->
|
|
|
-DATARMNET14c01d3877,DATARMNET817a8d238c);list_add(&DATARMNETaa568481cf->
|
|
|
-DATARMNETed4d7b4a3c,&DATARMNET7520901fb5);DATARMNETfef55eaf9a++;if(
|
|
|
-DATARMNETaa568481cf->expires){if(!timer_pending(&DATARMNETd21629e047)||
|
|
|
-time_before(DATARMNETaa568481cf->expires,DATARMNETd21629e047.expires))mod_timer(
|
|
|
-&DATARMNETd21629e047,DATARMNETaa568481cf->expires);}DATARMNET112d724eff(
|
|
|
-"aps: flow 0x%x added (%u)\n",DATARMNETaa568481cf->DATARMNET54338da2ff.
|
|
|
-DATARMNETbb588401ec,DATARMNETfef55eaf9a);}static void DATARMNET7fa3dd63cb(struct
|
|
|
- DATARMNET6fd48c33f6*DATARMNETaa568481cf){struct DATARMNETb356c61ad6*
|
|
|
-DATARMNET8f197b20f6;list_del_rcu(&DATARMNETaa568481cf->DATARMNET14c01d3877);
|
|
|
-list_del(&DATARMNETaa568481cf->DATARMNETed4d7b4a3c);if(likely(
|
|
|
-DATARMNETfef55eaf9a))DATARMNETfef55eaf9a--;if(!DATARMNETfef55eaf9a)del_timer(&
|
|
|
-DATARMNETd21629e047);DATARMNET112d724eff(
|
|
|
+DATARMNET3cff03c531)&&DATARMNET8f197b20f6->daddr[(0xd2d+202-0xdf7)]!=
|
|
|
+DATARMNET203a7a0136->daddr[(0xd2d+202-0xdf7)])||((DATARMNET8f197b20f6->
|
|
|
+DATARMNET0711bbda6c&DATARMNET53f589a196)&&DATARMNET8f197b20f6->saddr[
|
|
|
+(0xd2d+202-0xdf7)]!=DATARMNET203a7a0136->saddr[(0xd2d+202-0xdf7)]))return false;
|
|
|
+if(DATARMNET8f197b20f6->tos&&DATARMNET8f197b20f6->tos!=(DATARMNET203a7a0136->tos
|
|
|
+&DATARMNET8f197b20f6->DATARMNETa400ad4f72))return false;}else if(
|
|
|
+DATARMNET8f197b20f6->DATARMNET61b4abcc9b==AF_INET6){if(((DATARMNET8f197b20f6->
|
|
|
+DATARMNET0711bbda6c&DATARMNET3cff03c531)&&memcmp(DATARMNET8f197b20f6->daddr,
|
|
|
+DATARMNET203a7a0136->daddr,(0xeb7+1158-0x132d)))||((DATARMNET8f197b20f6->
|
|
|
+DATARMNET0711bbda6c&DATARMNET53f589a196)&&memcmp(DATARMNET8f197b20f6->saddr,
|
|
|
+DATARMNET203a7a0136->saddr,(0xeb7+1158-0x132d))))return false;if(
|
|
|
+DATARMNET8f197b20f6->tos&&DATARMNET8f197b20f6->tos!=(DATARMNET203a7a0136->tos&
|
|
|
+DATARMNET8f197b20f6->DATARMNETa400ad4f72))return false;if(DATARMNET8f197b20f6->
|
|
|
+DATARMNETe9aad463ce&&DATARMNET8f197b20f6->DATARMNETe9aad463ce!=
|
|
|
+DATARMNET203a7a0136->DATARMNETe9aad463ce)return false;}else{return false;}return
|
|
|
+ true;}static struct DATARMNET6fd48c33f6*DATARMNETfb13c018fc(struct list_head*
|
|
|
+DATARMNET817a8d238c,struct sk_buff*DATARMNET543491eb0f){struct
|
|
|
+DATARMNETf21ed5deb4 DATARMNET203a7a0136={(0xd2d+202-0xdf7),};struct
|
|
|
+DATARMNET6fd48c33f6*DATARMNETaa568481cf;struct DATARMNETb356c61ad6*
|
|
|
+DATARMNET8f197b20f6;bool DATARMNETc9657a740d=false;list_for_each_entry_rcu(
|
|
|
+DATARMNETaa568481cf,DATARMNET817a8d238c,DATARMNET14c01d3877){DATARMNET8f197b20f6
|
|
|
+=rcu_dereference(DATARMNETaa568481cf->DATARMNET8f197b20f6);if(unlikely(!
|
|
|
+DATARMNET8f197b20f6))continue;if((DATARMNET8f197b20f6->DATARMNET54338da2ff.
|
|
|
+DATARMNET61b4abcc9b==AF_INET&&DATARMNET543491eb0f->protocol!=htons(ETH_P_IP))||(
|
|
|
+DATARMNET8f197b20f6->DATARMNET54338da2ff.DATARMNET61b4abcc9b==AF_INET6&&
|
|
|
+DATARMNET543491eb0f->protocol!=htons(ETH_P_IPV6)))continue;if(!
|
|
|
+DATARMNETc9657a740d){if(DATARMNET481989429b(DATARMNET543491eb0f,&
|
|
|
+DATARMNET203a7a0136)||DATARMNET203a7a0136.DATARMNETe419bc836d)break;
|
|
|
+DATARMNETc9657a740d=true;}if(DATARMNETdf0ec0363b(&DATARMNET8f197b20f6->
|
|
|
+DATARMNET54338da2ff,&DATARMNET203a7a0136))return DATARMNETaa568481cf;}return
|
|
|
+NULL;}static struct DATARMNET6fd48c33f6*DATARMNET3ed11fdc8d(struct list_head*
|
|
|
+DATARMNET817a8d238c,u32 DATARMNETbb588401ec){struct DATARMNET6fd48c33f6*
|
|
|
+DATARMNETaa568481cf;list_for_each_entry_rcu(DATARMNETaa568481cf,
|
|
|
+DATARMNET817a8d238c,DATARMNET14c01d3877){if(DATARMNETaa568481cf->
|
|
|
+DATARMNET54338da2ff.DATARMNETbb588401ec==DATARMNETbb588401ec)return
|
|
|
+DATARMNETaa568481cf;}return NULL;}static void DATARMNET1e616c2160(struct
|
|
|
+list_head*DATARMNET817a8d238c,struct DATARMNET6fd48c33f6*DATARMNETaa568481cf){
|
|
|
+list_add_rcu(&DATARMNETaa568481cf->DATARMNET14c01d3877,DATARMNET817a8d238c);
|
|
|
+list_add(&DATARMNETaa568481cf->DATARMNETed4d7b4a3c,&DATARMNET7520901fb5);
|
|
|
+DATARMNETfef55eaf9a++;if(DATARMNETaa568481cf->expires){if(!timer_pending(&
|
|
|
+DATARMNETd21629e047)||time_before(DATARMNETaa568481cf->expires,
|
|
|
+DATARMNETd21629e047.expires))mod_timer(&DATARMNETd21629e047,DATARMNETaa568481cf
|
|
|
+->expires);}DATARMNET112d724eff("aps: flow 0x%x added (%u)\n",
|
|
|
+DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec,DATARMNETfef55eaf9a
|
|
|
+);}static void DATARMNET7fa3dd63cb(struct DATARMNET6fd48c33f6*
|
|
|
+DATARMNETaa568481cf){struct DATARMNETb356c61ad6*DATARMNET8f197b20f6;list_del_rcu
|
|
|
+(&DATARMNETaa568481cf->DATARMNET14c01d3877);list_del(&DATARMNETaa568481cf->
|
|
|
+DATARMNETed4d7b4a3c);if(likely(DATARMNETfef55eaf9a))DATARMNETfef55eaf9a--;if(!
|
|
|
+DATARMNETfef55eaf9a)del_timer(&DATARMNETd21629e047);DATARMNET112d724eff(
|
|
|
"\x61\x70\x73\x3a\x20\x66\x6c\x6f\x77\x20\x30\x78\x25\x78\x20\x72\x65\x6d\x6f\x76\x69\x6e\x67\x20\x28\x25\x75\x29" "\n"
|
|
|
,DATARMNETaa568481cf->DATARMNET54338da2ff.DATARMNETbb588401ec,
|
|
|
DATARMNETfef55eaf9a);DATARMNET8f197b20f6=rcu_dereference(DATARMNETaa568481cf->
|
|
@@ -492,11 +548,108 @@ 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 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(
|
|
|
+(0xd2d+202-0xdf7);}static struct proc_dir_entry*DATARMNET147f9b9f22;static
|
|
|
+struct proc_dir_entry*DATARMNETf9422af3b0;static DEFINE_SPINLOCK(
|
|
|
+DATARMNET86e81617f0);struct DATARMNET837f670f1d{ktime_t DATARMNET763f2e5fac;
|
|
|
+struct DATARMNETf21ed5deb4 DATARMNET5fe4c722a8;};
|
|
|
+#define DATARMNET137373fbd9 (0xd27+224-0xdfd)
|
|
|
+static int DATARMNET04583f0705;static struct DATARMNET837f670f1d
|
|
|
+DATARMNETeb47903253[DATARMNET137373fbd9];static unsigned int inactive_time;
|
|
|
+static ktime_t DATARMNET6736d5e29d;static ktime_t DATARMNETd4b2cd928c;static int
|
|
|
+ DATARMNETd7fae4b1c9(struct seq_file*DATARMNET80f4138358,void*
|
|
|
+DATARMNETc3d0f72ff1){struct DATARMNET837f670f1d*DATARMNET590c4d44f6;s64
|
|
|
+DATARMNET3c8f5f41f1,DATARMNET7d003c10d9;u8 DATARMNET5c33dbe77d,
|
|
|
+DATARMNETa845529338,DATARMNET35784a722f;int DATARMNETefc9df3df2;spin_lock_bh(&
|
|
|
+DATARMNET86e81617f0);if(!DATARMNETeb47903253[DATARMNET04583f0705].
|
|
|
+DATARMNET763f2e5fac)DATARMNETefc9df3df2=(0xd2d+202-0xdf7);else
|
|
|
+DATARMNETefc9df3df2=DATARMNET04583f0705;do{DATARMNET590c4d44f6=&
|
|
|
+DATARMNETeb47903253[DATARMNETefc9df3df2];if(!DATARMNET590c4d44f6->
|
|
|
+DATARMNET763f2e5fac)break;DATARMNET3c8f5f41f1=ktime_divns(DATARMNET590c4d44f6->
|
|
|
+DATARMNET763f2e5fac,NSEC_PER_SEC);DATARMNET7d003c10d9=DATARMNET3c8f5f41f1/86400;
|
|
|
+DATARMNET5c33dbe77d=DATARMNET3c8f5f41f1%86400/(0x17a8+2156-0x1204);
|
|
|
+DATARMNETa845529338=DATARMNET3c8f5f41f1%(0x17a8+2156-0x1204)/(0xf07+1090-0x130d)
|
|
|
+;DATARMNET35784a722f=DATARMNET3c8f5f41f1%(0xf07+1090-0x130d);if(
|
|
|
+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,
|
|
|
+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.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(&
|
|
|
+DATARMNET86e81617f0);DATARMNETd4b2cd928c=ktime_get_coarse_boottime();
|
|
|
+spin_unlock_bh(&DATARMNET86e81617f0);}static void DATARMNETfb7a2ce025(struct
|
|
|
+rmnet_frag_descriptor*DATARMNET9d1b321642,struct sk_buff*DATARMNET543491eb0f){
|
|
|
+struct DATARMNETf21ed5deb4 DATARMNET203a7a0136={(0xd2d+202-0xdf7),};struct
|
|
|
+DATARMNET837f670f1d*DATARMNET590c4d44f6;ktime_t DATARMNET5711967d6f;int
|
|
|
+DATARMNET61c2303133;if(!DATARMNET9d1b321642&&!DATARMNET543491eb0f)return;
|
|
|
+spin_lock_bh(&DATARMNET86e81617f0);if(!DATARMNET6736d5e29d)goto
|
|
|
+DATARMNETbf4095f79e;DATARMNET5711967d6f=ktime_get_coarse_boottime();if(ktime_sub
|
|
|
+(DATARMNET5711967d6f,DATARMNETd4b2cd928c)>DATARMNET6736d5e29d){if(
|
|
|
+DATARMNET9d1b321642)DATARMNET61c2303133=DATARMNET9e7ac83deb(DATARMNET9d1b321642,
|
|
|
+&DATARMNET203a7a0136);else if(DATARMNET543491eb0f)DATARMNET61c2303133=
|
|
|
+DATARMNET481989429b(DATARMNET543491eb0f,&DATARMNET203a7a0136);else
|
|
|
+DATARMNET61c2303133=-EINVAL;if(DATARMNET61c2303133||(DATARMNET203a7a0136.
|
|
|
+DATARMNETe419bc836d&&!DATARMNET203a7a0136.DATARMNETd43be7664c))goto
|
|
|
+DATARMNETbf4095f79e;DATARMNET590c4d44f6=&DATARMNETeb47903253[DATARMNET04583f0705
|
|
|
+];DATARMNET590c4d44f6->DATARMNET763f2e5fac=DATARMNET5711967d6f;
|
|
|
+DATARMNET590c4d44f6->DATARMNET5fe4c722a8=DATARMNET203a7a0136;if(++
|
|
|
+DATARMNET04583f0705>=DATARMNET137373fbd9)DATARMNET04583f0705=(0xd2d+202-0xdf7);}
|
|
|
+DATARMNETbf4095f79e:spin_unlock_bh(&DATARMNET86e81617f0);}static const struct
|
|
|
+rmnet_module_hook_register_info DATARMNETbdf157f06a[]={{.hooknum=
|
|
|
+RMNET_MODULE_HOOK_APS_DATA_INACTIVE,.func=DATARMNET71e03e7287,},{.hooknum=
|
|
|
+RMNET_MODULE_HOOK_APS_DATA_ACTIVE,.func=DATARMNETfb7a2ce025,},};static int
|
|
|
+DATARMNET8871996254(const char*DATARMNETcc6099cb14,const struct kernel_param*
|
|
|
+DATARMNETb3ce0fdc63){unsigned int DATARMNET3f85732c70;if(kstrtouint(
|
|
|
+DATARMNETcc6099cb14,(0xd27+224-0xdfd),&DATARMNET3f85732c70))return-EINVAL;
|
|
|
+spin_lock_bh(&DATARMNET86e81617f0);if(DATARMNET3f85732c70){DATARMNET6736d5e29d=
|
|
|
+ms_to_ktime(DATARMNET3f85732c70*(0xdc7+2653-0x143c));DATARMNETd4b2cd928c=
|
|
|
+ktime_get_coarse_boottime();rmnet_module_hook_register(DATARMNETbdf157f06a,
|
|
|
+ARRAY_SIZE(DATARMNETbdf157f06a));}else{DATARMNET6736d5e29d=(0xd2d+202-0xdf7);
|
|
|
+rmnet_module_hook_unregister_no_sync(DATARMNETbdf157f06a,ARRAY_SIZE(
|
|
|
+DATARMNETbdf157f06a));}spin_unlock_bh(&DATARMNET86e81617f0);return
|
|
|
+param_set_uint(DATARMNETcc6099cb14,DATARMNETb3ce0fdc63);}static const struct
|
|
|
+kernel_param_ops DATARMNETd34b496ea4={.set=DATARMNET8871996254,.get=
|
|
|
+param_get_uint,};module_param_cb(inactive_time,&DATARMNETd34b496ea4,&
|
|
|
+inactive_time,(0xdb7+6665-0x261c));MODULE_PARM_DESC(inactive_time,
|
|
|
+"\x49\x6e\x61\x63\x74\x69\x76\x65\x20\x74\x69\x6d\x65\x20\x69\x6e\x20\x73\x65\x63\x6f\x6e\x64\x73"
|
|
|
+);static void DATARMNET519162865c(void){DATARMNET147f9b9f22=proc_mkdir(
|
|
|
+"\x61\x70\x73",NULL);if(!DATARMNET147f9b9f22){pr_err(
|
|
|
+"\x61\x70\x73\x3a\x20\x66\x61\x69\x6c\x65\x64\x20\x74\x6f\x20\x63\x72\x65\x61\x74\x65\x20\x70\x72\x6f\x63\x20\x64\x69\x72" "\n"
|
|
|
+);return;}DATARMNETf9422af3b0=proc_create_single_data(
|
|
|
+"\x64\x6c\x5f\x61\x63\x74\x69\x76\x69\x74\x79",(0xcb7+5769-0x221c),
|
|
|
+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(
|
|
|
"\x61\x70\x73\x3a\x20\x69\x6e\x69\x74\x20\x28\x25\x73\x29" "\n",
|
|
|
DATARMNETe5ef0e617c);DATARMNETb14e52a504=DATARMNETcfa8d492f8();if(
|
|
|
DATARMNETb14e52a504){pr_err(
|
|
@@ -506,14 +659,16 @@ 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(&
|
|
|
DATARMNETd7b5a80f84);DATARMNET54b95e4416=true;mutex_unlock(&DATARMNETd7b5a80f84)
|
|
|
-;return(0xd2d+202-0xdf7);}static void __exit DATARMNETff67054ba9(void){
|
|
|
-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);
|
|
|
+;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);
|
|
|
+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);
|
|
|
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(
|