@@ -7406,6 +7406,27 @@ static struct rtnl_af_ops inet6_ops __read_mostly = {
74067406 .set_link_af = inet6_set_link_af ,
74077407};
74087408
7409+ static const struct rtnl_msg_handler addrconf_rtnl_msg_handlers [] __initconst_or_module = {
7410+ {.owner = THIS_MODULE , .protocol = PF_INET6 , .msgtype = RTM_GETLINK ,
7411+ .dumpit = inet6_dump_ifinfo , .flags = RTNL_FLAG_DUMP_UNLOCKED },
7412+ {.owner = THIS_MODULE , .protocol = PF_INET6 , .msgtype = RTM_NEWADDR ,
7413+ .doit = inet6_rtm_newaddr },
7414+ {.owner = THIS_MODULE , .protocol = PF_INET6 , .msgtype = RTM_DELADDR ,
7415+ .doit = inet6_rtm_deladdr },
7416+ {.owner = THIS_MODULE , .protocol = PF_INET6 , .msgtype = RTM_GETADDR ,
7417+ .doit = inet6_rtm_getaddr , .dumpit = inet6_dump_ifaddr ,
7418+ .flags = RTNL_FLAG_DOIT_UNLOCKED | RTNL_FLAG_DUMP_UNLOCKED },
7419+ {.owner = THIS_MODULE , .protocol = PF_INET6 , .msgtype = RTM_GETMULTICAST ,
7420+ .dumpit = inet6_dump_ifmcaddr ,
7421+ .flags = RTNL_FLAG_DUMP_UNLOCKED },
7422+ {.owner = THIS_MODULE , .protocol = PF_INET6 , .msgtype = RTM_GETANYCAST ,
7423+ .dumpit = inet6_dump_ifacaddr ,
7424+ .flags = RTNL_FLAG_DUMP_UNLOCKED },
7425+ {.owner = THIS_MODULE , .protocol = PF_INET6 , .msgtype = RTM_GETNETCONF ,
7426+ .doit = inet6_netconf_get_devconf , .dumpit = inet6_netconf_dump_devconf ,
7427+ .flags = RTNL_FLAG_DOIT_UNLOCKED | RTNL_FLAG_DUMP_UNLOCKED },
7428+ };
7429+
74097430/*
74107431 * Init / cleanup code
74117432 */
@@ -7449,42 +7470,10 @@ int __init addrconf_init(void)
74497470
74507471 rtnl_af_register (& inet6_ops );
74517472
7452- err = rtnl_register_module (THIS_MODULE , PF_INET6 , RTM_GETLINK ,
7453- NULL , inet6_dump_ifinfo , RTNL_FLAG_DUMP_UNLOCKED );
7454- if (err < 0 )
7473+ err = rtnl_register_many (addrconf_rtnl_msg_handlers );
7474+ if (err )
74557475 goto errout ;
74567476
7457- err = rtnl_register_module (THIS_MODULE , PF_INET6 , RTM_NEWADDR ,
7458- inet6_rtm_newaddr , NULL , 0 );
7459- if (err < 0 )
7460- goto errout ;
7461- err = rtnl_register_module (THIS_MODULE , PF_INET6 , RTM_DELADDR ,
7462- inet6_rtm_deladdr , NULL , 0 );
7463- if (err < 0 )
7464- goto errout ;
7465- err = rtnl_register_module (THIS_MODULE , PF_INET6 , RTM_GETADDR ,
7466- inet6_rtm_getaddr , inet6_dump_ifaddr ,
7467- RTNL_FLAG_DOIT_UNLOCKED |
7468- RTNL_FLAG_DUMP_UNLOCKED );
7469- if (err < 0 )
7470- goto errout ;
7471- err = rtnl_register_module (THIS_MODULE , PF_INET6 , RTM_GETMULTICAST ,
7472- NULL , inet6_dump_ifmcaddr ,
7473- RTNL_FLAG_DUMP_UNLOCKED );
7474- if (err < 0 )
7475- goto errout ;
7476- err = rtnl_register_module (THIS_MODULE , PF_INET6 , RTM_GETANYCAST ,
7477- NULL , inet6_dump_ifacaddr ,
7478- RTNL_FLAG_DUMP_UNLOCKED );
7479- if (err < 0 )
7480- goto errout ;
7481- err = rtnl_register_module (THIS_MODULE , PF_INET6 , RTM_GETNETCONF ,
7482- inet6_netconf_get_devconf ,
7483- inet6_netconf_dump_devconf ,
7484- RTNL_FLAG_DOIT_UNLOCKED |
7485- RTNL_FLAG_DUMP_UNLOCKED );
7486- if (err < 0 )
7487- goto errout ;
74887477 err = ipv6_addr_label_rtnl_register ();
74897478 if (err < 0 )
74907479 goto errout ;
0 commit comments