|
@@ -57,18 +57,14 @@ DATARMNET3396919a68,sizeof(*DATARMNET3396919a68));INIT_HLIST_NODE(&
|
|
|
DATARMNET63b1a086d5->DATARMNETe8608dd267);hash_add_rcu(DATARMNET1903907456,&
|
|
|
DATARMNET63b1a086d5->DATARMNETe8608dd267,DATARMNET3396919a68->
|
|
|
DATARMNETf0d9de7e2f);DATARMNET5ca94dbc3c(DATARMNET12d881921a);return
|
|
|
-(0xd2d+202-0xdf7);}static void DATARMNET440ec83e44(struct rcu_head*
|
|
|
-DATARMNET28bfe9e6ad){struct DATARMNET745f724205*DATARMNET63b1a086d5;
|
|
|
-DATARMNET63b1a086d5=container_of(DATARMNET28bfe9e6ad,struct DATARMNET745f724205,
|
|
|
-DATARMNET28bfe9e6ad);if(DATARMNET63b1a086d5)kfree(DATARMNET63b1a086d5);}static
|
|
|
-int DATARMNET79343e3135(struct DATARMNETb89ecedefc*DATARMNET3396919a68,struct
|
|
|
-genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNET63a2b7773e){struct
|
|
|
-DATARMNET745f724205*DATARMNET63b1a086d5;struct hlist_node*DATARMNET0386f6f82a;
|
|
|
-hash_for_each_possible_safe(DATARMNET1903907456,DATARMNET63b1a086d5,
|
|
|
-DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNET3396919a68->DATARMNETf0d9de7e2f
|
|
|
-){if(DATARMNET1e31b22eff(&DATARMNET63b1a086d5->DATARMNET54338da2ff,
|
|
|
-DATARMNET3396919a68)){hash_del_rcu(&DATARMNET63b1a086d5->DATARMNETe8608dd267);
|
|
|
-call_rcu(&DATARMNET63b1a086d5->DATARMNET28bfe9e6ad,DATARMNET440ec83e44);
|
|
|
+(0xd2d+202-0xdf7);}static int DATARMNET79343e3135(struct DATARMNETb89ecedefc*
|
|
|
+DATARMNET3396919a68,struct genl_info*DATARMNET54338da2ff)__must_hold(&
|
|
|
+DATARMNET63a2b7773e){struct DATARMNET745f724205*DATARMNET63b1a086d5;struct
|
|
|
+hlist_node*DATARMNET0386f6f82a;hash_for_each_possible_safe(DATARMNET1903907456,
|
|
|
+DATARMNET63b1a086d5,DATARMNET0386f6f82a,DATARMNETe8608dd267,DATARMNET3396919a68
|
|
|
+->DATARMNETf0d9de7e2f){if(DATARMNET1e31b22eff(&DATARMNET63b1a086d5->
|
|
|
+DATARMNET54338da2ff,DATARMNET3396919a68)){hash_del_rcu(&DATARMNET63b1a086d5->
|
|
|
+DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,DATARMNET28bfe9e6ad);
|
|
|
DATARMNET5ca94dbc3c(DATARMNET9f24b86462);return(0xd2d+202-0xdf7);}}
|
|
|
GENL_SET_ERR_MSG(DATARMNET54338da2ff,
|
|
|
"\x4e\x6f\x20\x73\x75\x63\x68\x20\x74\x75\x70\x6c\x65");return-ESRCH;}static
|
|
@@ -76,41 +72,40 @@ void DATARMNETad43e44c7e(void){struct DATARMNET745f724205*DATARMNET63b1a086d5;
|
|
|
struct hlist_node*DATARMNET0386f6f82a;int DATARMNET5c2fd31d7b;mutex_lock(&
|
|
|
DATARMNET63a2b7773e);hash_for_each_safe(DATARMNET1903907456,DATARMNET5c2fd31d7b,
|
|
|
DATARMNET0386f6f82a,DATARMNET63b1a086d5,DATARMNETe8608dd267){hash_del_rcu(&
|
|
|
-DATARMNET63b1a086d5->DATARMNETe8608dd267);call_rcu(&DATARMNET63b1a086d5->
|
|
|
-DATARMNET28bfe9e6ad,DATARMNET440ec83e44);}mutex_unlock(&DATARMNET63a2b7773e);}
|
|
|
-static bool DATARMNET55aac1386b(struct DATARMNET8d3c2559ca*DATARMNET1476c48228,
|
|
|
-struct DATARMNET8d3c2559ca*DATARMNET57a0f36a25){struct in6_addr
|
|
|
-DATARMNET4c8c2ca74e={.s6_addr32={4294967295,4294967295,(0xd2d+202-0xdf7),
|
|
|
-(0xd2d+202-0xdf7)},};if(DATARMNET1476c48228->DATARMNET0d956cc77a!=
|
|
|
-DATARMNET57a0f36a25->DATARMNET0d956cc77a)return false;if(DATARMNET1476c48228->
|
|
|
-DATARMNET0d956cc77a==(0xd11+230-0xdf3))return DATARMNET1476c48228->
|
|
|
-DATARMNET0dc14167a1==DATARMNET57a0f36a25->DATARMNET0dc14167a1;return!
|
|
|
-ipv6_masked_addr_cmp(&DATARMNET1476c48228->DATARMNET5700daac01,&
|
|
|
-DATARMNET4c8c2ca74e,&DATARMNET57a0f36a25->DATARMNET5700daac01);}static struct
|
|
|
-DATARMNET41b426061d*DATARMNETcc0a01df2a(struct DATARMNET8d3c2559ca*
|
|
|
-DATARMNET54338da2ff)__must_hold(RCU){struct DATARMNET41b426061d*
|
|
|
-DATARMNET63b1a086d5;hash_for_each_possible_rcu(DATARMNET78ed39f13b,
|
|
|
-DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff->DATARMNET0dc14167a1
|
|
|
-){if(DATARMNET55aac1386b(&DATARMNET63b1a086d5->DATARMNET7ed5754a5c,
|
|
|
-DATARMNET54338da2ff))return DATARMNET63b1a086d5;}return NULL;}static int
|
|
|
-DATARMNETe98553a8fc(struct notifier_block*DATARMNET272c159b3c,unsigned long
|
|
|
-DATARMNET7f045a1e6e,void*data){struct net_device*DATARMNET00dcb79bc4=
|
|
|
-netdev_notifier_info_to_dev(data);struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e
|
|
|
-;DATARMNET2d4b4cfc9e=container_of(DATARMNET272c159b3c,struct DATARMNET41b426061d
|
|
|
-,DATARMNET272c159b3c);if(!DATARMNET00dcb79bc4||strncmp(DATARMNET00dcb79bc4->name
|
|
|
-,DATARMNET2d4b4cfc9e->DATARMNET852d4d00e2,IFNAMSIZ))return NOTIFY_DONE;switch(
|
|
|
-DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:if(DATARMNET2d4b4cfc9e->
|
|
|
-DATARMNET7ed5754a5c.DATARMNET57656f6f2f){dev_put(DATARMNET2d4b4cfc9e->
|
|
|
-DATARMNET7ed5754a5c.DATARMNET57656f6f2f);WRITE_ONCE(DATARMNET2d4b4cfc9e->
|
|
|
-DATARMNET7ed5754a5c.DATARMNET57656f6f2f,NULL);}break;case NETDEV_REGISTER:if(!
|
|
|
-DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f){dev_hold(
|
|
|
-DATARMNET00dcb79bc4);WRITE_ONCE(DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.
|
|
|
-DATARMNET57656f6f2f,DATARMNET00dcb79bc4);}break;default:break;}return
|
|
|
-NOTIFY_DONE;}static int DATARMNET1ac13d5a2a(struct DATARMNET8d3c2559ca*
|
|
|
-DATARMNET7ed5754a5c,struct genl_info*DATARMNET54338da2ff)__must_hold(&
|
|
|
-DATARMNETf46fb02ac6){struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e;int
|
|
|
-DATARMNET268a8314cf;rcu_read_lock();DATARMNET2d4b4cfc9e=DATARMNETcc0a01df2a(
|
|
|
-DATARMNET7ed5754a5c);if(DATARMNET2d4b4cfc9e){GENL_SET_ERR_MSG(
|
|
|
+DATARMNET63b1a086d5->DATARMNETe8608dd267);kfree_rcu(DATARMNET63b1a086d5,
|
|
|
+DATARMNET28bfe9e6ad);}mutex_unlock(&DATARMNET63a2b7773e);}static bool
|
|
|
+DATARMNET55aac1386b(struct DATARMNET8d3c2559ca*DATARMNET1476c48228,struct
|
|
|
+DATARMNET8d3c2559ca*DATARMNET57a0f36a25){struct in6_addr DATARMNET4c8c2ca74e={.
|
|
|
+s6_addr32={4294967295,4294967295,(0xd2d+202-0xdf7),(0xd2d+202-0xdf7)},};if(
|
|
|
+DATARMNET1476c48228->DATARMNET0d956cc77a!=DATARMNET57a0f36a25->
|
|
|
+DATARMNET0d956cc77a)return false;if(DATARMNET1476c48228->DATARMNET0d956cc77a==
|
|
|
+(0xd11+230-0xdf3))return DATARMNET1476c48228->DATARMNET0dc14167a1==
|
|
|
+DATARMNET57a0f36a25->DATARMNET0dc14167a1;return!ipv6_masked_addr_cmp(&
|
|
|
+DATARMNET1476c48228->DATARMNET5700daac01,&DATARMNET4c8c2ca74e,&
|
|
|
+DATARMNET57a0f36a25->DATARMNET5700daac01);}static struct DATARMNET41b426061d*
|
|
|
+DATARMNETcc0a01df2a(struct DATARMNET8d3c2559ca*DATARMNET54338da2ff)__must_hold(
|
|
|
+RCU){struct DATARMNET41b426061d*DATARMNET63b1a086d5;hash_for_each_possible_rcu(
|
|
|
+DATARMNET78ed39f13b,DATARMNET63b1a086d5,DATARMNETe8608dd267,DATARMNET54338da2ff
|
|
|
+->DATARMNET0dc14167a1){if(DATARMNET55aac1386b(&DATARMNET63b1a086d5->
|
|
|
+DATARMNET7ed5754a5c,DATARMNET54338da2ff))return DATARMNET63b1a086d5;}return NULL
|
|
|
+;}static int DATARMNETe98553a8fc(struct notifier_block*DATARMNET272c159b3c,
|
|
|
+unsigned long DATARMNET7f045a1e6e,void*data){struct net_device*
|
|
|
+DATARMNET00dcb79bc4=netdev_notifier_info_to_dev(data);struct DATARMNET41b426061d
|
|
|
+*DATARMNET2d4b4cfc9e;DATARMNET2d4b4cfc9e=container_of(DATARMNET272c159b3c,struct
|
|
|
+ DATARMNET41b426061d,DATARMNET272c159b3c);if(!DATARMNET00dcb79bc4||strncmp(
|
|
|
+DATARMNET00dcb79bc4->name,DATARMNET2d4b4cfc9e->DATARMNET852d4d00e2,IFNAMSIZ))
|
|
|
+return NOTIFY_DONE;switch(DATARMNET7f045a1e6e){case NETDEV_UNREGISTER:if(
|
|
|
+DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f){dev_put(
|
|
|
+DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f);WRITE_ONCE(
|
|
|
+DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f,NULL);}break;case
|
|
|
+NETDEV_REGISTER:if(!DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c.DATARMNET57656f6f2f
|
|
|
+){dev_hold(DATARMNET00dcb79bc4);WRITE_ONCE(DATARMNET2d4b4cfc9e->
|
|
|
+DATARMNET7ed5754a5c.DATARMNET57656f6f2f,DATARMNET00dcb79bc4);}break;default:
|
|
|
+break;}return NOTIFY_DONE;}static int DATARMNET1ac13d5a2a(struct
|
|
|
+DATARMNET8d3c2559ca*DATARMNET7ed5754a5c,struct genl_info*DATARMNET54338da2ff)
|
|
|
+__must_hold(&DATARMNETf46fb02ac6){struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e
|
|
|
+;int DATARMNET268a8314cf;rcu_read_lock();DATARMNET2d4b4cfc9e=DATARMNETcc0a01df2a
|
|
|
+(DATARMNET7ed5754a5c);if(DATARMNET2d4b4cfc9e){GENL_SET_ERR_MSG(
|
|
|
DATARMNET54338da2ff,
|
|
|
"\x46\x57\x44\x20\x69\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\x6e\x20\x61\x6c\x72\x65\x61\x64\x79\x20\x70\x72\x65\x73\x65\x6e\x74"
|
|
|
);rcu_read_unlock();return-EEXIST;}rcu_read_unlock();DATARMNET2d4b4cfc9e=kzalloc
|
|
@@ -129,17 +124,13 @@ DATARMNET54338da2ff,
|
|
|
);kfree(DATARMNET2d4b4cfc9e);return DATARMNET268a8314cf;}INIT_HLIST_NODE(&
|
|
|
DATARMNET2d4b4cfc9e->DATARMNETe8608dd267);hash_add_rcu(DATARMNET78ed39f13b,&
|
|
|
DATARMNET2d4b4cfc9e->DATARMNETe8608dd267,DATARMNET7ed5754a5c->
|
|
|
-DATARMNET0dc14167a1);return(0xd2d+202-0xdf7);}static void DATARMNET70718e4fdd(
|
|
|
-struct rcu_head*DATARMNET28bfe9e6ad){struct DATARMNET41b426061d*
|
|
|
-DATARMNET63b1a086d5;DATARMNET63b1a086d5=container_of(DATARMNET28bfe9e6ad,struct
|
|
|
-DATARMNET41b426061d,DATARMNET28bfe9e6ad);if(DATARMNET63b1a086d5)kfree(
|
|
|
-DATARMNET63b1a086d5);}static int DATARMNET6518a28641(struct DATARMNET41b426061d*
|
|
|
-DATARMNET2d4b4cfc9e)__must_hold(&DATARMNETf46fb02ac6){int DATARMNET268a8314cf;
|
|
|
-DATARMNET268a8314cf=unregister_netdevice_notifier(&DATARMNET2d4b4cfc9e->
|
|
|
-DATARMNET272c159b3c);if(DATARMNET268a8314cf)return DATARMNET268a8314cf;
|
|
|
-hash_del_rcu(&DATARMNET2d4b4cfc9e->DATARMNETe8608dd267);DATARMNETedae8262e1(&
|
|
|
-DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c);call_rcu(&DATARMNET2d4b4cfc9e->
|
|
|
-DATARMNET28bfe9e6ad,DATARMNET70718e4fdd);return DATARMNET268a8314cf;}static int
|
|
|
+DATARMNET0dc14167a1);return(0xd2d+202-0xdf7);}static int DATARMNET6518a28641(
|
|
|
+struct DATARMNET41b426061d*DATARMNET2d4b4cfc9e)__must_hold(&DATARMNETf46fb02ac6)
|
|
|
+{int DATARMNET268a8314cf;DATARMNET268a8314cf=unregister_netdevice_notifier(&
|
|
|
+DATARMNET2d4b4cfc9e->DATARMNET272c159b3c);if(DATARMNET268a8314cf)return
|
|
|
+DATARMNET268a8314cf;hash_del_rcu(&DATARMNET2d4b4cfc9e->DATARMNETe8608dd267);
|
|
|
+DATARMNETedae8262e1(&DATARMNET2d4b4cfc9e->DATARMNET7ed5754a5c);kfree_rcu(
|
|
|
+DATARMNET2d4b4cfc9e,DATARMNET28bfe9e6ad);return DATARMNET268a8314cf;}static int
|
|
|
DATARMNET6b6be8e27f(struct DATARMNET8d3c2559ca*DATARMNET7ed5754a5c,struct
|
|
|
genl_info*DATARMNET54338da2ff)__must_hold(&DATARMNETf46fb02ac6){struct
|
|
|
DATARMNET41b426061d*DATARMNET2d4b4cfc9e;int DATARMNET268a8314cf;rcu_read_lock();
|