diff options
Diffstat (limited to 'networking/libiproute/libnetlink.c')
-rw-r--r-- | networking/libiproute/libnetlink.c | 9 |
1 files changed, 5 insertions, 4 deletions
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 | } |