rmnet_shs_common.c 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  1. /* Copyright (c) 2020-2021 The Linux Foundation. All rights reserved.
  2. * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * This program is free software; you can redistribute it and/or modify
  5. * it under the terms of the GNU General Public License version 2 and
  6. * only version 2 as published by the Free Software Foundation.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. */
  14. #include "rmnet_shs.h"
  15. #include "rmnet_shs_wq.h"
  16. #include "rmnet_shs_modules.h"
  17. #include <net/ip.h>
  18. #include <linux/cpu.h>
  19. #include <linux/bitmap.h>
  20. #include <linux/netdevice.h>
  21. #include <linux/kernel.h>
  22. #include <linux/smp.h>
  23. #include <linux/ipv6.h>
  24. #include <linux/netdevice.h>
  25. #define DATARMNET48a89fcc16 (0xd26+209-0xdf6)
  26. #define DATARMNETbfe901fc62 (0xd2d+202-0xdf7)
  27. void DATARMNET4095253347(struct DATARMNET9b44b71ee9*ep){trace_rmnet_shs_wq_low(
  28. DATARMNET5e796836fb,DATARMNET7fc202c4c1,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
  29. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep,NULL);list_add(&ep->DATARMNET0763436b8d
  30. ,&DATARMNET30a3e83974);}void DATARMNETf7d317ed55(struct DATARMNET9b44b71ee9*ep){
  31. trace_rmnet_shs_wq_low(DATARMNET5e796836fb,DATARMNET7643ab0f49,
  32. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),ep,
  33. NULL);list_del_init(&ep->DATARMNET0763436b8d);}void DATARMNET36e5e526fa(struct
  34. DATARMNET6c78e47d24*DATARMNETd2a694d52a){trace_rmnet_shs_wq_low(
  35. DATARMNET238d08f0df,DATARMNET3f2d29c867,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
  36. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,NULL);spin_lock_bh(&
  37. DATARMNETfbdbab2ef6);list_add_rcu(&DATARMNETd2a694d52a->DATARMNET6de26f0feb,&
  38. DATARMNET9825511866);spin_unlock_bh(&DATARMNETfbdbab2ef6);}void
  39. DATARMNET2fe780019f(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){
  40. trace_rmnet_shs_wq_low(DATARMNET238d08f0df,DATARMNET5a3ea29c57,
  41. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
  42. DATARMNETd2a694d52a,NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_del_rcu(&
  43. DATARMNETd2a694d52a->DATARMNET6de26f0feb);spin_unlock_bh(&DATARMNETfbdbab2ef6);}
  44. void DATARMNETb4a6870b3b(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a){
  45. trace_rmnet_shs_wq_low(DATARMNET92b282b12c,DATARMNETdb9197631d,
  46. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
  47. DATARMNETd2a694d52a,NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_del_init(&
  48. DATARMNETd2a694d52a->DATARMNET742867e97a);spin_unlock_bh(&DATARMNETfbdbab2ef6);}
  49. void DATARMNETd8a6375e9c(struct DATARMNET6c78e47d24*DATARMNETd2a694d52a,struct
  50. list_head*head){trace_rmnet_shs_wq_low(DATARMNET92b282b12c,DATARMNET4b58d51c6a,
  51. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
  52. DATARMNETd2a694d52a,NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_add(&
  53. DATARMNETd2a694d52a->DATARMNET742867e97a,head);spin_unlock_bh(&
  54. DATARMNETfbdbab2ef6);}void DATARMNET9914e9761e(struct DATARMNET6c78e47d24*
  55. DATARMNETd2a694d52a,struct list_head*head){trace_rmnet_shs_wq_low(
  56. DATARMNET92b282b12c,DATARMNETfd4d416388,DATARMNETd2a694d52a->DATARMNET7c894c2f8f
  57. ,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),DATARMNETd2a694d52a,
  58. NULL);spin_lock_bh(&DATARMNETfbdbab2ef6);list_move(&DATARMNETd2a694d52a->
  59. DATARMNET742867e97a,head);spin_unlock_bh(&DATARMNETfbdbab2ef6);}void
  60. DATARMNET6bf538fa23(void){spin_lock_bh(&DATARMNETec2a4f5211);}void
  61. DATARMNETaea4c85748(void){spin_unlock_bh(&DATARMNETec2a4f5211);}void
  62. DATARMNETe46c480d71(void){u8 mask=DATARMNET752465942a;u8 DATARMNET998de79791=
  63. (0xd2d+202-0xdf7);struct DATARMNET9b44b71ee9*ep;list_for_each_entry(ep,&
  64. DATARMNET30a3e83974,DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if
  65. (ep->DATARMNET9fb369ce5f){mask&=ep->DATARMNET9fb369ce5f;DATARMNET998de79791=
  66. (0xd26+209-0xdf6);}}if(!DATARMNET998de79791){DATARMNETecc0627c70.map_mask=
  67. (0xd2d+202-0xdf7);DATARMNETecc0627c70.map_len=(0xd2d+202-0xdf7);return;}else if(
  68. DATARMNETecc0627c70.map_mask!=mask){DATARMNETecc0627c70.map_mask=mask;
  69. DATARMNETecc0627c70.map_len=DATARMNET310c3eb16e(mask);pr_info(
  70. "\x72\x6d\x6e\x65\x74\x5f\x73\x68\x73\x3a\x20\x20\x6d\x61\x73\x6b\x3a\x20\x30\x78\x25\x78\x20\x6d\x61\x70\x6c\x65\x6e\x3a\x20\x25\x64"
  71. ,DATARMNETecc0627c70.map_mask,DATARMNETecc0627c70.map_len);}}void
  72. DATARMNETde8ee16f92(struct DATARMNET63d7680df2*DATARMNET63b1a086d5){
  73. DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNETe9a79499ac,(0x16e8+787-0xc0c),
  74. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);
  75. list_del_init(&DATARMNET63b1a086d5->DATARMNET04c88b8191);DATARMNET349c3a0cab(
  76. DATARMNET63b1a086d5->map_cpu,DATARMNETbfe901fc62);}void DATARMNET3e37ad2816(
  77. struct DATARMNET63d7680df2*DATARMNET63b1a086d5,struct list_head*
  78. DATARMNET4d030eb9b5){DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNET16a68afc17
  79. ,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),
  80. NULL,NULL);list_add(&DATARMNET63b1a086d5->DATARMNET04c88b8191,
  81. DATARMNET4d030eb9b5);DATARMNET349c3a0cab(DATARMNET63b1a086d5->map_cpu,
  82. DATARMNET48a89fcc16);}void DATARMNETe102b3a798(struct DATARMNET63d7680df2*
  83. DATARMNET63b1a086d5,struct list_head*DATARMNET4d030eb9b5,int DATARMNETa7a5705ab0
  84. ){DATARMNETda96251102(DATARMNETd5eb6398da,DATARMNET916f444e0a,(0x16e8+787-0xc0c)
  85. ,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);list_move(&
  86. DATARMNET63b1a086d5->DATARMNET04c88b8191,DATARMNET4d030eb9b5);
  87. DATARMNET349c3a0cab(DATARMNET63b1a086d5->map_cpu,DATARMNET48a89fcc16);
  88. DATARMNET349c3a0cab((u16)DATARMNETa7a5705ab0,DATARMNETbfe901fc62);}void
  89. DATARMNET4bde88919f(u8 cpu,int count){if(cpu<DATARMNETc6782fed88){
  90. DATARMNET443cf5aaaf[cpu]+=count;}}u64 DATARMNETfc888b4d3e(u16 cpu){if(cpu>=
  91. DATARMNETc6782fed88){DATARMNET68d84e7b98[DATARMNET54b67b8a75]++;return
  92. (0xd2d+202-0xdf7);}return DATARMNET713717107f[cpu];}inline int
  93. DATARMNET362b15f941(u16 cpu){return!(((0xd26+209-0xdf6)<<cpu)&
  94. DATARMNETbc3c416b77);}u32 DATARMNETadb0248bd4(u8 DATARMNET42a992465f){u32 ret=
  95. (0xd2d+202-0xdf7);if(DATARMNET42a992465f<DATARMNETc6782fed88)ret=
  96. DATARMNET0997c5650d[DATARMNET42a992465f].DATARMNETae196235f2;DATARMNETda96251102
  97. (DATARMNET75d955c408,DATARMNET9f467b9ce4,DATARMNET42a992465f,ret,
  98. (0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return ret;}u32
  99. DATARMNETeb3978575d(u8 DATARMNET42a992465f){u32 ret=(0xd2d+202-0xdf7);if(
  100. DATARMNET42a992465f<DATARMNETc6782fed88)ret=DATARMNET0997c5650d[
  101. DATARMNET42a992465f].qtail;DATARMNETda96251102(DATARMNET75d955c408,
  102. DATARMNETc154fd2d48,DATARMNET42a992465f,ret,(0x16e8+787-0xc0c),
  103. (0x16e8+787-0xc0c),NULL,NULL);return ret;}u32 DATARMNETeea3cef5b6(u8
  104. DATARMNET42a992465f){u32 ret=(0xd2d+202-0xdf7);if(DATARMNET42a992465f<
  105. DATARMNETc6782fed88)ret=DATARMNET0997c5650d[DATARMNET42a992465f].
  106. DATARMNET96571b28de;DATARMNETda96251102(DATARMNET75d955c408,DATARMNETc154fd2d48,
  107. DATARMNET42a992465f,ret,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return
  108. ret;}int DATARMNET4e292977da(void*priv,const struct list_head*
  109. DATARMNET9cf7d31274,const struct list_head*DATARMNET5444bd3b6f){struct
  110. DATARMNETe176be7f7c*DATARMNET40e125212a;struct DATARMNETe176be7f7c*
  111. DATARMNETdcaff77beb;if(!DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return
  112. (0xd2d+202-0xdf7);DATARMNET40e125212a=list_entry(DATARMNET9cf7d31274,struct
  113. DATARMNETe176be7f7c,DATARMNET7287946e7b);DATARMNETdcaff77beb=list_entry(
  114. DATARMNET5444bd3b6f,struct DATARMNETe176be7f7c,DATARMNET7287946e7b);if(
  115. DATARMNET40e125212a->DATARMNET253a9fc708>DATARMNETdcaff77beb->
  116. DATARMNET253a9fc708)return-(0xd26+209-0xdf6);else if(DATARMNET40e125212a->
  117. DATARMNET253a9fc708<DATARMNETdcaff77beb->DATARMNET253a9fc708)return
  118. (0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}int DATARMNET3c489db64a(void*priv,
  119. const struct list_head*DATARMNET9cf7d31274,const struct list_head*
  120. DATARMNET5444bd3b6f){struct DATARMNET13c47d154e*DATARMNET40e125212a;struct
  121. DATARMNET13c47d154e*DATARMNETdcaff77beb;if(!DATARMNET9cf7d31274||!
  122. DATARMNET5444bd3b6f)return(0xd2d+202-0xdf7);DATARMNET40e125212a=list_entry(
  123. DATARMNET9cf7d31274,struct DATARMNET13c47d154e,DATARMNETec0e3cb8f0);
  124. DATARMNETdcaff77beb=list_entry(DATARMNET5444bd3b6f,struct DATARMNET13c47d154e,
  125. DATARMNETec0e3cb8f0);if(DATARMNET40e125212a->DATARMNET253a9fc708>
  126. DATARMNETdcaff77beb->DATARMNET253a9fc708)return-(0xd26+209-0xdf6);else if(
  127. DATARMNET40e125212a->DATARMNET253a9fc708<DATARMNETdcaff77beb->
  128. DATARMNET253a9fc708)return(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}int
  129. DATARMNETd5c15f1ff3(void*priv,const struct list_head*DATARMNET9cf7d31274,const
  130. struct list_head*DATARMNET5444bd3b6f){struct DATARMNET09a412b1c6*
  131. DATARMNET40e125212a;struct DATARMNET09a412b1c6*DATARMNETdcaff77beb;if(!
  132. DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return(0xd2d+202-0xdf7);
  133. DATARMNET40e125212a=list_entry(DATARMNET9cf7d31274,struct DATARMNET09a412b1c6,
  134. DATARMNETd502c0412a);DATARMNETdcaff77beb=list_entry(DATARMNET5444bd3b6f,struct
  135. DATARMNET09a412b1c6,DATARMNETd502c0412a);if(DATARMNET40e125212a->
  136. DATARMNET253a9fc708>DATARMNETdcaff77beb->DATARMNET253a9fc708)return-
  137. (0xd26+209-0xdf6);else if(DATARMNET40e125212a->DATARMNET253a9fc708<
  138. DATARMNETdcaff77beb->DATARMNET253a9fc708)return(0xd26+209-0xdf6);return
  139. (0xd2d+202-0xdf7);}int DATARMNET85af86a36d(void*priv,const struct list_head*
  140. DATARMNET9cf7d31274,const struct list_head*DATARMNET5444bd3b6f){struct
  141. DATARMNET47a6995138*DATARMNETdad817a72a;struct DATARMNET47a6995138*
  142. DATARMNET11d167e92b;if(!DATARMNET9cf7d31274||!DATARMNET5444bd3b6f)return
  143. (0xd2d+202-0xdf7);DATARMNETdad817a72a=list_entry(DATARMNET9cf7d31274,struct
  144. DATARMNET47a6995138,DATARMNET02523bfb57);DATARMNET11d167e92b=list_entry(
  145. DATARMNET5444bd3b6f,struct DATARMNET47a6995138,DATARMNET02523bfb57);if(
  146. DATARMNETdad817a72a->DATARMNET4da6031170>DATARMNET11d167e92b->
  147. DATARMNET4da6031170)return-(0xd26+209-0xdf6);else if(DATARMNETdad817a72a->
  148. DATARMNET4da6031170<DATARMNET11d167e92b->DATARMNET4da6031170)return
  149. (0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}int DATARMNETf181a18009(struct
  150. net_device*dev){u8 DATARMNETde5894dad9;u8 DATARMNETd9e9d4ff7e;int
  151. DATARMNET895df156d7=-(0xd26+209-0xdf6);u8 is_match_found=(0xd2d+202-0xdf7);
  152. struct DATARMNET9b44b71ee9*ep=NULL;if(!dev){DATARMNET68d84e7b98[
  153. DATARMNETf5157a9b85]++;return DATARMNET895df156d7;}spin_lock_bh(&
  154. DATARMNETec2a4f5211);list_for_each_entry(ep,&DATARMNET30a3e83974,
  155. DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if(ep->ep==dev){
  156. is_match_found=(0xd26+209-0xdf6);break;}}if(!is_match_found){DATARMNET68d84e7b98
  157. [DATARMNETb8fe2c0e64]++;spin_unlock_bh(&DATARMNETec2a4f5211);return
  158. DATARMNET895df156d7;}DATARMNETde5894dad9=ep->DATARMNET6bda8fe27e;
  159. DATARMNETd9e9d4ff7e=ep->DATARMNETd7a83774f8;while(DATARMNETde5894dad9<
  160. DATARMNETd9e9d4ff7e){if(ep->DATARMNET5af04d0405[DATARMNETde5894dad9]>=
  161. (0xd2d+202-0xdf7)){DATARMNET895df156d7=ep->DATARMNET5af04d0405[
  162. DATARMNETde5894dad9];break;}DATARMNETde5894dad9++;}if((DATARMNET895df156d7>=
  163. (0xd2d+202-0xdf7))||((ep->DATARMNET6bda8fe27e+(0xd26+209-0xdf6))>=ep->
  164. DATARMNETd7a83774f8))ep->DATARMNET6bda8fe27e=((ep->DATARMNET6bda8fe27e+
  165. (0xd26+209-0xdf6))%ep->DATARMNETd7a83774f8);spin_unlock_bh(&DATARMNETec2a4f5211)
  166. ;return DATARMNET895df156d7;}int DATARMNET98b2a0ce62(struct net_device*dev){
  167. struct DATARMNET9b44b71ee9*ep=NULL;int DATARMNET895df156d7=-(0xd26+209-0xdf6);u8
  168. DATARMNETcc5b7cd962;u8 DATARMNET15bde5cb53;u8 is_match_found=(0xd2d+202-0xdf7);
  169. if(!dev){DATARMNET68d84e7b98[DATARMNETf5157a9b85]++;return DATARMNET895df156d7;}
  170. spin_lock_bh(&DATARMNETec2a4f5211);list_for_each_entry(ep,&DATARMNET30a3e83974,
  171. DATARMNET0763436b8d){if(!ep->DATARMNET4a4e6f66b5)continue;if(ep->ep==dev){
  172. is_match_found=(0xd26+209-0xdf6);break;}}if(!is_match_found){DATARMNET68d84e7b98
  173. [DATARMNETb8fe2c0e64]++;spin_unlock_bh(&DATARMNETec2a4f5211);return
  174. DATARMNET895df156d7;}DATARMNETcc5b7cd962=ep->DATARMNET121a654efd;
  175. DATARMNET15bde5cb53=ep->DATARMNET847276e5af;while(DATARMNETcc5b7cd962<
  176. DATARMNET15bde5cb53){if(ep->DATARMNET7167e10d99[DATARMNETcc5b7cd962]>=
  177. (0xd2d+202-0xdf7)){DATARMNET895df156d7=ep->DATARMNET7167e10d99[
  178. DATARMNETcc5b7cd962];break;}DATARMNETcc5b7cd962++;}if(DATARMNET895df156d7>=
  179. (0xd2d+202-0xdf7))ep->DATARMNET121a654efd=((DATARMNETcc5b7cd962+
  180. (0xd26+209-0xdf6))%DATARMNET15bde5cb53);spin_unlock_bh(&DATARMNETec2a4f5211);
  181. return DATARMNET895df156d7;}void DATARMNET7f1d9480cb(void*port){
  182. DATARMNET4063c95208();}void DATARMNETa4bd2ef52c(void*port){DATARMNET7b6c061b06()
  183. ;}u8 DATARMNET928c931df9(struct rps_map*map){u8 mask=(0xd2d+202-0xdf7);u8 i;for(
  184. i=(0xd2d+202-0xdf7);i<map->len;i++)mask|=(0xd26+209-0xdf6)<<map->cpus[i];return
  185. mask;}int DATARMNET310c3eb16e(u8 mask){u8 i;u8 DATARMNETc2284e5688=
  186. (0xd2d+202-0xdf7);for(i=(0xd2d+202-0xdf7);i<DATARMNETc6782fed88;i++){if(mask&(
  187. (0xd26+209-0xdf6)<<i))DATARMNETc2284e5688++;}return DATARMNETc2284e5688;}int
  188. DATARMNET04e8d1b862(u8 cpu,u8 mask){int ret=DATARMNETb91aee91fd;u8 idx=
  189. (0xd2d+202-0xdf7);u8 i;if(!(mask&(0xd26+209-0xdf6)<<cpu))return ret;for(i=
  190. (0xd2d+202-0xdf7);i<DATARMNETc6782fed88;i++){if(i==cpu&&(mask&((0xd26+209-0xdf6)
  191. <<i))){ret=idx;break;}if(mask&((0xd26+209-0xdf6)<<i))idx++;}return ret;}int
  192. DATARMNET217fe38119(u64 DATARMNETab155dfd5d,struct net_device*dev){int
  193. DATARMNETf54fdb137b=DATARMNETb91aee91fd;if(DATARMNETab155dfd5d<
  194. DATARMNETd82a2ed45e)DATARMNETf54fdb137b=DATARMNETf181a18009(dev);if(
  195. DATARMNETf54fdb137b==DATARMNETb91aee91fd||DATARMNETab155dfd5d>=
  196. DATARMNETd82a2ed45e)DATARMNETf54fdb137b=DATARMNET98b2a0ce62(dev);
  197. DATARMNET52de1f3dc0(DATARMNET720469c0a9,DATARMNET7e63a08ad4,DATARMNETf54fdb137b,
  198. DATARMNETab155dfd5d,(0x16e8+787-0xc0c),(0x16e8+787-0xc0c),NULL,NULL);return
  199. DATARMNETf54fdb137b;}void*DATARMNETefcaf5fbe9(struct sk_buff*skb,u32 offset,u32
  200. DATARMNET567bdc7221,void*buf){struct skb_shared_info*shinfo=skb_shinfo(skb);
  201. skb_frag_t*frag;u32 DATARMNETedc267a909=offset;int i;if(offset>skb->len||
  202. DATARMNET567bdc7221>skb->len||offset+DATARMNET567bdc7221>skb->len)return NULL;if
  203. (skb_headlen(skb)>=offset+DATARMNET567bdc7221)return skb->data+offset;offset-=
  204. skb_headlen(skb);for(i=(0xd2d+202-0xdf7);i<shinfo->nr_frags;i++){u32 frag_size;
  205. frag=&shinfo->frags[i];frag_size=skb_frag_size(frag);if(offset>=frag_size){
  206. offset-=frag_size;continue;}if(frag_size>=offset+DATARMNET567bdc7221)return
  207. skb_frag_address(frag)+offset;}if(skb_copy_bits(skb,(int)DATARMNETedc267a909,buf
  208. ,(int)DATARMNET567bdc7221))return NULL;return buf;}void DATARMNET44459105b4(
  209. struct sk_buff*skb,struct DATARMNET63d7680df2*node_p){struct iphdr*ip4h,
  210. DATARMNETc00baf31c3;struct ipv6hdr*ip6h,DATARMNETcf1d9e2c1e;struct tcphdr*tp,
  211. DATARMNETd1ff6cd568;struct udphdr*up,DATARMNETc82d2f4e16;int len=
  212. (0xd2d+202-0xdf7);u16 ip_len=(0xd2d+202-0xdf7);__be16 frag_off;u8 protocol;
  213. switch(skb->protocol){case htons(ETH_P_IP):ip4h=DATARMNETefcaf5fbe9(skb,
  214. (0xd2d+202-0xdf7),sizeof(*ip4h),&DATARMNETc00baf31c3);if(!ip4h)return;node_p->
  215. DATARMNET1e9d25d9ff=ip4h->protocol;memcpy(&(node_p->ip_hdr.DATARMNETac9bbaad7c),
  216. ip4h,sizeof(*ip4h));ip_len=ip4h->ihl*(0xd11+230-0xdf3);break;case htons(
  217. ETH_P_IPV6):ip6h=DATARMNETefcaf5fbe9(skb,(0xd2d+202-0xdf7),sizeof(*ip6h),&
  218. DATARMNETcf1d9e2c1e);if(!ip6h)return;node_p->DATARMNET1e9d25d9ff=ip6h->nexthdr;
  219. memcpy(&(node_p->ip_hdr.DATARMNET1688a97aa4),ip6h,sizeof(*ip6h));protocol=ip6h->
  220. nexthdr;len=ipv6_skip_exthdr(skb,sizeof(*ip6h),&protocol,&frag_off);if(len<
  221. (0xd2d+202-0xdf7)){return;}ip_len=(u16)len;break;default:break;}if(node_p->
  222. DATARMNET1e9d25d9ff==IPPROTO_TCP){tp=DATARMNETefcaf5fbe9(skb,ip_len,sizeof(*tp),
  223. &DATARMNETd1ff6cd568);if(!tp)return;memcpy(&(node_p->DATARMNETe33b41dad9.tp),tp,
  224. sizeof(struct tcphdr));}else if(node_p->DATARMNET1e9d25d9ff==IPPROTO_UDP){up=
  225. DATARMNETefcaf5fbe9(skb,ip_len,sizeof(*up),&DATARMNETc82d2f4e16);if(!up)return;
  226. memcpy(&(node_p->DATARMNETe33b41dad9.up),up,sizeof(struct udphdr));}else{}}u32
  227. DATARMNET8532ab3089(u32 index,u32 DATARMNET0258668025,u32 hash,u8
  228. DATARMNET72067bf727){int DATARMNETebbd4cd1d9[DATARMNETc6782fed88/
  229. (0xd1f+216-0xdf5)]={(0xd35+210-0xdff),(0xd11+230-0xdf3),(0xd18+223-0xdf4),
  230. (0xd1f+216-0xdf5)};u32 ret=(0xd2d+202-0xdf7);if(!DATARMNET0258668025){
  231. DATARMNET68d84e7b98[DATARMNETef8cbfa62f]++;return ret;}if(DATARMNET0258668025<
  232. DATARMNETc6782fed88)ret=((((index+((DATARMNET0258668025%(0xd1f+216-0xdf5))?
  233. (0xd26+209-0xdf6):(0xd2d+202-0xdf7))))<<(0xec7+1122-0x130d))*DATARMNETebbd4cd1d9
  234. [(DATARMNET0258668025-(0xd26+209-0xdf6))>>(0xd26+209-0xdf6)])|(hash&16777215);if
  235. (DATARMNET72067bf727)ret=(ret&~1048575)|DATARMNET94fa0a43a2;DATARMNETda96251102(
  236. DATARMNETf3aaad06eb,DATARMNET4e91ddb48a,ret,hash,index,DATARMNET0258668025,NULL,
  237. NULL);return ret;}