diff --git a/wlan/Android.mk b/wlan/Android.mk index 35d5cf2757..a1208f7afc 100644 --- a/wlan/Android.mk +++ b/wlan/Android.mk @@ -15,7 +15,23 @@ LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) LOCAL_MODULE := rmnet_wlan.ko LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/**/*) $(wildcard $(LOCAL_PATH)/*) +#path from build top to the core directory +DATARMNET_CORE_PATH := datarmnet/core +RMNET_CORE_PATH := vendor/qcom/opensource/$(DATARMNET_CORE_PATH) DLKM_DIR := $(TOP)/device/qcom/common/dlkm +#absolute path to the build directory. Can't use $(TOP) here since +#that resolves to ., and we pass this to Kbuild, where . is different +RMNET_CORE_INC_DIR := $(abspath $(RMNET_CORE_PATH)) + +#pass variables down to Kbuild environment +KBUILD_OPTIONS := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR) +KBUILD_OPTIONS += RMNET_CORE_PATH=$(RMNET_CORE_PATH) +KBUILD_OPTIONS += DATARMNET_CORE_PATH=$(DATARMNET_CORE_PATH) +KBUILD_OPTIONS_GKI := RMNET_CORE_INC_DIR=$(RMNET_CORE_INC_DIR) +KBUILD_OPTIONS_GKI += RMNET_CORE_PATH=$(RMNET_CORE_PATH)/gki + +LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/rmnet_core.ko +LOCAL_ADDITIONAL_DEPENDENCIES_GKI := $(TARGET_OUT_INTERMEDIATES)/DLKM_OBJ/$(RMNET_CORE_PATH)/gki/rmnet_core.ko include $(DLKM_DIR)/Build_external_kernelmodule.mk diff --git a/wlan/Kbuild b/wlan/Kbuild index 2f105f3814..517c0e2c92 100644 --- a/wlan/Kbuild +++ b/wlan/Kbuild @@ -1,5 +1,6 @@ obj-m += rmnet_wlan.o -ccflags-y := $(call cc-option,-Wno-misleading-indentation) +ccflags-y := -I$(RMNET_CORE_INC_DIR) \ + $(call cc-option,-Wno-misleading-indentation) rmnet_wlan-y := \ rmnet_wlan_main.o \ rmnet_wlan_genl.o \ diff --git a/wlan/Kconfig b/wlan/Kconfig index 34d7ba84ec..a10e494d82 100644 --- a/wlan/Kconfig +++ b/wlan/Kconfig @@ -5,5 +5,6 @@ menuconfig RMNET_WLAN tristate "Rmnet WLAN support" default m + depends on RMNET_CORE ---help--- WLAN processing module for RmNet driver diff --git a/wlan/Makefile b/wlan/Makefile index 8a32d211f8..16ab5a0f9b 100644 --- a/wlan/Makefile +++ b/wlan/Makefile @@ -2,11 +2,12 @@ RMNET_WLAN_SELECT := CONFIG_RMNET_WLAN=m KBUILD_OPTIONS += $(RMNET_WLAN_SELECT) KBUILD_OPTIONS += $(KBUILD_EXTRA) # Extra config if any +KBUILD_EXTRA_SYMBOLS := $(M)/../../$(DATARMNET_CORE_PATH)/Module.symvers M ?= $(shell pwd) all: - $(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) + $(MAKE) -C $(KERNEL_SRC) M=$(M) modules $(KBUILD_OPTIONS) $(KBUILD_EXTRA_SYMBOLS) modules_install: $(MAKE) INSTALL_MOD_STRIP=1 -C $(KERNEL_SRC) M=$(M) modules_install diff --git a/wlan/rmnet_wlan.h b/wlan/rmnet_wlan.h index 43bfb34b03..70c91984fb 100644 --- a/wlan/rmnet_wlan.h +++ b/wlan/rmnet_wlan.h @@ -19,11 +19,14 @@ DATARMNET0dc14167a1;struct in6_addr DATARMNET5700daac01;};u8 DATARMNET0d956cc77a ;u8 DATARMNET9954a624ac;};struct DATARMNET41b426061d{struct hlist_node DATARMNETe8608dd267;struct rcu_head DATARMNET28bfe9e6ad;struct notifier_block DATARMNET272c159b3c;char DATARMNET852d4d00e2[IFNAMSIZ];struct -DATARMNET8d3c2559ca DATARMNET7ed5754a5c;};enum{DATARMNET356f2a237e, -DATARMNET45ee632553,DATARMNET9bfbc31cd6,DATARMNETdcafdec32a,};void -DATARMNET7ca470d54b(struct sk_buff*DATARMNET543491eb0f,u32 DATARMNET1464100e7a); -int DATARMNET4899053671(struct sk_buff*DATARMNET543491eb0f,struct -DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);bool DATARMNET4eafcdee07(struct +DATARMNET8d3c2559ca DATARMNET7ed5754a5c;};struct DATARMNETe117226f58{union{ +__be32 DATARMNETdfe430c2d6;struct in6_addr DATARMNET815cbb4bf5;};union{__be32 +DATARMNET2cb607d686;struct in6_addr DATARMNETc3f31215b7;};__be16 +DATARMNET08e913477e;__be16 DATARMNETda7f7fa492;u8 DATARMNET0d956cc77a;};enum{ +DATARMNET356f2a237e,DATARMNET45ee632553,DATARMNET9bfbc31cd6,DATARMNETdcafdec32a, +};void DATARMNET7ca470d54b(struct sk_buff*DATARMNET543491eb0f,u32 +DATARMNET1464100e7a);int DATARMNET4899053671(struct sk_buff*DATARMNET543491eb0f, +struct DATARMNET8d3c2559ca*DATARMNET2d4b4cfc9e);bool DATARMNET4eafcdee07(struct DATARMNETb89ecedefc*DATARMNET3396919a68);int DATARMNET53f12a0f7d(struct DATARMNETb89ecedefc*DATARMNETcadc2ef9aa,u32 DATARMNETef77661260,struct genl_info *DATARMNET54338da2ff);int DATARMNET07f6485c9b(struct DATARMNETb89ecedefc* @@ -47,6 +50,8 @@ DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc*DATARMNET3396919a68);int DATARMNET078f6bd384(void);void DATARMNETfae36afa03(void);char* DATARMNET934406764d(void);char*DATARMNETe447822105(void);struct DATARMNET41b426061d*DATARMNETcc0a01df2a(struct DATARMNET8d3c2559ca* -DATARMNET54338da2ff); +DATARMNET54338da2ff);int DATARMNET4c1c11d8a5(struct DATARMNETe117226f58* +DATARMNET3396919a68);int DATARMNET56fde5181e(void);extern struct +DATARMNETe117226f58*DATARMNETcde6e442f5; #endif diff --git a/wlan/rmnet_wlan_connection.c b/wlan/rmnet_wlan_connection.c index f381fcd027..d7649c7fef 100644 --- a/wlan/rmnet_wlan_connection.c +++ b/wlan/rmnet_wlan_connection.c @@ -25,6 +25,7 @@ #define DATARMNET8fc07fbb24 ((0xeb7+1158-0x132d)) #define DATARMNETeaf0945284 \ (const_ilog2(DATARMNET8fc07fbb24)) +extern void(*rmnet_wlan_ll_tuple_hook)(struct sk_buff*DATARMNET543491eb0f); struct DATARMNET4f49486833{struct hlist_node DATARMNETe8608dd267;struct rcu_head DATARMNET28bfe9e6ad;struct hrtimer DATARMNET9f31ce5d2d;struct DATARMNET0ca9d8ead7 DATARMNET54338da2ff;struct DATARMNET8d3c2559ca @@ -116,8 +117,8 @@ daddr,sizeof(__be32));DATARMNET099aa93adc.flowi4_oif=DATARMNET813ca18d06-> ifindex;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537 =ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR( DATARMNET066b8bd537)){DATARMNET17f6bc1be5(DATARMNET666fc9a664); -DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,"\x64\x75\x6d\x6d\x79\x30");if -(!DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET521b065310);goto +DATARMNET39542b437e=dev_get_by_name_rcu(&init_net,"dummy0");if(! +DATARMNET39542b437e){DATARMNET17f6bc1be5(DATARMNET521b065310);goto DATARMNETc1174a0f45;}DATARMNET099aa93adc.flowi4_oif=DATARMNET39542b437e->ifindex ;DATARMNET099aa93adc.flowi4_flags=FLOWI_FLAG_KNOWN_NH;DATARMNET066b8bd537= ip_route_output_key(&init_net,&DATARMNET099aa93adc);if(IS_ERR( @@ -306,9 +307,33 @@ DATARMNET7ed5754a5c;}return NULL;}void DATARMNETf4e1a29dbc(void){struct DATARMNET4f49486833*DATARMNET63b1a086d5;int DATARMNET5c2fd31d7b;rcu_read_lock(); hash_for_each_rcu(DATARMNET5413d6f8ec,DATARMNET5c2fd31d7b,DATARMNET63b1a086d5, DATARMNETe8608dd267)hrtimer_cancel(&DATARMNET63b1a086d5->DATARMNET9f31ce5d2d); -rcu_read_unlock();}int DATARMNET9f106ed933(void){int DATARMNET268a8314cf; -DATARMNET268a8314cf=register_netdevice_notifier(&DATARMNET61d0113123);if( -DATARMNET268a8314cf)pr_err( +rcu_read_unlock();}void DATARMNET6f73df41cd(struct sk_buff*DATARMNET543491eb0f){ +int protocol=-(0xd26+209-0xdf6);struct DATARMNETe117226f58*DATARMNET3396919a68= +rcu_dereference(DATARMNETcde6e442f5);if(!DATARMNET3396919a68)return;if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IP)){struct iphdr*DATARMNET86f1f2cdc9 +,DATARMNETbf6548198e;DATARMNET86f1f2cdc9=skb_header_pointer(DATARMNET543491eb0f, +(0xd2d+202-0xdf7),sizeof(*DATARMNET86f1f2cdc9),&DATARMNETbf6548198e);if(! +DATARMNET86f1f2cdc9)return;if(DATARMNET86f1f2cdc9->version!=DATARMNET3396919a68 +->DATARMNET0d956cc77a&&DATARMNET86f1f2cdc9->saddr!=DATARMNET3396919a68-> +DATARMNETdfe430c2d6&&DATARMNET86f1f2cdc9->daddr!=DATARMNET3396919a68-> +DATARMNET2cb607d686)return;protocol=DATARMNET86f1f2cdc9->protocol;}else if( +DATARMNET543491eb0f->protocol==htons(ETH_P_IPV6)){struct ipv6hdr* +DATARMNETbf55123e5b,DATARMNETcf1d9e2c1e;DATARMNETbf55123e5b=skb_header_pointer( +DATARMNET543491eb0f,(0xd2d+202-0xdf7),sizeof(*DATARMNETbf55123e5b),& +DATARMNETcf1d9e2c1e);if(!DATARMNETbf55123e5b)return;if(DATARMNETbf55123e5b-> +version!=DATARMNET3396919a68->DATARMNET0d956cc77a&&ipv6_addr_cmp(& +DATARMNETbf55123e5b->saddr,&DATARMNET3396919a68->DATARMNET815cbb4bf5)&& +ipv6_addr_cmp(&DATARMNETbf55123e5b->daddr,&DATARMNET3396919a68-> +DATARMNETc3f31215b7))return;protocol=DATARMNETbf55123e5b->nexthdr;}if(protocol== +IPPROTO_UDP){if(udp_hdr(DATARMNET543491eb0f)->source==DATARMNET3396919a68-> +DATARMNET08e913477e&&udp_hdr(DATARMNET543491eb0f)->dest==DATARMNET3396919a68-> +DATARMNETda7f7fa492)goto DATARMNET9573fcc9c6;}return;DATARMNET9573fcc9c6: +DATARMNET543491eb0f->priority=2607612160;DATARMNET5ca94dbc3c(DATARMNETc2cade1d75 +);}void DATARMNET333c107558(void){rcu_assign_pointer(rmnet_wlan_ll_tuple_hook, +DATARMNET6f73df41cd);}void DATARMNET4c08c7210c(void){rcu_assign_pointer( +rmnet_wlan_ll_tuple_hook,NULL);synchronize_rcu();}int DATARMNET9f106ed933(void){ +int DATARMNET268a8314cf;DATARMNET268a8314cf=register_netdevice_notifier(& +DATARMNET61d0113123);if(DATARMNET268a8314cf)pr_err( "\x25\x73\x28\x29\x3a\x20\x6e\x6f\x74\x69\x66\x69\x65\x72\x20\x66\x61\x69\x6c\x65\x64" "\n" ,__func__);return DATARMNET268a8314cf;}int DATARMNETf56cbaa2b1(void){int DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(& diff --git a/wlan/rmnet_wlan_connection.h b/wlan/rmnet_wlan_connection.h index ef45c1e90d..43129a576d 100644 --- a/wlan/rmnet_wlan_connection.h +++ b/wlan/rmnet_wlan_connection.h @@ -1,5 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* Copyright (c) 2021, The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * RMNET WLAN connection management framework * @@ -14,7 +15,8 @@ struct DATARMNET0ca9d8ead7{union{__be32 DATARMNETdfe430c2d6;struct in6_addr DATARMNET815cbb4bf5;};union{__be32 DATARMNET2cb607d686;struct in6_addr DATARMNETc3f31215b7;};u8 DATARMNET0d956cc77a;};struct DATARMNET8d3c2559ca* DATARMNET07f0e0f286(struct DATARMNET0ca9d8ead7*DATARMNET54338da2ff);void -DATARMNETf4e1a29dbc(void);int DATARMNET9f106ed933(void);int DATARMNETf56cbaa2b1( +DATARMNETf4e1a29dbc(void);void DATARMNET333c107558(void);void +DATARMNET4c08c7210c(void);int DATARMNET9f106ed933(void);int DATARMNETf56cbaa2b1( void); #endif diff --git a/wlan/rmnet_wlan_genl.c b/wlan/rmnet_wlan_genl.c index 035b55a402..d8a54ebf68 100644 --- a/wlan/rmnet_wlan_genl.c +++ b/wlan/rmnet_wlan_genl.c @@ -24,7 +24,10 @@ NLA_POLICY_NESTED_ARRAY(DATARMNET19c5fce390),[DATARMNETb8afde4a5a]={.type= NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNETea4b56dc2b]={.type= NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNET8bf80e4b66]={.type= NLA_NUL_STRING,.len=IFNAMSIZ-(0xd26+209-0xdf6),},[DATARMNET44a9a789aa]={.type= -NLA_U16,},[DATARMNET149cafb1b7]={.type=NLA_U8,},}; +NLA_U16,},[DATARMNET149cafb1b7]={.type=NLA_U8,},[DATARMNET185fd3de68]={.type= +NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNETd996a18fa6]={.type= +NLA_NUL_STRING,.len=INET6_ADDRSTRLEN,},[DATARMNETd3dacf7559]={.type=NLA_U16,},[ +DATARMNETeaebe95912]={.type=NLA_U16,},}; #define DATARMNET58eca5265b(DATARMNET5aeb0ef9bc, DATARMNETbd9859b58e) \ { \ .cmd = DATARMNET5aeb0ef9bc, \ @@ -213,6 +216,47 @@ DATARMNET54338da2ff, DATARMNET54338da2ff);}static int DATARMNETa4773cb837(struct sk_buff* DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){(void) DATARMNET543491eb0f;(void)DATARMNET54338da2ff;DATARMNET078f6bd384();return +(0xd2d+202-0xdf7);}static int DATARMNET6a53c4576d(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){struct +DATARMNETe117226f58 DATARMNET3396919a68={};struct nlattr*DATARMNETef7cdd7b6b; +char*DATARMNETd7f4d7c495;if(!DATARMNET54338da2ff->attrs[DATARMNET185fd3de68]||! +DATARMNET54338da2ff->attrs[DATARMNETd996a18fa6]||!DATARMNET54338da2ff->attrs[ +DATARMNETd3dacf7559]||!DATARMNET54338da2ff->attrs[DATARMNETeaebe95912]){ +GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\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" +);return-EINVAL;}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNET185fd3de68];DATARMNETd7f4d7c495=nla_data(DATARMNETef7cdd7b6b);if(strchr +(DATARMNETd7f4d7c495,DATARMNET5fe2c6571f)){if(in6_pton(DATARMNETd7f4d7c495, +nla_len(DATARMNETef7cdd7b6b),DATARMNET3396919a68.DATARMNET815cbb4bf5.s6_addr,- +(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff +, +"\x53\x52\x43\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" +);return-EINVAL;}DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd03+244-0xdf1);}else +{if(in4_pton(DATARMNETd7f4d7c495,nla_len(DATARMNETef7cdd7b6b),(u8*)& +DATARMNET3396919a68.DATARMNETdfe430c2d6,-(0xd26+209-0xdf6),NULL)!= +(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff, +"\x53\x52\x43\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" +);return-EINVAL;}DATARMNET3396919a68.DATARMNET0d956cc77a=(0xd11+230-0xdf3);} +DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[DATARMNETd996a18fa6]; +DATARMNETd7f4d7c495=nla_data(DATARMNETef7cdd7b6b);if(strchr(DATARMNETd7f4d7c495, +DATARMNET5fe2c6571f)){if(in6_pton(DATARMNETd7f4d7c495,nla_len( +DATARMNETef7cdd7b6b),DATARMNET3396919a68.DATARMNETc3f31215b7.s6_addr,- +(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff +, +"\x44\x53\x54\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" +);return-EINVAL;}}else{if(in4_pton(DATARMNETd7f4d7c495,nla_len( +DATARMNETef7cdd7b6b),(u8*)&DATARMNET3396919a68.DATARMNET2cb607d686,- +(0xd26+209-0xdf6),NULL)!=(0xd26+209-0xdf6)){GENL_SET_ERR_MSG(DATARMNET54338da2ff +, +"\x44\x53\x54\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" +);return-EINVAL;}}DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNETd3dacf7559];DATARMNET3396919a68.DATARMNET08e913477e=nla_get_be16( +DATARMNETef7cdd7b6b);DATARMNETef7cdd7b6b=DATARMNET54338da2ff->attrs[ +DATARMNETeaebe95912];DATARMNET3396919a68.DATARMNETda7f7fa492=nla_get_be16( +DATARMNETef7cdd7b6b);DATARMNET4c1c11d8a5(&DATARMNET3396919a68);return +(0xd2d+202-0xdf7);}static int DATARMNET425149b729(struct sk_buff* +DATARMNET543491eb0f,struct genl_info*DATARMNET54338da2ff){(void) +DATARMNET543491eb0f;(void)DATARMNET54338da2ff;DATARMNET56fde5181e();return (0xd2d+202-0xdf7);}static const struct genl_ops DATARMNETf9df19988d[]={ DATARMNET58eca5265b(DATARMNET0604500302,DATARMNET72501635c8),DATARMNET58eca5265b (DATARMNET91becfb9ac,DATARMNET41dd9b14ab),DATARMNET58eca5265b( @@ -223,11 +267,13 @@ DATARMNETb86993aefb),DATARMNET58eca5265b(DATARMNET18145b00f6,DATARMNETc175a08219 DATARMNET58eca5265b(DATARMNET6d50a30ec2,DATARMNETa6aec23397),DATARMNET58eca5265b (DATARMNET2e5d7ed755,DATARMNETa4773cb837),DATARMNET58eca5265b( DATARMNETd37aaf8b58,DATARMNET16add73734),DATARMNET58eca5265b(DATARMNET3626d362d4 -,DATARMNETb318ed4796),};struct genl_family DATARMNET61e8f41aae={.name= -DATARMNET040266f460,.version=DATARMNET7c442b83bb,.maxattr=DATARMNETebcc30fe04,. -policy=DATARMNET0381a65e93,.ops=DATARMNETf9df19988d,.n_ops=ARRAY_SIZE( -DATARMNETf9df19988d),};static int __init DATARMNET7eb0fa5c8f(void){int -DATARMNET61c2303133=(0xd2d+202-0xdf7);pr_info( +,DATARMNETb318ed4796),DATARMNET58eca5265b(DATARMNET433fe7da93, +DATARMNET6a53c4576d),DATARMNET58eca5265b(DATARMNET77d31b75a3,DATARMNET425149b729 +),};struct genl_family DATARMNET61e8f41aae={.name=DATARMNET040266f460,.version= +DATARMNET7c442b83bb,.maxattr=DATARMNETebcc30fe04,.policy=DATARMNET0381a65e93,. +ops=DATARMNETf9df19988d,.n_ops=ARRAY_SIZE(DATARMNETf9df19988d),};static int +__init DATARMNET7eb0fa5c8f(void){int DATARMNET61c2303133=(0xd2d+202-0xdf7); +pr_info( "\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" ,__func__);DATARMNET61c2303133=genl_register_family(&DATARMNET61e8f41aae);if( DATARMNET61c2303133){pr_err( @@ -235,10 +281,12 @@ DATARMNET61c2303133){pr_err( ,__func__,DATARMNET61c2303133);goto DATARMNET27d4697979;}DATARMNET61c2303133= DATARMNET9f106ed933();if(DATARMNET61c2303133){pr_err( "\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" -,__func__,DATARMNET61c2303133);goto DATARMNETb042feb7e2;}return(0xd2d+202-0xdf7) -;DATARMNETb042feb7e2:genl_unregister_family(&DATARMNET61e8f41aae); -DATARMNET27d4697979:return DATARMNET61c2303133;}static void __exit -DATARMNET7a381832d5(void){int DATARMNET61c2303133;pr_info( +,__func__,DATARMNET61c2303133);goto DATARMNETb042feb7e2;}DATARMNET333c107558(); +pr_info( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x5f\x73\x65\x74\x5f\x68\x6f\x6f\x6b\x73\x20\x73\x65\x74" "\n" +,__func__);return(0xd2d+202-0xdf7);DATARMNETb042feb7e2:genl_unregister_family(& +DATARMNET61e8f41aae);DATARMNET27d4697979:return DATARMNET61c2303133;}static void + __exit DATARMNET7a381832d5(void){int DATARMNET61c2303133;pr_info( "\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" ,__func__);DATARMNET61c2303133=DATARMNETf56cbaa2b1();if(DATARMNET61c2303133) pr_err( @@ -246,5 +294,7 @@ pr_err( ,__func__,DATARMNET61c2303133);DATARMNETfae36afa03();DATARMNET61c2303133= genl_unregister_family(&DATARMNET61e8f41aae);if(DATARMNET61c2303133)pr_err( "\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" -,__func__,DATARMNET61c2303133);}MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32"); -module_init(DATARMNET7eb0fa5c8f);module_exit(DATARMNET7a381832d5); +,__func__,DATARMNET61c2303133);DATARMNET4c08c7210c();pr_info( +"\x25\x73\x28\x29\x3a\x20\x72\x6d\x6e\x65\x74\x5f\x77\x6c\x61\x6e\x5f\x75\x6e\x73\x65\x74\x5f\x68\x6f\x6f\x6b\x73\x20\x75\x6e\x73\x65\x74" "\n" +,__func__);}MODULE_LICENSE("\x47\x50\x4c\x20\x76\x32");module_init( +DATARMNET7eb0fa5c8f);module_exit(DATARMNET7a381832d5); diff --git a/wlan/rmnet_wlan_genl.h b/wlan/rmnet_wlan_genl.h index 911fb70950..dd9886e672 100644 --- a/wlan/rmnet_wlan_genl.h +++ b/wlan/rmnet_wlan_genl.h @@ -13,9 +13,11 @@ enum{DATARMNET6ea2b7cfbe,DATARMNET0604500302,DATARMNET91becfb9ac, DATARMNET14a3625b43,DATARMNET4478d3511b,DATARMNETc2d5a4e103,DATARMNET18145b00f6, DATARMNETb8857fe6d9,DATARMNET6d50a30ec2,DATARMNET2e5d7ed755,DATARMNETd37aaf8b58, -DATARMNET3626d362d4,DATARMNETce1982dccc,};enum{DATARMNET09a5930cdf, -DATARMNET4e9cd7b8bf,DATARMNETb8afde4a5a,DATARMNETea4b56dc2b,DATARMNET8bf80e4b66, -DATARMNET44a9a789aa,DATARMNET149cafb1b7,DATARMNET0bfbea52c0,}; +DATARMNET3626d362d4,DATARMNET433fe7da93,DATARMNET77d31b75a3,DATARMNETce1982dccc, +};enum{DATARMNET09a5930cdf,DATARMNET4e9cd7b8bf,DATARMNETb8afde4a5a, +DATARMNETea4b56dc2b,DATARMNET8bf80e4b66,DATARMNET44a9a789aa,DATARMNET149cafb1b7, +DATARMNET185fd3de68,DATARMNETd996a18fa6,DATARMNETd3dacf7559,DATARMNETeaebe95912, +DATARMNET0bfbea52c0,}; #define DATARMNETebcc30fe04 (DATARMNET0bfbea52c0 - (0xd26+209-0xdf6)) enum{DATARMNET0dcb7acdac,DATARMNET8c062d7709,DATARMNET93b5e3666d,}; #define DATARMNETf6bbad94a5 (DATARMNET93b5e3666d - (0xd26+209-0xdf6)) diff --git a/wlan/rmnet_wlan_main.c b/wlan/rmnet_wlan_main.c index c04f5b619d..e590207027 100644 --- a/wlan/rmnet_wlan_main.c +++ b/wlan/rmnet_wlan_main.c @@ -25,12 +25,13 @@ #include "rmnet_wlan_stats.h" #include "rmnet_wlan_fragment.h" #include "rmnet_wlan_connection.h" -static char*verinfo[]={"\x62\x31\x62\x63\x64\x66\x66\x61", -"\x61\x33\x33\x33\x36\x37\x61\x31","\x37\x34\x31\x35\x39\x32\x31\x63", -"\x33\x35\x36\x63\x34\x39\x31\x63","\x34\x64\x32\x32\x34\x33\x36\x33", -"\x61\x34\x31\x63\x39\x64\x37\x62","\x38\x66\x32\x66\x65\x64\x32\x66", -"\x63\x30\x32\x62\x61\x39\x30\x65"};module_param_array(verinfo,charp,NULL, -(0xcb7+5769-0x221c));MODULE_PARM_DESC(verinfo, +static char*verinfo[]={"\x39\x66\x33\x66\x31\x31\x33\x30", +"\x62\x31\x62\x63\x64\x66\x66\x61","\x61\x33\x33\x33\x36\x37\x61\x31", +"\x37\x34\x31\x35\x39\x32\x31\x63","\x33\x35\x36\x63\x34\x39\x31\x63", +"\x34\x64\x32\x32\x34\x33\x36\x33","\x61\x34\x31\x63\x39\x64\x37\x62", +"\x38\x66\x32\x66\x65\x64\x32\x66","\x63\x30\x32\x62\x61\x39\x30\x65"}; +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 DATARMNETaf49b04806 ((0xeb7+1158-0x132d)) @@ -44,20 +45,21 @@ DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNETf46fb02ac6);static DEFINE_HASHTABLE(DATARMNET78ed39f13b,DATARMNET6b4ac8224c);static DEFINE_MUTEX( DATARMNET954bef55d0);static DEFINE_HASHTABLE(DATARMNET133502ca0e, DATARMNET6b4ac8224c);static DEFINE_HASHTABLE(DATARMNET665d2f133f, -DATARMNET6b4ac8224c);static char DATARMNET30500ba48c[IFNAMSIZ];static char -DATARMNET755f0f0df8[IFNAMSIZ];static bool DATARMNET1e31b22eff(struct -DATARMNETb89ecedefc*DATARMNETae0905b0b3,struct DATARMNETb89ecedefc* -DATARMNETdb49f21565){if(DATARMNETae0905b0b3->DATARMNET0d956cc77a!= -DATARMNETdb49f21565->DATARMNET0d956cc77a||DATARMNETae0905b0b3-> -DATARMNET4924e79411!=DATARMNETdb49f21565->DATARMNET4924e79411)return false;if( -DATARMNETae0905b0b3->DATARMNET0d956cc77a==IPPROTO_ESP)return DATARMNETae0905b0b3 -->DATARMNET906b2ee561==DATARMNETdb49f21565->DATARMNET906b2ee561;return -DATARMNETae0905b0b3->DATARMNETf0d9de7e2f==DATARMNETdb49f21565-> -DATARMNETf0d9de7e2f;}static int DATARMNET0b72d312f9(struct DATARMNETb89ecedefc* -DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff)__must_hold(& -DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5; -rcu_read_lock();if(DATARMNET4eafcdee07(DATARMNET3396919a68)){rcu_read_unlock(); -GENL_SET_ERR_MSG(DATARMNET54338da2ff, +DATARMNET6b4ac8224c);static DEFINE_MUTEX(DATARMNET38726379d1);static +DEFINE_SPINLOCK(DATARMNETe6ee7c273e);static char DATARMNET30500ba48c[IFNAMSIZ]; +static char DATARMNET755f0f0df8[IFNAMSIZ];struct DATARMNETe117226f58* +DATARMNETcde6e442f5;static bool DATARMNET1e31b22eff(struct DATARMNETb89ecedefc* +DATARMNETae0905b0b3,struct DATARMNETb89ecedefc*DATARMNETdb49f21565){if( +DATARMNETae0905b0b3->DATARMNET0d956cc77a!=DATARMNETdb49f21565-> +DATARMNET0d956cc77a||DATARMNETae0905b0b3->DATARMNET4924e79411!= +DATARMNETdb49f21565->DATARMNET4924e79411)return false;if(DATARMNETae0905b0b3-> +DATARMNET0d956cc77a==IPPROTO_ESP)return DATARMNETae0905b0b3->DATARMNET906b2ee561 +==DATARMNETdb49f21565->DATARMNET906b2ee561;return DATARMNETae0905b0b3-> +DATARMNETf0d9de7e2f==DATARMNETdb49f21565->DATARMNETf0d9de7e2f;}static int +DATARMNET0b72d312f9(struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct +genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET63a2b7773e){struct +DATARMNET745f724205*DATARMNET63b1a086d5;rcu_read_lock();if(DATARMNET4eafcdee07( +DATARMNET3396919a68)){rcu_read_unlock();GENL_SET_ERR_MSG(DATARMNET54338da2ff, "\x54\x75\x70\x6c\x65\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74" );return-EEXIST;}rcu_read_unlock();DATARMNET63b1a086d5=kzalloc(sizeof(* DATARMNET63b1a086d5),GFP_KERNEL);if(!DATARMNET63b1a086d5){GENL_SET_ERR_MSG( @@ -192,14 +194,32 @@ return-ESRCH;}static bool DATARMNETa96214b53c(__be16 DATARMNETf0d9de7e2f) __must_hold(RCU){struct DATARMNETda06413d0d*DATARMNET63b1a086d5; hash_for_each_possible_rcu(DATARMNET665d2f133f,DATARMNET63b1a086d5, DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if(DATARMNET63b1a086d5-> -DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}return false;}int -DATARMNET59b8376224(__be16 DATARMNETf0d9de7e2f,struct genl_info* -DATARMNET54338da2ff)__must_hold(&DATARMNET954bef55d0){struct DATARMNETda06413d0d -*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a; -hash_for_each_possible_safe(DATARMNET665d2f133f,DATARMNET63b1a086d5, -DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f){if( -DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu(& -DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5, +DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f)return true;}return false;}static int +DATARMNET51f60f2fd3(struct DATARMNETe117226f58*DATARMNET3396919a68)__must_hold(& +DATARMNET38726379d1){struct DATARMNETe117226f58*DATARMNET28d35f5346;struct +DATARMNETe117226f58*DATARMNETe302a1b49b;unsigned long DATARMNET0861dd728f; +DATARMNET28d35f5346=kzalloc(sizeof(*DATARMNET28d35f5346),GFP_KERNEL);if(! +DATARMNET28d35f5346){return-ENOMEM;}memcpy(DATARMNET28d35f5346, +DATARMNET3396919a68,sizeof(*DATARMNET28d35f5346));spin_lock_irqsave(& +DATARMNETe6ee7c273e,DATARMNET0861dd728f);DATARMNETe302a1b49b= +rcu_dereference_protected(DATARMNETcde6e442f5,lockdep_is_held(& +DATARMNETe6ee7c273e));rcu_assign_pointer(DATARMNETcde6e442f5,DATARMNET28d35f5346 +);spin_unlock_irqrestore(&DATARMNETe6ee7c273e,DATARMNET0861dd728f); +synchronize_rcu();if(DATARMNETe302a1b49b)kfree(DATARMNETe302a1b49b);return +(0xd2d+202-0xdf7);}static int DATARMNETb9c7621157(void)__must_hold(& +DATARMNET38726379d1){struct DATARMNETe117226f58*DATARMNETe302a1b49b;unsigned +long DATARMNET0861dd728f;spin_lock_irqsave(&DATARMNETe6ee7c273e, +DATARMNET0861dd728f);DATARMNETe302a1b49b=rcu_dereference_protected( +DATARMNETcde6e442f5,lockdep_is_held(&DATARMNETe6ee7c273e));rcu_assign_pointer( +DATARMNETcde6e442f5,NULL);spin_unlock_irqrestore(&DATARMNETe6ee7c273e, +DATARMNET0861dd728f);synchronize_rcu();if(DATARMNETe302a1b49b)kfree( +DATARMNETe302a1b49b);return(0xd2d+202-0xdf7);}int DATARMNET59b8376224(__be16 +DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff)__must_hold(& +DATARMNET954bef55d0){struct DATARMNETda06413d0d*DATARMNET63b1a086d5;struct +hlist_node*DATARMNET0386f6f82a;hash_for_each_possible_safe(DATARMNET665d2f133f, +DATARMNET63b1a086d5,DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNETf0d9de7e2f) +{if(DATARMNET63b1a086d5->DATARMNETf0d9de7e2f==DATARMNETf0d9de7e2f){hash_del_rcu( +&DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5, DATARMNET28bfe9e6ad);DATARMNET5ca94dbc3c(DATARMNETa726eebea4);return (0xd2d+202-0xdf7);}}return(0xd2d+202-0xdf7);}int DATARMNET0b12e969c5(__be16 DATARMNETf0d9de7e2f,struct genl_info*DATARMNET54338da2ff)__must_hold(& @@ -314,16 +334,17 @@ DATARMNET268a8314cf;if(!DATARMNET755f0f0df8[(0xd2d+202-0xdf7)])return DATARMNET2c4484aef5);if(!DATARMNET268a8314cf)DATARMNET755f0f0df8[ (0xd2d+202-0xdf7)]=(0xd2d+202-0xdf7);return DATARMNET268a8314cf;}static void DATARMNETbb4efa5b3d(void){DATARMNET116f9a46aa();DATARMNET1f36d4813c(); -DATARMNET8c0e010dfb();DATARMNETe5b03fe375();DATARMNETad43e44c7e();}static int -DATARMNET38ebe8f319(struct sk_buff*DATARMNET543491eb0f,int DATARMNET1faf88208b){ -if(!pskb_may_pull(DATARMNET543491eb0f,DATARMNET1faf88208b))return-ENOMEM;if(! -skb_cloned(DATARMNET543491eb0f)||skb_clone_writable(DATARMNET543491eb0f, -DATARMNET1faf88208b))return(0xd2d+202-0xdf7);return pskb_expand_head( -DATARMNET543491eb0f,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),GFP_ATOMIC);}static void - DATARMNET9a8d756527(__sum16*DATARMNETc2284e5688,struct sk_buff* -DATARMNET543491eb0f,__be32 DATARMNET9080427d4e,__be32 DATARMNETc0e620c987,bool -DATARMNETcb0345b337){if(DATARMNET543491eb0f->ip_summed!=CHECKSUM_PARTIAL){ -csum_replace4(DATARMNETc2284e5688,DATARMNET9080427d4e,DATARMNETc0e620c987);if( +DATARMNET8c0e010dfb();DATARMNETe5b03fe375();DATARMNETad43e44c7e(); +DATARMNET56fde5181e();}static int DATARMNET38ebe8f319(struct sk_buff* +DATARMNET543491eb0f,int DATARMNET1faf88208b){if(!pskb_may_pull( +DATARMNET543491eb0f,DATARMNET1faf88208b))return-ENOMEM;if(!skb_cloned( +DATARMNET543491eb0f)||skb_clone_writable(DATARMNET543491eb0f,DATARMNET1faf88208b +))return(0xd2d+202-0xdf7);return pskb_expand_head(DATARMNET543491eb0f, +(0xd2d+202-0xdf7),(0xd2d+202-0xdf7),GFP_ATOMIC);}static void DATARMNET9a8d756527 +(__sum16*DATARMNETc2284e5688,struct sk_buff*DATARMNET543491eb0f,__be32 +DATARMNET9080427d4e,__be32 DATARMNETc0e620c987,bool DATARMNETcb0345b337){if( +DATARMNET543491eb0f->ip_summed!=CHECKSUM_PARTIAL){csum_replace4( +DATARMNETc2284e5688,DATARMNET9080427d4e,DATARMNETc0e620c987);if( DATARMNET543491eb0f->ip_summed==CHECKSUM_COMPLETE&&DATARMNETcb0345b337){ DATARMNET543491eb0f->csum=csum_sub(~(DATARMNET543491eb0f->csum),(__wsum) DATARMNET9080427d4e);DATARMNET543491eb0f->csum=~csum_add(DATARMNET543491eb0f-> @@ -497,7 +518,13 @@ DATARMNET611d08d671+sizeof(*DATARMNET75be5f3406),sizeof(*DATARMNETdf2dbc641f),& DATARMNET6c56902362);if(!DATARMNETdf2dbc641f)return false;return!!(* DATARMNETdf2dbc641f);}bool DATARMNET0a4704e5e0(struct DATARMNETb89ecedefc* DATARMNET3396919a68){return DATARMNETa96214b53c(DATARMNET3396919a68-> -DATARMNETf0d9de7e2f);}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return +DATARMNETf0d9de7e2f);}int DATARMNET4c1c11d8a5(struct DATARMNETe117226f58* +DATARMNET3396919a68){int DATARMNET268a8314cf;mutex_lock(&DATARMNET38726379d1); +DATARMNET268a8314cf=DATARMNET51f60f2fd3(DATARMNET3396919a68);mutex_unlock(& +DATARMNET38726379d1);return DATARMNET268a8314cf;}int DATARMNET56fde5181e(void){ +int DATARMNET268a8314cf;mutex_lock(&DATARMNET38726379d1);DATARMNET268a8314cf= +DATARMNETb9c7621157();mutex_unlock(&DATARMNET38726379d1);return +DATARMNET268a8314cf;}int DATARMNET078f6bd384(void){DATARMNETbb4efa5b3d();return (0xd2d+202-0xdf7);}void DATARMNETfae36afa03(void){DATARMNETbb4efa5b3d();}char* DATARMNET934406764d(void){return DATARMNET30500ba48c;}char*DATARMNETe447822105( void){return DATARMNET755f0f0df8;} diff --git a/wlan/rmnet_wlan_stats.h b/wlan/rmnet_wlan_stats.h index fe3927a30f..96284445be 100644 --- a/wlan/rmnet_wlan_stats.h +++ b/wlan/rmnet_wlan_stats.h @@ -14,19 +14,19 @@ DATARMNETf4c2a83526,DATARMNET591885a019,DATARMNETd8273aa7e1,DATARMNET7a58a5c1fc, DATARMNETba232077da,DATARMNETe75ad1a949,DATARMNETd691057b85,DATARMNETd1ad664d00, DATARMNETef2af4f071,DATARMNETebc1b87b7d,DATARMNET21bdbe6a27,DATARMNET90782e08cf, DATARMNETb7c9f010b2,DATARMNET990edaea89,DATARMNETa726eebea4,DATARMNET0981317411, -DATARMNETb59245fef4,DATARMNETf1f7e2c408,DATARMNETc6bf075f65,};enum{ -DATARMNETc1b437465b,DATARMNET04311361a2,DATARMNET43a65c0be7,DATARMNET13bbe5f5c5, -DATARMNETd1c349b9fc,DATARMNETfa4b3dd44a,DATARMNET72ab5e86d8,DATARMNET0e6bd55b8b, -DATARMNET64aecaa865,DATARMNET72f4fdd48a,DATARMNET9cff15f94d,DATARMNETbf6e6853f9, -DATARMNETa0da722329,DATARMNET729e252fb9,DATARMNET6b0ed53aab,DATARMNET22ac945cae, -DATARMNET97b44d0c09,DATARMNETf954265acb,DATARMNET15454f969d,DATARMNET9bdb1c4072, -DATARMNET9a57ef32d3,DATARMNET9a940d93dc,DATARMNETf326b7c906,DATARMNET544d78ede7, -DATARMNET5abdc89190,DATARMNET101af46c1c,DATARMNET0b9541c9b3,DATARMNET0078f1d36d, -DATARMNET661bdeccd4,DATARMNET28e7704d13,DATARMNET7c6c30b7d2,DATARMNET39d80cc483, -DATARMNET1be480319c,DATARMNET15d1a78b15,DATARMNETddb1bc27cb,DATARMNETc730640bf7, -DATARMNET521b065310,DATARMNET8a15bcdcc7,DATARMNET0978ff973f,DATARMNETc52168a41e, -DATARMNET666fc9a664,DATARMNET7803c877c0,DATARMNET4c5aeeb476,DATARMNETfe1714cc0e, -};void DATARMNET5ca94dbc3c(u32 DATARMNET248f120dd5);void DATARMNET17f6bc1be5(u32 - DATARMNET248f120dd5); +DATARMNETb59245fef4,DATARMNETf1f7e2c408,DATARMNETc2cade1d75,DATARMNETc6bf075f65, +};enum{DATARMNETc1b437465b,DATARMNET04311361a2,DATARMNET43a65c0be7, +DATARMNET13bbe5f5c5,DATARMNETd1c349b9fc,DATARMNETfa4b3dd44a,DATARMNET72ab5e86d8, +DATARMNET0e6bd55b8b,DATARMNET64aecaa865,DATARMNET72f4fdd48a,DATARMNET9cff15f94d, +DATARMNETbf6e6853f9,DATARMNETa0da722329,DATARMNET729e252fb9,DATARMNET6b0ed53aab, +DATARMNET22ac945cae,DATARMNET97b44d0c09,DATARMNETf954265acb,DATARMNET15454f969d, +DATARMNET9bdb1c4072,DATARMNET9a57ef32d3,DATARMNET9a940d93dc,DATARMNETf326b7c906, +DATARMNET544d78ede7,DATARMNET5abdc89190,DATARMNET101af46c1c,DATARMNET0b9541c9b3, +DATARMNET0078f1d36d,DATARMNET661bdeccd4,DATARMNET28e7704d13,DATARMNET7c6c30b7d2, +DATARMNET39d80cc483,DATARMNET1be480319c,DATARMNET15d1a78b15,DATARMNETddb1bc27cb, +DATARMNETc730640bf7,DATARMNET521b065310,DATARMNET8a15bcdcc7,DATARMNET0978ff973f, +DATARMNETc52168a41e,DATARMNET666fc9a664,DATARMNET7803c877c0,DATARMNET4c5aeeb476, +DATARMNETfe1714cc0e,};void DATARMNET5ca94dbc3c(u32 DATARMNET248f120dd5);void +DATARMNET17f6bc1be5(u32 DATARMNET248f120dd5); #endif