rmnet_wlan_genl.c 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /* Copyright (c) 2021, The Linux Foundation. All rights reserved.
  3. * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
  4. *
  5. * RMNET WLAN Generic Netlink
  6. *
  7. */
  8. #include <net/genetlink.h>
  9. #include <net/netlink.h>
  10. #include <linux/module.h>
  11. #include <linux/if.h>
  12. #include <linux/inet.h>
  13. #include <linux/netdevice.h>
  14. #include "rmnet_wlan_genl.h"
  15. #include "rmnet_wlan.h"
  16. #include "rmnet_wlan_connection.h"
  17. #define DATARMNET5fe2c6571f (0xf07+1104-0x131d)
  18. static struct nla_policy DATARMNET19c5fce390[DATARMNETf6bbad94a5+
  19. (0xd26+209-0xdf6)]={[DATARMNET8c062d7709]=NLA_POLICY_EXACT_LEN(sizeof(struct
  20. DATARMNETb89ecedefc)),};static struct nla_policy DATARMNET0381a65e93[
  21. DATARMNETebcc30fe04+(0xd26+209-0xdf6)]={[DATARMNET4e9cd7b8bf]=
  22. NLA_POLICY_NESTED_ARRAY(DATARMNET19c5fce390),[DATARMNETb8afde4a5a]={.type=
  23. NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNETea4b56dc2b]={.type=
  24. NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNET8bf80e4b66]={.type=
  25. NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNET44a9a789aa]={.type=
  26. NLA_U16,},[DATARMNET149cafb1b7]={.type=NLA_U8,},};
  27. #define DATARMNET58eca5265b(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e) \
  28. { \
  29. .cmd = DATARMNET5aeb0ef9bc, \
  30. .doit = DATARMNETbd9859b58e, \
  31. }
  32. static int DATARMNET72501635c8(struct sk_buff*DATARMNET543491eb0f,struct
  33. genl_info*DATARMNET54338da2ff){struct nlattr*DATARMNET759bcdbf61[
  34. DATARMNETf6bbad94a5+(0xd26+209-0xdf6)];struct DATARMNETb89ecedefc*
  35. DATARMNETcadc2ef9aa;struct nlattr*DATARMNETef7cdd7b6b;u32 DATARMNETef77661260=
  36. (0xd2d+202-0xdf7);int DATARMNET4b119c4ff3;int DATARMNETb14e52a504=
  37. (0xd2d+202-0xdf7);if(!DATARMNET54338da2ff->attrs[DATARMNET4e9cd7b8bf]){
  38. GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  39. "\x4d\x75\x73\x74\x20\x73\x75\x70\x70\x6c\x79\x20\x74\x75\x70\x6c\x65\x20\x69\x6e\x66\x6f"
  40. );return-EINVAL;}nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
  41. attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3)DATARMNETef77661260++;
  42. DATARMNETcadc2ef9aa=kcalloc(DATARMNETef77661260,sizeof(*DATARMNETcadc2ef9aa),
  43. GFP_KERNEL);if(!DATARMNETcadc2ef9aa){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  44. "\x4b\x65\x72\x6e\x65\x6c\x20\x4f\x4f\x4d");return-ENOMEM;}DATARMNETef77661260=
  45. (0xd2d+202-0xdf7);nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
  46. attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3){struct DATARMNETb89ecedefc*
  47. DATARMNET3396919a68;DATARMNETb14e52a504=nla_parse_nested(DATARMNET759bcdbf61,
  48. DATARMNETf6bbad94a5,DATARMNETef7cdd7b6b,DATARMNET19c5fce390,DATARMNET54338da2ff
  49. ->extack);if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;if(!
  50. DATARMNET759bcdbf61[DATARMNET8c062d7709]){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  51. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x74\x75\x70\x6c\x65\x20\x65\x6e\x74\x72\x79"
  52. );goto DATARMNETbf4095f79e;}DATARMNET3396919a68=nla_data(DATARMNET759bcdbf61[
  53. DATARMNET8c062d7709]);if(DATARMNET3396919a68->DATARMNET0d956cc77a!=
  54. (0xd11+230-0xdf3)&&DATARMNET3396919a68->DATARMNET0d956cc77a!=(0xd03+244-0xdf1)){
  55. GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  56. "\x49\x6e\x76\x61\x6c\x69\x64\x20\x49\x50\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c");
  57. goto DATARMNETbf4095f79e;}if(DATARMNET3396919a68->DATARMNET4924e79411!=
  58. IPPROTO_TCP&&DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_UDP&&
  59. DATARMNET3396919a68->DATARMNET4924e79411!=IPPROTO_ESP){GENL_SET_ERR_MSG(
  60. DATARMNET54338da2ff,
  61. "\x49\x6e\x76\x61\x6c\x69\x64\x20\x74\x72\x61\x6e\x73\x70\x6f\x72\x74\x20\x70\x72\x6f\x74\x6f\x63\x6f\x6c"
  62. );goto DATARMNETbf4095f79e;}memcpy(&DATARMNETcadc2ef9aa[DATARMNETef77661260],
  63. DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));DATARMNETef77661260++;}
  64. DATARMNETb14e52a504=DATARMNET53f12a0f7d(DATARMNETcadc2ef9aa,DATARMNETef77661260,
  65. DATARMNET54338da2ff);DATARMNETbf4095f79e:kfree(DATARMNETcadc2ef9aa);return
  66. DATARMNETb14e52a504;}static int DATARMNET41dd9b14ab(struct sk_buff*
  67. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
  68. DATARMNET759bcdbf61[DATARMNETf6bbad94a5+(0xd26+209-0xdf6)];struct
  69. DATARMNETb89ecedefc*DATARMNETcadc2ef9aa;struct nlattr*DATARMNETef7cdd7b6b;u32
  70. DATARMNETef77661260=(0xd2d+202-0xdf7);int DATARMNET4b119c4ff3;int
  71. DATARMNETb14e52a504;if(!DATARMNET54338da2ff->attrs[DATARMNET4e9cd7b8bf]){
  72. GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  73. "\x4d\x75\x73\x74\x20\x73\x75\x70\x70\x6c\x79\x20\x74\x75\x70\x6c\x65\x20\x69\x6e\x66\x6f"
  74. );return-EINVAL;}nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
  75. attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3)DATARMNETef77661260++;
  76. DATARMNETcadc2ef9aa=kcalloc(DATARMNETef77661260,sizeof(*DATARMNETcadc2ef9aa),
  77. GFP_KERNEL);if(!DATARMNETcadc2ef9aa){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  78. "\x4b\x65\x72\x6e\x65\x6c\x20\x4f\x4f\x4d");return-ENOMEM;}DATARMNETef77661260=
  79. (0xd2d+202-0xdf7);nla_for_each_nested(DATARMNETef7cdd7b6b,DATARMNET54338da2ff->
  80. attrs[DATARMNET4e9cd7b8bf],DATARMNET4b119c4ff3){struct DATARMNETb89ecedefc*
  81. DATARMNET3396919a68;DATARMNETb14e52a504=nla_parse_nested(DATARMNET759bcdbf61,
  82. DATARMNETf6bbad94a5,DATARMNETef7cdd7b6b,DATARMNET19c5fce390,DATARMNET54338da2ff
  83. ->extack);if(DATARMNETb14e52a504)goto DATARMNETbf4095f79e;if(!
  84. DATARMNET759bcdbf61[DATARMNET8c062d7709]){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  85. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x74\x75\x70\x6c\x65\x20\x65\x6e\x74\x72\x79"
  86. );DATARMNETb14e52a504=-EINVAL;goto DATARMNETbf4095f79e;}DATARMNET3396919a68=
  87. nla_data(DATARMNET759bcdbf61[DATARMNET8c062d7709]);memcpy(&DATARMNETcadc2ef9aa[
  88. DATARMNETef77661260],DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));
  89. DATARMNETef77661260++;}DATARMNETb14e52a504=DATARMNET07f6485c9b(
  90. DATARMNETcadc2ef9aa,DATARMNETef77661260,DATARMNET54338da2ff);DATARMNETbf4095f79e
  91. :kfree(DATARMNETcadc2ef9aa);return DATARMNETb14e52a504;}static int
  92. DATARMNETf1fa473089(struct sk_buff*DATARMNET543491eb0f,struct genl_info*
  93. DATARMNET54338da2ff){struct nlattr*DATARMNETef7cdd7b6b;int DATARMNET9954a624ac;
  94. int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[DATARMNETb8afde4a5a]||!
  95. DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
  96. DATARMNET54338da2ff,
  97. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x6e\x65\x74\x77\x6f\x72\x6b\x20\x69\x6e\x66\x6f"
  98. );return-EINVAL;}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
  99. DATARMNETb8afde4a5a];DATARMNET9954a624ac=nla_get_u8(DATARMNET54338da2ff->attrs[
  100. DATARMNET149cafb1b7]);if(DATARMNET9954a624ac!=DATARMNET356f2a237e&&
  101. DATARMNET9954a624ac!=DATARMNET45ee632553&&DATARMNET9954a624ac!=
  102. DATARMNET9bfbc31cd6){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  103. "\x4e\x65\x74\x77\x6f\x72\x6b\x20\x74\x79\x70\x65\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x21"
  104. );return-EINVAL;}if(DATARMNET9954a624ac==DATARMNET45ee632553){
  105. DATARMNET268a8314cf=DATARMNET92e5468fc5(nla_data(DATARMNETef7cdd7b6b),
  106. DATARMNET54338da2ff);}else{DATARMNET268a8314cf=DATARMNET97b2388e63(nla_data(
  107. DATARMNETef7cdd7b6b),DATARMNET54338da2ff);}return DATARMNET268a8314cf;}static
  108. int DATARMNETcd9478470c(struct sk_buff*DATARMNET543491eb0f,struct genl_info*
  109. DATARMNET54338da2ff){struct nlattr*DATARMNETef7cdd7b6b;int DATARMNET9954a624ac;
  110. int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[DATARMNETb8afde4a5a]||!
  111. DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
  112. DATARMNET54338da2ff,
  113. "\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
  114. );return-EINVAL;}DATARMNET9954a624ac=nla_get_u8(DATARMNET54338da2ff->attrs[
  115. DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
  116. DATARMNETb8afde4a5a];if(DATARMNET9954a624ac!=DATARMNET356f2a237e&&
  117. DATARMNET9954a624ac!=DATARMNET45ee632553&&DATARMNET9954a624ac!=
  118. DATARMNET9bfbc31cd6){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  119. "\x4e\x65\x74\x77\x6f\x72\x6b\x20\x74\x79\x70\x65\x20\x6e\x6f\x74\x20\x73\x75\x70\x70\x6f\x72\x74\x65\x64\x21"
  120. );return-EINVAL;}if(DATARMNET9954a624ac==DATARMNET45ee632553){
  121. DATARMNET268a8314cf=DATARMNET9d7bb9a63d(nla_data(DATARMNETef7cdd7b6b),
  122. DATARMNET54338da2ff);}else{DATARMNET268a8314cf=DATARMNETa903cd5994(nla_data(
  123. DATARMNETef7cdd7b6b),DATARMNET54338da2ff);}if(DATARMNET268a8314cf)
  124. GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  125. "\x4b\x65\x72\x6e\x65\x6c\x20\x65\x72\x72\x6f\x72\x2c\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64"
  126. );return DATARMNET268a8314cf;}static int DATARMNETb86993aefb(struct sk_buff*
  127. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct
  128. DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e={};struct nlattr*DATARMNETef7cdd7b6b;
  129. char*DATARMNETd7f4d7c495;int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[
  130. DATARMNETea4b56dc2b]||!DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]||!
  131. DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
  132. DATARMNET54338da2ff,
  133. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x2c\x20\x61\x64\x64\x72\x65\x73\x73\x2c\x20\x61\x6e\x64\x20\x6e\x65\x74\x77\x6f\x72\x6b"
  134. );return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET9954a624ac=nla_get_u8(
  135. DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b=
  136. DATARMNET54338da2ff->attrs[DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data(
  137. DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if(
  138. in6_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e.
  139. DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){
  140. GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  141. "\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x36"
  142. );return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else
  143. {if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)&
  144. DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1,-(0xd26+209-0xdf6),NULL)!=
  145. (0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  146. "\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x34"
  147. );return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}
  148. DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66];
  149. DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f=dev_get_by_name(genl_info_net(
  150. DATARMNET54338da2ff),nla_data(DATARMNETef7cdd7b6b));if(!DATARMNET2d4b4cfc9e.
  151. DATARMNET57656f6f2f){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  152. "\x49\x6e\x76\x61\x6c\x69\x64\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x61\x6d\x65"
  153. );return-EINVAL;}DATARMNET268a8314cf=DATARMNET947eb110d2(&DATARMNET2d4b4cfc9e,
  154. DATARMNET54338da2ff);dev_put(DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f);return
  155. DATARMNET268a8314cf;}static int DATARMNETc175a08219(struct sk_buff*
  156. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct
  157. DATARMNET8d3c2559ca DATARMNET2d4b4cfc9e={};struct nlattr*DATARMNETef7cdd7b6b;
  158. char*DATARMNETd7f4d7c495;int DATARMNET268a8314cf;if(!DATARMNET54338da2ff->attrs[
  159. DATARMNETea4b56dc2b]||!DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66]||!
  160. DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]){GENL_SET_ERR_MSG(
  161. DATARMNET54338da2ff,
  162. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x61\x6e\x64\x20\x61\x64\x64\x72\x65\x73\x73"
  163. );return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET9954a624ac=nla_get_u8(
  164. DATARMNET54338da2ff->attrs[DATARMNET149cafb1b7]);DATARMNETef7cdd7b6b=
  165. DATARMNET54338da2ff->attrs[DATARMNETea4b56dc2b];DATARMNETd7f4d7c495=nla_data(
  166. DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if(
  167. in6_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),DATARMNET2d4b4cfc9e.
  168. DATARMNET5700daac01.s6_addr,-(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){
  169. GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  170. "\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x36"
  171. );return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else
  172. {if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)&
  173. DATARMNET2d4b4cfc9e.DATARMNET0dc14167a1,-(0xd26+209-0xdf6),NULL)!=
  174. (0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  175. "\x46\x57\x44\x20\x61\x64\x64\x72\x65\x73\x73\x20\x69\x73\x20\x69\x6e\x76\x61\x6c\x69\x64\x20\x69\x6e\x20\x49\x50\x76\x34"
  176. );return-EINVAL;}DATARMNET2d4b4cfc9e.DATARMNET0d956cc77a=(0xd11+230-0xdf3);}
  177. DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNET8bf80e4b66];
  178. DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f=dev_get_by_name(genl_info_net(
  179. DATARMNET54338da2ff),nla_data(DATARMNETef7cdd7b6b));if(!DATARMNET2d4b4cfc9e.
  180. DATARMNET57656f6f2f){GENL_SET_ERR_MSG(DATARMNET54338da2ff,
  181. "\x49\x6e\x76\x61\x6c\x69\x64\x20\x46\x57\x44\x20\x64\x65\x76\x69\x63\x65\x20\x6e\x61\x6d\x65"
  182. );return-EINVAL;}DATARMNET268a8314cf=DATARMNETb8b35fdc18(&DATARMNET2d4b4cfc9e,
  183. DATARMNET54338da2ff);dev_put(DATARMNET2d4b4cfc9e.DATARMNET57656f6f2f);return
  184. DATARMNET268a8314cf;}static int DATARMNETc5f6c112ec(struct sk_buff*
  185. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
  186. DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
  187. DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
  188. DATARMNET54338da2ff,
  189. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
  190. );return-EINVAL;}return DATARMNET8d5a5a7047(nla_get_be16(DATARMNETef7cdd7b6b),
  191. DATARMNET54338da2ff);}static int DATARMNETa6aec23397(struct sk_buff*
  192. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
  193. DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
  194. DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
  195. DATARMNET54338da2ff,
  196. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
  197. );return-EINVAL;}return DATARMNETc97c6a4265(nla_get_be16(DATARMNETef7cdd7b6b),
  198. DATARMNET54338da2ff);}static int DATARMNET16add73734(struct sk_buff*
  199. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
  200. DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
  201. DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
  202. DATARMNET54338da2ff,
  203. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
  204. );return-EINVAL;}return DATARMNET59b8376224(nla_get_be16(DATARMNETef7cdd7b6b),
  205. DATARMNET54338da2ff);}static int DATARMNETb318ed4796(struct sk_buff*
  206. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct nlattr*
  207. DATARMNETef7cdd7b6b;DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[
  208. DATARMNET44a9a789aa];if(!DATARMNETef7cdd7b6b){GENL_SET_ERR_MSG(
  209. DATARMNET54338da2ff,
  210. "\x4d\x75\x73\x74\x20\x73\x70\x65\x63\x69\x66\x79\x20\x65\x6e\x63\x61\x70\x20\x70\x6f\x72\x74"
  211. );return-EINVAL;}return DATARMNET0b12e969c5(nla_get_be16(DATARMNETef7cdd7b6b),
  212. DATARMNET54338da2ff);}static int DATARMNETa4773cb837(struct sk_buff*
  213. DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){(void)
  214. DATARMNET543491eb0f;(void)DATARMNET54338da2ff;DATARMNET078f6bd384();return
  215. (0xd2d+202-0xdf7);}static const struct genl_ops DATARMNETf9df19988d[]={
  216. DATARMNET58eca5265b(DATARMNET0604500302,DATARMNET72501635c8),DATARMNET58eca5265b
  217. (DATARMNET91becfb9ac,DATARMNET41dd9b14ab),DATARMNET58eca5265b(
  218. DATARMNET14a3625b43,DATARMNETf1fa473089),DATARMNET58eca5265b(DATARMNET4478d3511b
  219. ,DATARMNETcd9478470c),DATARMNET58eca5265b(DATARMNETc2d5a4e103,
  220. DATARMNETb86993aefb),DATARMNET58eca5265b(DATARMNET18145b00f6,DATARMNETc175a08219
  221. ),DATARMNET58eca5265b(DATARMNETb8857fe6d9,DATARMNETc5f6c112ec),
  222. DATARMNET58eca5265b(DATARMNET6d50a30ec2,DATARMNETa6aec23397),DATARMNET58eca5265b
  223. (DATARMNET2e5d7ed755,DATARMNETa4773cb837),DATARMNET58eca5265b(
  224. DATARMNETd37aaf8b58,DATARMNET16add73734),DATARMNET58eca5265b(DATARMNET3626d362d4
  225. ,DATARMNETb318ed4796),};struct genl_family DATARMNET61e8f41aae={.name=
  226. DATARMNET040266f460,.version=DATARMNET7c442b83bb,.maxattr=DATARMNETebcc30fe04,.
  227. policy=DATARMNET0381a65e93,.ops=DATARMNETf9df19988d,.n_ops=ARRAY_SIZE(
  228. DATARMNETf9df19988d),};static int __init DATARMNET7eb0fa5c8f(void){int
  229. DATARMNET61c2303133=(0xd2d+202-0xdf7);pr_info(
  230. "\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x20\x69\x6e\x69\x74\x69\x61\x6c\x69\x7a\x69\x6e\x67" "\n"
  231. ,__func__);DATARMNET61c2303133=genl_register_family(&DATARMNET61e8f41aae);if(
  232. DATARMNET61c2303133){pr_err(
  233. "\x25\x73\x28\x29\x3a\x20\x72\x65\x67\x69\x73\x74\x65\x72\x69\x6e\x67\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
  234. ,__func__,DATARMNET61c2303133);goto DATARMNET27d4697979;}DATARMNET61c2303133=
  235. DATARMNET9f106ed933();if(DATARMNET61c2303133){pr_err(
  236. "\x25\x73\x28\x29\x3a\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x20\x69\x6e\x69\x74\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
  237. ,__func__,DATARMNET61c2303133);goto DATARMNETb042feb7e2;}return(0xd2d+202-0xdf7)
  238. ;DATARMNETb042feb7e2:genl_unregister_family(&DATARMNET61e8f41aae);
  239. DATARMNET27d4697979:return DATARMNET61c2303133;}static void __exit
  240. DATARMNET7a381832d5(void){int DATARMNET61c2303133;pr_info(
  241. "\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x20\x65\x78\x69\x74\x69\x6e\x67" "\n"
  242. ,__func__);DATARMNET61c2303133=DATARMNETf56cbaa2b1();if(DATARMNET61c2303133)
  243. pr_err(
  244. "\x25\x73\x28\x29\x3a\x20\x63\x6f\x6e\x6e\x65\x63\x74\x69\x6f\x6e\x20\x6d\x61\x6e\x61\x67\x65\x6d\x65\x6e\x74\x20\x64\x65\x2d\x69\x6e\x69\x74\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
  245. ,__func__,DATARMNET61c2303133);DATARMNETfae36afa03();DATARMNET61c2303133=
  246. genl_unregister_family(&DATARMNET61e8f41aae);if(DATARMNET61c2303133)pr_err(
  247. "\x25\x73\x28\x29\x3a\x20\x75\x6e\x72\x65\x67\x69\x73\x74\x65\x72\x20\x66\x61\x6d\x69\x6c\x79\x20\x66\x61\x69\x6c\x65\x64\x3a\x20\x25\x69" "\n"
  248. ,__func__,DATARMNET61c2303133);}MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");
  249. module_init(DATARMNET7eb0fa5c8f);module_exit(DATARMNET7a381832d5);