|
@@ -29,8 +29,8 @@
|
|
#define DATARMNET347bd5eb15 \
|
|
#define DATARMNET347bd5eb15 \
|
|
(const_ilog2(DATARMNET714c9c3081))
|
|
(const_ilog2(DATARMNET714c9c3081))
|
|
enum{DATARMNETe0e37fef7a,DATARMNETf354672897,DATARMNET9cc765a89e,
|
|
enum{DATARMNETe0e37fef7a,DATARMNETf354672897,DATARMNET9cc765a89e,
|
|
-DATARMNETb03f9571a3,DATARMNET7797205f58,DATARMNETaa18c75b61,};struct
|
|
|
|
-DATARMNET4b40fe9cd4{union{__be32 DATARMNETdfe430c2d6;struct in6_addr
|
|
|
|
|
|
+DATARMNETb03f9571a3,DATARMNET53c8cfb28e,DATARMNET74f0a28fec,DATARMNETaa18c75b61,
|
|
|
|
+};struct DATARMNET4b40fe9cd4{union{__be32 DATARMNETdfe430c2d6;struct in6_addr
|
|
DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr
|
|
DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr
|
|
DATARMNETc3f31215b7;};union{struct{__be16 DATARMNET08e913477e;__be16
|
|
DATARMNETc3f31215b7;};union{struct{__be16 DATARMNET08e913477e;__be16
|
|
DATARMNETda7f7fa492;};u32 DATARMNET556bcfcf8f;};u8 DATARMNET0d956cc77a;};struct
|
|
DATARMNETda7f7fa492;};u32 DATARMNET556bcfcf8f;};u8 DATARMNET0d956cc77a;};struct
|
|
@@ -130,42 +130,45 @@ DATARMNET63b1a086d5)DATARMNET11a5f0fd38(DATARMNET63b1a086d5,DATARMNET543491eb0f,
|
|
DATARMNETd147c14c0e);return DATARMNET63b1a086d5;}static void DATARMNET31a7673e56
|
|
DATARMNETd147c14c0e);return DATARMNET63b1a086d5;}static void DATARMNET31a7673e56
|
|
(struct DATARMNETddbc1e5435*DATARMNET63b1a086d5,struct sk_buff*
|
|
(struct DATARMNETddbc1e5435*DATARMNET63b1a086d5,struct sk_buff*
|
|
DATARMNET543491eb0f)__must_hold(RCU){struct sock*sk;if(DATARMNET543491eb0f->sk){
|
|
DATARMNET543491eb0f)__must_hold(RCU){struct sock*sk;if(DATARMNET543491eb0f->sk){
|
|
-sk=DATARMNET543491eb0f->sk;}else{struct rmnet_skb_cb*DATARMNET1ec4882bf7=
|
|
|
|
-RMNET_SKB_CB(DATARMNET543491eb0f);DATARMNET32b91c8ae6(DATARMNETb03f9571a3);
|
|
|
|
-DATARMNET63b1a086d5->DATARMNET55056146f6=true;DATARMNET1ec4882bf7->tethered=true
|
|
|
|
-;return;}}static u32 DATARMNET62fb576113(struct sk_buff*DATARMNET543491eb0f){
|
|
|
|
-struct tcphdr*DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);return
|
|
|
|
-DATARMNET543491eb0f->len-((u8*)DATARMNET668416551c-DATARMNET543491eb0f->data)-
|
|
|
|
-DATARMNET668416551c->doff*(0xd11+230-0xdf3);}static void DATARMNET55fda9e01e(
|
|
|
|
-struct DATARMNETddbc1e5435*DATARMNET63b1a086d5,struct sk_buff*
|
|
|
|
-DATARMNET543491eb0f,bool DATARMNETd147c14c0e)__must_hold(RCU){struct
|
|
|
|
-rmnet_skb_cb*DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);struct tcphdr
|
|
|
|
-*DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);u32 DATARMNETb1b0ee1b2d=ntohl(
|
|
|
|
-DATARMNET668416551c->ack_seq);u32 DATARMNETb6ff6d25f8=READ_ONCE(
|
|
|
|
-DATARMNET63b1a086d5->DATARMNETfef3675ce7);u32 DATARMNET91c1d5c029=READ_ONCE(
|
|
|
|
-DATARMNET63b1a086d5->DATARMNET9076d335ab);u32 DATARMNET9445bc443c=READ_ONCE(
|
|
|
|
-DATARMNET63b1a086d5->DATARMNET9a57846b4e);DATARMNET63b1a086d5->
|
|
|
|
-DATARMNET763f2e5fac=jiffies;if(DATARMNET63b1a086d5->DATARMNET55056146f6){
|
|
|
|
-DATARMNET1ec4882bf7->tethered=true;return;}if(DATARMNETd147c14c0e){if(after(
|
|
|
|
-DATARMNETb1b0ee1b2d,DATARMNET91c1d5c029)){u32 DATARMNET4e557c82d6=
|
|
|
|
-DATARMNETb6ff6d25f8-DATARMNETb1b0ee1b2d;if(DATARMNET4e557c82d6>
|
|
|
|
-DATARMNET9445bc443c)DATARMNET31a7673e56(DATARMNET63b1a086d5,DATARMNET543491eb0f)
|
|
|
|
-;WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab,DATARMNETb1b0ee1b2d);}}}
|
|
|
|
-void DATARMNET9250714999(struct sk_buff*DATARMNET543491eb0f){struct
|
|
|
|
-DATARMNET4b40fe9cd4 DATARMNET3396919a68={};struct DATARMNETddbc1e5435*
|
|
|
|
-DATARMNET63b1a086d5;struct tcphdr*DATARMNET668416551c;u32 DATARMNETd660a1a629;if
|
|
|
|
-(!skb_transport_header_was_set(DATARMNET543491eb0f)||DATARMNET543491eb0f->
|
|
|
|
-ip_summed==CHECKSUM_NONE)return;DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f)
|
|
|
|
-;if(DATARMNET668416551c->syn)return;DATARMNETd660a1a629=DATARMNET62fb576113(
|
|
|
|
-DATARMNET543491eb0f);if(!DATARMNETd660a1a629&&DATARMNET668416551c->ack)return;
|
|
|
|
-DATARMNET3396919a68.DATARMNET08e913477e=DATARMNET668416551c->source;
|
|
|
|
-DATARMNET3396919a68.DATARMNETda7f7fa492=DATARMNET668416551c->dest;if(
|
|
|
|
-DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9
|
|
|
|
-=ip_hdr(DATARMNET543491eb0f);DATARMNET3396919a68.DATARMNETdfe430c2d6=
|
|
|
|
-DATARMNET86f1f2cdc9->saddr;DATARMNET3396919a68.DATARMNET2cb607d686=
|
|
|
|
-DATARMNET86f1f2cdc9->daddr;DATARMNET3396919a68.DATARMNET0d956cc77a=
|
|
|
|
-(0xd11+230-0xdf3);}else{struct ipv6hdr*DATARMNETbf55123e5b=ipv6_hdr(
|
|
|
|
-DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68.DATARMNET815cbb4bf5,&
|
|
|
|
|
|
+sk=DATARMNET543491eb0f->sk;if(sk_fullsock(sk)){if(sk->sk_state==TCP_ESTABLISHED
|
|
|
|
+&&!sock_flag(sk,SOCK_DEAD)&&!sk_unhashed(sk)&&sk->sk_shutdown!=SHUTDOWN_MASK){
|
|
|
|
+inet_csk(sk)->icsk_ack.pending|=ICSK_ACK_NOW;DATARMNET63b1a086d5->
|
|
|
|
+DATARMNETb8fc35ed64++;DATARMNET32b91c8ae6(DATARMNET74f0a28fec);}}return;}else{
|
|
|
|
+struct rmnet_skb_cb*DATARMNET1ec4882bf7=RMNET_SKB_CB(DATARMNET543491eb0f);
|
|
|
|
+DATARMNET32b91c8ae6(DATARMNETb03f9571a3);DATARMNET63b1a086d5->
|
|
|
|
+DATARMNET55056146f6=true;DATARMNET1ec4882bf7->tethered=true;return;}}static u32
|
|
|
|
+DATARMNET62fb576113(struct sk_buff*DATARMNET543491eb0f){struct tcphdr*
|
|
|
|
+DATARMNET668416551c=tcp_hdr(DATARMNET543491eb0f);return DATARMNET543491eb0f->len
|
|
|
|
+-((u8*)DATARMNET668416551c-DATARMNET543491eb0f->data)-DATARMNET668416551c->doff*
|
|
|
|
+(0xd11+230-0xdf3);}static void DATARMNET55fda9e01e(struct DATARMNETddbc1e5435*
|
|
|
|
+DATARMNET63b1a086d5,struct sk_buff*DATARMNET543491eb0f,bool DATARMNETd147c14c0e)
|
|
|
|
+__must_hold(RCU){struct rmnet_skb_cb*DATARMNET1ec4882bf7=RMNET_SKB_CB(
|
|
|
|
+DATARMNET543491eb0f);struct tcphdr*DATARMNET668416551c=tcp_hdr(
|
|
|
|
+DATARMNET543491eb0f);u32 DATARMNETb1b0ee1b2d=ntohl(DATARMNET668416551c->ack_seq)
|
|
|
|
+;u32 DATARMNETb6ff6d25f8=READ_ONCE(DATARMNET63b1a086d5->DATARMNETfef3675ce7);u32
|
|
|
|
+ DATARMNET91c1d5c029=READ_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab);u32
|
|
|
|
+DATARMNET9445bc443c=READ_ONCE(DATARMNET63b1a086d5->DATARMNET9a57846b4e);
|
|
|
|
+DATARMNET63b1a086d5->DATARMNET763f2e5fac=jiffies;if(DATARMNET63b1a086d5->
|
|
|
|
+DATARMNET55056146f6){DATARMNET1ec4882bf7->tethered=true;return;}if(
|
|
|
|
+DATARMNETd147c14c0e){if(after(DATARMNETb1b0ee1b2d,DATARMNET91c1d5c029)){u32
|
|
|
|
+DATARMNET4e557c82d6=DATARMNETb6ff6d25f8-DATARMNETb1b0ee1b2d;if(
|
|
|
|
+DATARMNET4e557c82d6>DATARMNET9445bc443c)DATARMNET31a7673e56(DATARMNET63b1a086d5,
|
|
|
|
+DATARMNET543491eb0f);WRITE_ONCE(DATARMNET63b1a086d5->DATARMNET9076d335ab,
|
|
|
|
+DATARMNETb1b0ee1b2d);}}}void DATARMNET9250714999(struct sk_buff*
|
|
|
|
+DATARMNET543491eb0f){struct DATARMNET4b40fe9cd4 DATARMNET3396919a68={};struct
|
|
|
|
+DATARMNETddbc1e5435*DATARMNET63b1a086d5;struct tcphdr*DATARMNET668416551c;u32
|
|
|
|
+DATARMNETd660a1a629;if(!skb_transport_header_was_set(DATARMNET543491eb0f)||
|
|
|
|
+DATARMNET543491eb0f->ip_summed==CHECKSUM_NONE)return;DATARMNET668416551c=tcp_hdr
|
|
|
|
+(DATARMNET543491eb0f);if(DATARMNET668416551c->syn)return;DATARMNETd660a1a629=
|
|
|
|
+DATARMNET62fb576113(DATARMNET543491eb0f);if(!DATARMNETd660a1a629&&
|
|
|
|
+DATARMNET668416551c->ack)return;DATARMNET3396919a68.DATARMNET08e913477e=
|
|
|
|
+DATARMNET668416551c->source;DATARMNET3396919a68.DATARMNETda7f7fa492=
|
|
|
|
+DATARMNET668416551c->dest;if(DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){
|
|
|
|
+struct iphdr*DATARMNET86f1f2cdc9=ip_hdr(DATARMNET543491eb0f);DATARMNET3396919a68
|
|
|
|
+.DATARMNETdfe430c2d6=DATARMNET86f1f2cdc9->saddr;DATARMNET3396919a68.
|
|
|
|
+DATARMNET2cb607d686=DATARMNET86f1f2cdc9->daddr;DATARMNET3396919a68.
|
|
|
|
+DATARMNET0d956cc77a=(0xd11+230-0xdf3);}else{struct ipv6hdr*DATARMNETbf55123e5b=
|
|
|
|
+ipv6_hdr(DATARMNET543491eb0f);memcpy(&DATARMNET3396919a68.DATARMNET815cbb4bf5,&
|
|
DATARMNETbf55123e5b->saddr,sizeof(DATARMNETbf55123e5b->saddr));memcpy(&
|
|
DATARMNETbf55123e5b->saddr,sizeof(DATARMNETbf55123e5b->saddr));memcpy(&
|
|
DATARMNET3396919a68.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->daddr,sizeof(
|
|
DATARMNET3396919a68.DATARMNETc3f31215b7,&DATARMNETbf55123e5b->daddr,sizeof(
|
|
DATARMNETbf55123e5b->daddr));DATARMNET3396919a68.DATARMNET0d956cc77a=
|
|
DATARMNETbf55123e5b->daddr));DATARMNET3396919a68.DATARMNET0d956cc77a=
|