rtnetlink.c (0ec6d3f467faeec5dd3b617959eb90e9d520113d) rtnetlink.c (56fc85ac961e2c20dcb5ef07e2628b3f93de2e49)
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>

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

53#include <net/fib_rules.h>
54#include <net/netlink.h>
55#ifdef CONFIG_NET_WIRELESS_RTNETLINK
56#include <linux/wireless.h>
57#include <net/iw_handler.h>
58#endif /* CONFIG_NET_WIRELESS_RTNETLINK */
59
60static DEFINE_MUTEX(rtnl_mutex);
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>

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

53#include <net/fib_rules.h>
54#include <net/netlink.h>
55#ifdef CONFIG_NET_WIRELESS_RTNETLINK
56#include <linux/wireless.h>
57#include <net/iw_handler.h>
58#endif /* CONFIG_NET_WIRELESS_RTNETLINK */
59
60static DEFINE_MUTEX(rtnl_mutex);
61static struct sock *rtnl;
61
62void rtnl_lock(void)
63{
64 mutex_lock(&rtnl_mutex);
65}
66
67void __rtnl_unlock(void)
68{

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

90 unsigned flavor = rta->rta_type;
91 if (flavor && flavor <= maxattr)
92 tb[flavor-1] = rta;
93 rta = RTA_NEXT(rta, len);
94 }
95 return 0;
96}
97
62
63void rtnl_lock(void)
64{
65 mutex_lock(&rtnl_mutex);
66}
67
68void __rtnl_unlock(void)
69{

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

91 unsigned flavor = rta->rta_type;
92 if (flavor && flavor <= maxattr)
93 tb[flavor-1] = rta;
94 rta = RTA_NEXT(rta, len);
95 }
96 return 0;
97}
98
98struct sock *rtnl;
99
100struct rtnetlink_link * rtnetlink_links[NPROTO];
101
102static const int rtm_min[RTM_NR_FAMILIES] =
103{
104 [RTM_FAM(RTM_NEWLINK)] = NLMSG_LENGTH(sizeof(struct ifinfomsg)),
105 [RTM_FAM(RTM_NEWADDR)] = NLMSG_LENGTH(sizeof(struct ifaddrmsg)),
106 [RTM_FAM(RTM_NEWROUTE)] = NLMSG_LENGTH(sizeof(struct rtmsg)),
107 [RTM_FAM(RTM_NEWRULE)] = NLMSG_LENGTH(sizeof(struct fib_rule_hdr)),

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

837 rtnetlink_links[PF_PACKET] = link_rtnetlink_table;
838}
839
840EXPORT_SYMBOL(__rta_fill);
841EXPORT_SYMBOL(rtattr_strlcpy);
842EXPORT_SYMBOL(rtattr_parse);
843EXPORT_SYMBOL(rtnetlink_links);
844EXPORT_SYMBOL(rtnetlink_put_metrics);
99struct rtnetlink_link * rtnetlink_links[NPROTO];
100
101static const int rtm_min[RTM_NR_FAMILIES] =
102{
103 [RTM_FAM(RTM_NEWLINK)] = NLMSG_LENGTH(sizeof(struct ifinfomsg)),
104 [RTM_FAM(RTM_NEWADDR)] = NLMSG_LENGTH(sizeof(struct ifaddrmsg)),
105 [RTM_FAM(RTM_NEWROUTE)] = NLMSG_LENGTH(sizeof(struct rtmsg)),
106 [RTM_FAM(RTM_NEWRULE)] = NLMSG_LENGTH(sizeof(struct fib_rule_hdr)),

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

836 rtnetlink_links[PF_PACKET] = link_rtnetlink_table;
837}
838
839EXPORT_SYMBOL(__rta_fill);
840EXPORT_SYMBOL(rtattr_strlcpy);
841EXPORT_SYMBOL(rtattr_parse);
842EXPORT_SYMBOL(rtnetlink_links);
843EXPORT_SYMBOL(rtnetlink_put_metrics);
845EXPORT_SYMBOL(rtnl);
846EXPORT_SYMBOL(rtnl_lock);
847EXPORT_SYMBOL(rtnl_trylock);
848EXPORT_SYMBOL(rtnl_unlock);
849EXPORT_SYMBOL(rtnl_unicast);
850EXPORT_SYMBOL(rtnl_notify);
851EXPORT_SYMBOL(rtnl_set_sk_err);
844EXPORT_SYMBOL(rtnl_lock);
845EXPORT_SYMBOL(rtnl_trylock);
846EXPORT_SYMBOL(rtnl_unlock);
847EXPORT_SYMBOL(rtnl_unicast);
848EXPORT_SYMBOL(rtnl_notify);
849EXPORT_SYMBOL(rtnl_set_sk_err);