aboutsummaryrefslogtreecommitdiff
path: root/networking/libiproute
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2009-04-21 23:48:38 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2009-04-21 23:48:38 +0000
commita771e7c0057d0f506f8cdf67be39268e1c9f0735 (patch)
treebef7afb1304b3510d4857148a50e162a0578c363 /networking/libiproute
parente6b10ef0a7a5761c4cd0fe5f48bad953aa92240e (diff)
downloadbusybox-w32-a771e7c0057d0f506f8cdf67be39268e1c9f0735.tar.gz
busybox-w32-a771e7c0057d0f506f8cdf67be39268e1c9f0735.tar.bz2
busybox-w32-a771e7c0057d0f506f8cdf67be39268e1c9f0735.zip
*: remove check for errors on getsockaddr in cases we know they can't happen
libbb: make get_sock_lsa use only one getsockaddr syscall, not two function old new delta get_sock_lsa 72 101 +29 do_iplink 1151 1137 -14 arping_main 1585 1569 -16 dolisten 789 755 -34 xrtnl_open 161 94 -67
Diffstat (limited to 'networking/libiproute')
-rw-r--r--networking/libiproute/iplink.c8
-rw-r--r--networking/libiproute/libnetlink.c9
-rw-r--r--networking/libiproute/libnetlink.h3
3 files changed, 10 insertions, 10 deletions
diff --git a/networking/libiproute/iplink.c b/networking/libiproute/iplink.c
index 1e7ee07d2..de7d6407e 100644
--- a/networking/libiproute/iplink.c
+++ b/networking/libiproute/iplink.c
@@ -112,11 +112,11 @@ static int get_address(char *dev, int *htype)
112 me.sll_ifindex = ifr.ifr_ifindex; 112 me.sll_ifindex = ifr.ifr_ifindex;
113 me.sll_protocol = htons(ETH_P_LOOP); 113 me.sll_protocol = htons(ETH_P_LOOP);
114 xbind(s, (struct sockaddr*)&me, sizeof(me)); 114 xbind(s, (struct sockaddr*)&me, sizeof(me));
115
116 alen = sizeof(me); 115 alen = sizeof(me);
117 if (getsockname(s, (struct sockaddr*)&me, &alen) == -1) { 116 getsockname(s, (struct sockaddr*)&me, &alen);
118 bb_perror_msg_and_die("getsockname"); 117 //never happens:
119 } 118 //if (getsockname(s, (struct sockaddr*)&me, &alen) == -1)
119 // bb_perror_msg_and_die("getsockname");
120 close(s); 120 close(s);
121 *htype = me.sll_hatype; 121 *htype = me.sll_hatype;
122 return me.sll_halen; 122 return me.sll_halen;
diff --git a/networking/libiproute/libnetlink.c b/networking/libiproute/libnetlink.c
index 6d51d8deb..7ad2de9fa 100644
--- a/networking/libiproute/libnetlink.c
+++ b/networking/libiproute/libnetlink.c
@@ -26,22 +26,23 @@ int FAST_FUNC xrtnl_open(struct rtnl_handle *rth/*, unsigned subscriptions*/)
26{ 26{
27 socklen_t addr_len; 27 socklen_t addr_len;
28 28
29 memset(rth, 0, sizeof(rth)); 29 memset(rth, 0, sizeof(*rth));
30
31 rth->fd = xsocket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE); 30 rth->fd = xsocket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
32
33 memset(&rth->local, 0, sizeof(rth->local));
34 rth->local.nl_family = AF_NETLINK; 31 rth->local.nl_family = AF_NETLINK;
35 /*rth->local.nl_groups = subscriptions;*/ 32 /*rth->local.nl_groups = subscriptions;*/
36 33
37 xbind(rth->fd, (struct sockaddr*)&rth->local, sizeof(rth->local)); 34 xbind(rth->fd, (struct sockaddr*)&rth->local, sizeof(rth->local));
38 addr_len = sizeof(rth->local); 35 addr_len = sizeof(rth->local);
36 getsockname(rth->fd, (struct sockaddr*)&rth->local, &addr_len);
37
38/* too much paranoia
39 if (getsockname(rth->fd, (struct sockaddr*)&rth->local, &addr_len) < 0) 39 if (getsockname(rth->fd, (struct sockaddr*)&rth->local, &addr_len) < 0)
40 bb_perror_msg_and_die("getsockname"); 40 bb_perror_msg_and_die("getsockname");
41 if (addr_len != sizeof(rth->local)) 41 if (addr_len != sizeof(rth->local))
42 bb_error_msg_and_die("wrong address length %d", addr_len); 42 bb_error_msg_and_die("wrong address length %d", addr_len);
43 if (rth->local.nl_family != AF_NETLINK) 43 if (rth->local.nl_family != AF_NETLINK)
44 bb_error_msg_and_die("wrong address family %d", rth->local.nl_family); 44 bb_error_msg_and_die("wrong address family %d", rth->local.nl_family);
45*/
45 rth->seq = time(NULL); 46 rth->seq = time(NULL);
46 return 0; 47 return 0;
47} 48}
diff --git a/networking/libiproute/libnetlink.h b/networking/libiproute/libnetlink.h
index e5fee4dd8..11a4a100a 100644
--- a/networking/libiproute/libnetlink.h
+++ b/networking/libiproute/libnetlink.h
@@ -10,8 +10,7 @@
10 10
11PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN 11PUSH_AND_SET_FUNCTION_VISIBILITY_TO_HIDDEN
12 12
13struct rtnl_handle 13struct rtnl_handle {
14{
15 int fd; 14 int fd;
16 struct sockaddr_nl local; 15 struct sockaddr_nl local;
17 struct sockaddr_nl peer; 16 struct sockaddr_nl peer;