rtnetlink.c (e284986385b6420a5f30f2dcd743512bbe1a3202) rtnetlink.c (340d17fc9d577c93678850e46963e9b19b92db7e)
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Routing netlink socket interface: protocol independent part.
7 *
8 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>

--- 947 unchanged lines hidden (view full) ---

956 mutex_unlock(&rtnl_mutex);
957
958 netdev_run_todo();
959 } while (qlen);
960}
961
962static struct rtnetlink_link link_rtnetlink_table[RTM_NR_MSGTYPES] =
963{
1/*
2 * INET An implementation of the TCP/IP protocol suite for the LINUX
3 * operating system. INET is implemented using the BSD Socket
4 * interface as the means of communication with the user level.
5 *
6 * Routing netlink socket interface: protocol independent part.
7 *
8 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru>

--- 947 unchanged lines hidden (view full) ---

956 mutex_unlock(&rtnl_mutex);
957
958 netdev_run_todo();
959 } while (qlen);
960}
961
962static struct rtnetlink_link link_rtnetlink_table[RTM_NR_MSGTYPES] =
963{
964 [RTM_GETLINK - RTM_BASE] = { .doit = rtnl_getlink,
965 .dumpit = rtnl_dump_ifinfo },
966 [RTM_SETLINK - RTM_BASE] = { .doit = rtnl_setlink },
967 [RTM_GETADDR - RTM_BASE] = { .dumpit = rtnl_dump_all },
968 [RTM_GETROUTE - RTM_BASE] = { .dumpit = rtnl_dump_all },
969 [RTM_NEWNEIGH - RTM_BASE] = { .doit = neigh_add },
970 [RTM_DELNEIGH - RTM_BASE] = { .doit = neigh_delete },
971 [RTM_GETNEIGH - RTM_BASE] = { .dumpit = neigh_dump_info },
972#ifdef CONFIG_FIB_RULES
973 [RTM_NEWRULE - RTM_BASE] = { .doit = fib_nl_newrule },
974 [RTM_DELRULE - RTM_BASE] = { .doit = fib_nl_delrule },

--- 44 unchanged lines hidden (view full) ---

1019 panic("rtnetlink_init: cannot allocate rta_buf\n");
1020
1021 rtnl = netlink_kernel_create(NETLINK_ROUTE, RTNLGRP_MAX, rtnetlink_rcv,
1022 THIS_MODULE);
1023 if (rtnl == NULL)
1024 panic("rtnetlink_init: cannot initialize rtnetlink\n");
1025 netlink_set_nonroot(NETLINK_ROUTE, NL_NONROOT_RECV);
1026 register_netdevice_notifier(&rtnetlink_dev_notifier);
964 [RTM_GETADDR - RTM_BASE] = { .dumpit = rtnl_dump_all },
965 [RTM_GETROUTE - RTM_BASE] = { .dumpit = rtnl_dump_all },
966 [RTM_NEWNEIGH - RTM_BASE] = { .doit = neigh_add },
967 [RTM_DELNEIGH - RTM_BASE] = { .doit = neigh_delete },
968 [RTM_GETNEIGH - RTM_BASE] = { .dumpit = neigh_dump_info },
969#ifdef CONFIG_FIB_RULES
970 [RTM_NEWRULE - RTM_BASE] = { .doit = fib_nl_newrule },
971 [RTM_DELRULE - RTM_BASE] = { .doit = fib_nl_delrule },

--- 44 unchanged lines hidden (view full) ---

1016 panic("rtnetlink_init: cannot allocate rta_buf\n");
1017
1018 rtnl = netlink_kernel_create(NETLINK_ROUTE, RTNLGRP_MAX, rtnetlink_rcv,
1019 THIS_MODULE);
1020 if (rtnl == NULL)
1021 panic("rtnetlink_init: cannot initialize rtnetlink\n");
1022 netlink_set_nonroot(NETLINK_ROUTE, NL_NONROOT_RECV);
1023 register_netdevice_notifier(&rtnetlink_dev_notifier);
1027 rtnetlink_links[PF_UNSPEC] = link_rtnetlink_table;
1028 rtnetlink_links[PF_PACKET] = link_rtnetlink_table;
1024
1025 rtnl_register(PF_UNSPEC, RTM_GETLINK, rtnl_getlink, rtnl_dump_ifinfo);
1026 rtnl_register(PF_UNSPEC, RTM_SETLINK, rtnl_setlink, NULL);
1029}
1030
1031EXPORT_SYMBOL(__rta_fill);
1032EXPORT_SYMBOL(rtattr_strlcpy);
1033EXPORT_SYMBOL(rtattr_parse);
1034EXPORT_SYMBOL(rtnetlink_put_metrics);
1035EXPORT_SYMBOL(rtnl_lock);
1036EXPORT_SYMBOL(rtnl_trylock);
1037EXPORT_SYMBOL(rtnl_unlock);
1038EXPORT_SYMBOL(rtnl_unicast);
1039EXPORT_SYMBOL(rtnl_notify);
1040EXPORT_SYMBOL(rtnl_set_sk_err);
1027}
1028
1029EXPORT_SYMBOL(__rta_fill);
1030EXPORT_SYMBOL(rtattr_strlcpy);
1031EXPORT_SYMBOL(rtattr_parse);
1032EXPORT_SYMBOL(rtnetlink_put_metrics);
1033EXPORT_SYMBOL(rtnl_lock);
1034EXPORT_SYMBOL(rtnl_trylock);
1035EXPORT_SYMBOL(rtnl_unlock);
1036EXPORT_SYMBOL(rtnl_unicast);
1037EXPORT_SYMBOL(rtnl_notify);
1038EXPORT_SYMBOL(rtnl_set_sk_err);