rmnet_perf_main.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
  3. *
  4. * RMNET PERF framework
  5. *
  6. */
  7. #include <linux/module.h>
  8. #include <linux/skbuff.h>
  9. #include <linux/in.h>
  10. #include <linux/udp.h>
  11. #include <linux/ip.h>
  12. #include <linux/ipv6.h>
  13. #include "rmnet_module.h"
  14. MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");static char*verinfo[]={
  15. "\x65\x32\x31\x38\x66\x34\x35\x31","\x33\x39\x63\x62\x64\x37\x64\x35",
  16. "\x37\x34\x31\x35\x39\x32\x31\x63","\x34\x64\x65\x34\x39\x64\x62\x35",
  17. "\x62\x31\x63\x34\x34\x62\x34\x63"};module_param_array(verinfo,charp,NULL,
  18. (0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo,
  19. "\x56\x65\x72\x73\x69\x6f\x6e\x20\x6f\x66\x20\x74\x68\x65\x20\x64\x72\x69\x76\x65\x72"
  20. );extern void(*rmnet_perf_egress_hook1)(struct sk_buff*DATARMNET543491eb0f);
  21. #define DATARMNETf241a4b20f (0xe07+6616-0x2624)
  22. static inline bool DATARMNETe1ef3edea2(struct udphdr*DATARMNETa1abb4897c){return
  23. be16_to_cpu(DATARMNETa1abb4897c->source)==DATARMNETf241a4b20f||be16_to_cpu(
  24. DATARMNETa1abb4897c->dest)==DATARMNETf241a4b20f;}static bool DATARMNET77ab42949f
  25. (struct sk_buff*DATARMNET543491eb0f){u8*DATARMNET352416e828,DATARMNETd9bda61912;
  26. struct udphdr*DATARMNETa1abb4897c;DATARMNETa1abb4897c=udp_hdr(
  27. DATARMNET543491eb0f);if(!DATARMNETe1ef3edea2(DATARMNETa1abb4897c))return false;
  28. if(be16_to_cpu(DATARMNETa1abb4897c->len)<sizeof(struct udphdr)+(0xd26+209-0xdf6)
  29. )return false;DATARMNET352416e828=skb_header_pointer(DATARMNET543491eb0f,(int)((
  30. unsigned char*)DATARMNETa1abb4897c-DATARMNET543491eb0f->data)+sizeof(struct
  31. udphdr),(0xd26+209-0xdf6),&DATARMNETd9bda61912);if(!DATARMNET352416e828)return
  32. false;return((*DATARMNET352416e828)&(0xbf7+4869-0x1e3c))==(0xbf7+4869-0x1e3c);}
  33. int DATARMNETee9214ce9b(struct sk_buff*DATARMNET543491eb0f){if(
  34. DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){if(ip_hdr(DATARMNET543491eb0f)->
  35. protocol!=IPPROTO_UDP)return-EINVAL;if(DATARMNET77ab42949f(DATARMNET543491eb0f))
  36. goto DATARMNET606558916b;return-EINVAL;}if(DATARMNET543491eb0f->protocol==htons(
  37. ETH_P_IPV6)){if(ipv6_hdr(DATARMNET543491eb0f)->nexthdr!=IPPROTO_UDP)return-
  38. EINVAL;if(DATARMNET77ab42949f(DATARMNET543491eb0f))goto DATARMNET606558916b;}
  39. return-EINVAL;DATARMNET606558916b:DATARMNET543491eb0f->hash=(0xd2d+202-0xdf7);
  40. DATARMNET543491eb0f->sw_hash=(0xd26+209-0xdf6);return(0xd2d+202-0xdf7);}void
  41. DATARMNET05c4bf8af9(struct sk_buff*DATARMNET543491eb0f){if(DATARMNET543491eb0f->
  42. protocol==htons(ETH_P_IP)){if(ip_hdr(DATARMNET543491eb0f)->protocol!=IPPROTO_UDP
  43. )return;if(DATARMNET77ab42949f(DATARMNET543491eb0f))goto DATARMNETb261f33b7b;}if
  44. (DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){if(ipv6_hdr(
  45. DATARMNET543491eb0f)->nexthdr!=IPPROTO_UDP)return;if(DATARMNET77ab42949f(
  46. DATARMNET543491eb0f))goto DATARMNETb261f33b7b;}return;DATARMNETb261f33b7b:
  47. DATARMNET543491eb0f->priority=14286874;}static const struct
  48. rmnet_module_hook_register_info DATARMNET95a71e03c1[]={{.hooknum=
  49. RMNET_MODULE_HOOK_PERF_INGRESS,.func=DATARMNETee9214ce9b,},{.hooknum=
  50. RMNET_MODULE_HOOK_PERF_EGRESS,.func=DATARMNET05c4bf8af9,},};void
  51. DATARMNET49c17a32bc(void){rcu_assign_pointer(rmnet_perf_egress_hook1,
  52. DATARMNET05c4bf8af9);rmnet_module_hook_register(DATARMNET95a71e03c1,ARRAY_SIZE(
  53. DATARMNET95a71e03c1));}void DATARMNET41e8cc085c(void){rcu_assign_pointer(
  54. rmnet_perf_egress_hook1,NULL);rmnet_module_hook_unregister(DATARMNET95a71e03c1,
  55. ARRAY_SIZE(DATARMNET95a71e03c1));}static int __init DATARMNET63abbdc3d3(void){
  56. pr_info("%s(): Loading\n",__func__);DATARMNET49c17a32bc();return
  57. (0xd2d+202-0xdf7);}static void __exit DATARMNETa343229e33(void){
  58. DATARMNET41e8cc085c();pr_info(
  59. "\x25\x73\x28\x29\x3a\x20\x65\x78\x69\x74\x69\x6e\x67" "\n",__func__);}
  60. module_init(DATARMNET63abbdc3d3);module_exit(DATARMNETa343229e33);