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.
+ * 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>
- *
+ * 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 @@
 		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 @@
 		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 @@
 	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 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 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 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 @@
 	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 @@
 	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 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
 
