diff options
author | Avneesh Sachdev <avneesh@opensourcerouting.org> | 2012-11-13 22:48:56 +0000 |
---|---|---|
committer | David Lamparter <equinox@opensourcerouting.org> | 2012-11-30 21:41:17 +0100 |
commit | 78deec450cfa5ddcad290c13b36dd1d187da213e (patch) | |
tree | bf6e811b78c726db3fe00b168b35a67e9aa586c1 /zebra/rt_netlink.c | |
parent | 0915bb0ce2ca6b5fee2cd214be4499eeeaf1c9af (diff) |
zebra: extern/extract some functions from rt_netlink.c
* zebra/{rib.h,zebra_rib.c}
Add nexthop_type_to_str(), which returns a human-readable string
corresponding to a nexthop type.
* zebra/rt_netlink.[hc]
- Add new header file that exposes some existing and new
netlink-related functions from rt_netlink.c to the rest of
zebra.
addattr32
addattr_l
rta_addattr_l
nl_msg_type_to_str (new)
nl_rtproto_to_str (new)
- Use nexthop_type_to_str() instead of the static array
'nexthop_types_desc'.
Signed-off-by: Avneesh Sachdev <avneesh@opensourcerouting.org>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Diffstat (limited to 'zebra/rt_netlink.c')
-rw-r--r-- | zebra/rt_netlink.c | 48 |
1 files changed, 26 insertions, 22 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c index ab28ad27..fa446a56 100644 --- a/zebra/rt_netlink.c +++ b/zebra/rt_netlink.c @@ -43,7 +43,7 @@ #include "zebra/interface.h" #include "zebra/debug.h" -#define NL_PKT_BUF_SIZE 4096 +#include "rt_netlink.h" /* Socket interface to kernel */ struct nlsock @@ -68,20 +68,6 @@ static const struct message nlmsg_str[] = { {0, NULL} }; -static const char *nexthop_types_desc[] = -{ - "none", - "Directly connected", - "Interface route", - "IPv4 nexthop", - "IPv4 nexthop with ifindex", - "IPv4 nexthop with ifname", - "IPv6 nexthop", - "IPv6 nexthop with ifindex", - "IPv6 nexthop with ifname", - "Null0 nexthop", -}; - extern struct zebra_t zebrad; extern struct zebra_privs_t zserv_privs; @@ -1236,7 +1222,7 @@ netlink_route_read (void) /* Utility function comes from iproute2. Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> */ -static int +int addattr_l (struct nlmsghdr *n, int maxlen, int type, void *data, int alen) { int len; @@ -1256,7 +1242,7 @@ addattr_l (struct nlmsghdr *n, int maxlen, int type, void *data, int alen) return 0; } -static int +int rta_addattr_l (struct rtattr *rta, int maxlen, int type, void *data, int alen) { int len; @@ -1278,7 +1264,7 @@ rta_addattr_l (struct rtattr *rta, int maxlen, int type, void *data, int alen) /* Utility function comes from iproute2. Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> */ -static int +int addattr32 (struct nlmsghdr *n, int maxlen, int type, int data) { int len; @@ -1515,7 +1501,7 @@ netlink_route_multipath (int cmd, struct prefix *p, struct rib *rib, inet_ntoa (p->u.prefix4), #endif /* HAVE_IPV6 */ - p->prefixlen, nexthop_types_desc[nexthop->rtype]); + p->prefixlen, nexthop_type_to_str (nexthop->rtype)); } if (nexthop->rtype == NEXTHOP_TYPE_IPV4 @@ -1580,7 +1566,7 @@ netlink_route_multipath (int cmd, struct prefix *p, struct rib *rib, #else inet_ntoa (p->u.prefix4), #endif /* HAVE_IPV6 */ - p->prefixlen, nexthop_types_desc[nexthop->type]); + p->prefixlen, nexthop_type_to_str (nexthop->type)); } if (nexthop->type == NEXTHOP_TYPE_IPV4 @@ -1687,7 +1673,7 @@ netlink_route_multipath (int cmd, struct prefix *p, struct rib *rib, #else inet_ntoa (p->u.prefix4), #endif /* HAVE_IPV6 */ - p->prefixlen, nexthop_types_desc[nexthop->rtype]); + p->prefixlen, nexthop_type_to_str (nexthop->rtype)); } if (nexthop->rtype == NEXTHOP_TYPE_IPV4 || nexthop->rtype == NEXTHOP_TYPE_IPV4_IFINDEX) @@ -1761,7 +1747,7 @@ netlink_route_multipath (int cmd, struct prefix *p, struct rib *rib, #else inet_ntoa (p->u.prefix4), #endif /* HAVE_IPV6 */ - p->prefixlen, nexthop_types_desc[nexthop->type]); + p->prefixlen, nexthop_type_to_str (nexthop->type)); } if (nexthop->type == NEXTHOP_TYPE_IPV4 || nexthop->type == NEXTHOP_TYPE_IPV4_IFINDEX) @@ -2023,3 +2009,21 @@ kernel_init (void) thread_add_read (zebrad.master, kernel_read, NULL, netlink.sock); } } + +/* + * nl_msg_type_to_str + */ +const char * +nl_msg_type_to_str (uint16_t msg_type) +{ + return lookup (nlmsg_str, msg_type); +} + +/* + * nl_rtproto_to_str + */ +const char * +nl_rtproto_to_str (u_char rtproto) +{ + return lookup (rtproto_str, rtproto); +} |