diff options
Diffstat (limited to 'networking')
-rw-r--r-- | networking/libiproute/libnetlink.c | 38 | ||||
-rw-r--r-- | networking/libiproute/libnetlink.h | 6 |
2 files changed, 17 insertions, 27 deletions
diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c index ba24832..8da80b2 100644 --- a/networking/libiproute/libnetlink.c +++ b/networking/libiproute/libnetlink.c @@ -1,14 +1,13 @@ /* vi: set sw=4 ts=4: */ /* - * libnetlink.c RTnetlink service routines. + * RTnetlink service routines. * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - * - * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version + * 2 of the License, or (at your option) any later version. * + * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> */ #include <sys/socket.h> @@ -17,12 +16,7 @@ #include "libbb.h" #include "libnetlink.h" -void FAST_FUNC rtnl_close(struct rtnl_handle *rth) -{ - close(rth->fd); -} - -int FAST_FUNC xrtnl_open(struct rtnl_handle *rth/*, unsigned subscriptions*/) +void FAST_FUNC xrtnl_open(struct rtnl_handle *rth/*, unsigned subscriptions*/) { socklen_t addr_len; @@ -44,7 +38,6 @@ int FAST_FUNC xrtnl_open(struct rtnl_handle *rth/*, unsigned subscriptions*/) bb_error_msg_and_die("wrong address family %d", rth->local.nl_family); */ rth->seq = time(NULL); - return 0; } int FAST_FUNC xrtnl_wilddump_request(struct rtnl_handle *rth, int family, int type) @@ -53,10 +46,6 @@ int FAST_FUNC xrtnl_wilddump_request(struct rtnl_handle *rth, int family, int ty struct nlmsghdr nlh; struct rtgenmsg g; } req; - struct sockaddr_nl nladdr; - - memset(&nladdr, 0, sizeof(nladdr)); - nladdr.nl_family = AF_NETLINK; req.nlh.nlmsg_len = sizeof(req); req.nlh.nlmsg_type = type; @@ -65,8 +54,7 @@ int FAST_FUNC xrtnl_wilddump_request(struct rtnl_handle *rth, int family, int ty req.nlh.nlmsg_seq = rth->dump = ++rth->seq; req.g.rtgen_family = family; - return xsendto(rth->fd, (void*)&req, sizeof(req), - (struct sockaddr*)&nladdr, sizeof(nladdr)); + return rtnl_send(rth, (void*)&req, sizeof(req)); } int FAST_FUNC rtnl_send(struct rtnl_handle *rth, char *buf, int len) @@ -339,8 +327,10 @@ int FAST_FUNC addattr32(struct nlmsghdr *n, int maxlen, int type, uint32_t data) { int len = RTA_LENGTH(4); struct rtattr *rta; - if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen) + + if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen) { return -1; + } rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len)); rta->rta_type = type; rta->rta_len = len; @@ -354,8 +344,9 @@ int FAST_FUNC addattr_l(struct nlmsghdr *n, int maxlen, int type, void *data, in int len = RTA_LENGTH(alen); struct rtattr *rta; - if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen) + if ((int)(NLMSG_ALIGN(n->nlmsg_len) + len) > maxlen) { return -1; + } rta = (struct rtattr*)(((char*)n) + NLMSG_ALIGN(n->nlmsg_len)); rta->rta_type = type; rta->rta_len = len; @@ -397,7 +388,7 @@ int FAST_FUNC rta_addattr_l(struct rtattr *rta, int maxlen, int type, void *data } -int FAST_FUNC parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len) +void FAST_FUNC parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len) { while (RTA_OK(rta, len)) { if (rta->rta_type <= max) { @@ -408,5 +399,4 @@ int FAST_FUNC parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int if (len) { bb_error_msg("deficit %d, rta_len=%d!", len, rta->rta_len); } - return 0; } diff --git a/networking/libiproute/libnetlink.h b/networking/libiproute/libnetlink.h index 41ecfa6..4e4d5b7 100644 --- a/networking/libiproute/libnetlink.h +++ b/networking/libiproute/libnetlink.h @@ -18,8 +18,8 @@ struct rtnl_handle { uint32_t dump; }; -extern int xrtnl_open(struct rtnl_handle *rth) FAST_FUNC; -extern void rtnl_close(struct rtnl_handle *rth) FAST_FUNC; +extern void xrtnl_open(struct rtnl_handle *rth) FAST_FUNC; +#define rtnl_close(rth) (close((rth)->fd)) extern int xrtnl_wilddump_request(struct rtnl_handle *rth, int fam, int type) FAST_FUNC; extern int rtnl_dump_request(struct rtnl_handle *rth, int type, void *req, int len) FAST_FUNC; extern int xrtnl_dump_filter(struct rtnl_handle *rth, @@ -42,7 +42,7 @@ extern int addattr_l(struct nlmsghdr *n, int maxlen, int type, void *data, int a extern int rta_addattr32(struct rtattr *rta, int maxlen, int type, uint32_t data) FAST_FUNC; extern int rta_addattr_l(struct rtattr *rta, int maxlen, int type, void *data, int alen) FAST_FUNC; -extern int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len) FAST_FUNC; +extern void parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len) FAST_FUNC; POP_SAVED_FUNCTION_VISIBILITY |