From: Ulrich Drepper Date: Tue, 3 Jun 2003 23:07:39 +0000 (+0000) Subject: Update. X-Git-Tag: cvs/glibc-2_3_3~650 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=332afd9ecdb835e2d0a9606f311b3d086a00d4e3;p=thirdparty%2Fglibc.git Update. * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_open): Call getsockname to get the actual PID value used in the records passed up. (getifaddrs): Don't initialize nh.pid here. 2003-06-02 Ulrich Drepper --- diff --git a/ChangeLog b/ChangeLog index 8c710482b90..fab8d28ac02 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2003-06-02 Ulrich Drepper + + * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_open): Call getsockname + to get the actual PID value used in the records passed up. + (getifaddrs): Don't initialize nh.pid here. + 2003-06-02 Ulrich Drepper * sysdeps/unix/sysv/linux/ifaddrs.c (netlink_receive): Minor diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c index 6765387bc71..bc1ca8565f9 100644 --- a/sysdeps/unix/sysv/linux/ifaddrs.c +++ b/sysdeps/unix/sysv/linux/ifaddrs.c @@ -233,9 +233,17 @@ netlink_open (struct netlink_handle *h) nladdr.nl_family = AF_NETLINK; if (__bind (h->fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) < 0) { + close_and_out: netlink_close (h); return -1; } + /* Determine the ID the kernel assigned for this netlink connection. + It is not necessarily the PID if there is more than one socket + open. */ + socklen_t addr_len = sizeof (nladdr); + if (__getsockname (h->fd, (struct sockaddr *) &nladdr, &addr_len) < 0) + goto close_and_out; + h->pid = nladdr.nl_pid; return 0; } @@ -303,8 +311,6 @@ getifaddrs (struct ifaddrs **ifap) return fallback_getifaddrs (ifap); #endif - nh.pid = getpid (); - /* Tell the kernel that we wish to get a list of all active interfaces. */ if (netlink_sendreq (&nh, RTM_GETLINK) < 0)