@@ -6843,41 +6843,44 @@ static struct pernet_operations rtnetlink_net_ops = {
68436843 .exit = rtnetlink_net_exit ,
68446844};
68456845
6846+ static const struct rtnl_msg_handler rtnetlink_rtnl_msg_handlers [] __initconst = {
6847+ {.msgtype = RTM_NEWLINK , .doit = rtnl_newlink },
6848+ {.msgtype = RTM_DELLINK , .doit = rtnl_dellink },
6849+ {.msgtype = RTM_GETLINK , .doit = rtnl_getlink ,
6850+ .dumpit = rtnl_dump_ifinfo , .flags = RTNL_FLAG_DUMP_SPLIT_NLM_DONE },
6851+ {.msgtype = RTM_SETLINK , .doit = rtnl_setlink },
6852+ {.msgtype = RTM_GETADDR , .dumpit = rtnl_dump_all },
6853+ {.msgtype = RTM_GETROUTE , .dumpit = rtnl_dump_all },
6854+ {.msgtype = RTM_GETNETCONF , .dumpit = rtnl_dump_all },
6855+ {.msgtype = RTM_GETSTATS , .doit = rtnl_stats_get ,
6856+ .dumpit = rtnl_stats_dump },
6857+ {.msgtype = RTM_SETSTATS , .doit = rtnl_stats_set },
6858+ {.msgtype = RTM_NEWLINKPROP , .doit = rtnl_newlinkprop },
6859+ {.msgtype = RTM_DELLINKPROP , .doit = rtnl_dellinkprop },
6860+ {.protocol = PF_BRIDGE , .msgtype = RTM_GETLINK ,
6861+ .dumpit = rtnl_bridge_getlink },
6862+ {.protocol = PF_BRIDGE , .msgtype = RTM_DELLINK ,
6863+ .doit = rtnl_bridge_dellink },
6864+ {.protocol = PF_BRIDGE , .msgtype = RTM_SETLINK ,
6865+ .doit = rtnl_bridge_setlink },
6866+ {.protocol = PF_BRIDGE , .msgtype = RTM_NEWNEIGH , .doit = rtnl_fdb_add },
6867+ {.protocol = PF_BRIDGE , .msgtype = RTM_DELNEIGH , .doit = rtnl_fdb_del ,
6868+ .flags = RTNL_FLAG_BULK_DEL_SUPPORTED },
6869+ {.protocol = PF_BRIDGE , .msgtype = RTM_GETNEIGH , .doit = rtnl_fdb_get ,
6870+ .dumpit = rtnl_fdb_dump },
6871+ {.protocol = PF_BRIDGE , .msgtype = RTM_NEWMDB , .doit = rtnl_mdb_add },
6872+ {.protocol = PF_BRIDGE , .msgtype = RTM_DELMDB , .doit = rtnl_mdb_del ,
6873+ .flags = RTNL_FLAG_BULK_DEL_SUPPORTED },
6874+ {.protocol = PF_BRIDGE , .msgtype = RTM_GETMDB , .doit = rtnl_mdb_get ,
6875+ .dumpit = rtnl_mdb_dump },
6876+ };
6877+
68466878void __init rtnetlink_init (void )
68476879{
68486880 if (register_pernet_subsys (& rtnetlink_net_ops ))
68496881 panic ("rtnetlink_init: cannot initialize rtnetlink\n" );
68506882
68516883 register_netdevice_notifier (& rtnetlink_dev_notifier );
68526884
6853- rtnl_register (PF_UNSPEC , RTM_GETLINK , rtnl_getlink ,
6854- rtnl_dump_ifinfo , RTNL_FLAG_DUMP_SPLIT_NLM_DONE );
6855- rtnl_register (PF_UNSPEC , RTM_SETLINK , rtnl_setlink , NULL , 0 );
6856- rtnl_register (PF_UNSPEC , RTM_NEWLINK , rtnl_newlink , NULL , 0 );
6857- rtnl_register (PF_UNSPEC , RTM_DELLINK , rtnl_dellink , NULL , 0 );
6858-
6859- rtnl_register (PF_UNSPEC , RTM_GETADDR , NULL , rtnl_dump_all , 0 );
6860- rtnl_register (PF_UNSPEC , RTM_GETROUTE , NULL , rtnl_dump_all , 0 );
6861- rtnl_register (PF_UNSPEC , RTM_GETNETCONF , NULL , rtnl_dump_all , 0 );
6862-
6863- rtnl_register (PF_UNSPEC , RTM_NEWLINKPROP , rtnl_newlinkprop , NULL , 0 );
6864- rtnl_register (PF_UNSPEC , RTM_DELLINKPROP , rtnl_dellinkprop , NULL , 0 );
6865-
6866- rtnl_register (PF_BRIDGE , RTM_NEWNEIGH , rtnl_fdb_add , NULL , 0 );
6867- rtnl_register (PF_BRIDGE , RTM_DELNEIGH , rtnl_fdb_del , NULL ,
6868- RTNL_FLAG_BULK_DEL_SUPPORTED );
6869- rtnl_register (PF_BRIDGE , RTM_GETNEIGH , rtnl_fdb_get , rtnl_fdb_dump , 0 );
6870-
6871- rtnl_register (PF_BRIDGE , RTM_GETLINK , NULL , rtnl_bridge_getlink , 0 );
6872- rtnl_register (PF_BRIDGE , RTM_DELLINK , rtnl_bridge_dellink , NULL , 0 );
6873- rtnl_register (PF_BRIDGE , RTM_SETLINK , rtnl_bridge_setlink , NULL , 0 );
6874-
6875- rtnl_register (PF_UNSPEC , RTM_GETSTATS , rtnl_stats_get , rtnl_stats_dump ,
6876- 0 );
6877- rtnl_register (PF_UNSPEC , RTM_SETSTATS , rtnl_stats_set , NULL , 0 );
6878-
6879- rtnl_register (PF_BRIDGE , RTM_GETMDB , rtnl_mdb_get , rtnl_mdb_dump , 0 );
6880- rtnl_register (PF_BRIDGE , RTM_NEWMDB , rtnl_mdb_add , NULL , 0 );
6881- rtnl_register (PF_BRIDGE , RTM_DELMDB , rtnl_mdb_del , NULL ,
6882- RTNL_FLAG_BULK_DEL_SUPPORTED );
6885+ rtnl_register_many (rtnetlink_rtnl_msg_handlers );
68836886}
0 commit comments