Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2010-12-02 14:39:15 +0300
committerCorinna Vinschen <corinna@vinschen.de>2010-12-02 14:39:15 +0300
commitbdcc0b84ed75787006794fb6c98f8f0b1a78a67f (patch)
tree1afc1d03a64701879e16a30e83c6e7eb608bb152 /winsup/cygwin/net.cc
parent910e31f0154734f5bdfaa2d334a037eeeead295b (diff)
* net.cc (get_xp_ifs): Fix counting of idx to return stable interface
alias names for interfaces with multiple IPv4 addresses.
Diffstat (limited to 'winsup/cygwin/net.cc')
-rw-r--r--winsup/cygwin/net.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc
index aa56ad423..e6d9638c8 100644
--- a/winsup/cygwin/net.cc
+++ b/winsup/cygwin/net.cc
@@ -1907,8 +1907,7 @@ get_xp_ifs (ULONG family)
++ifp;
}
else
- for (idx = 0, pua = pap->FirstUnicastAddress; pua;
- ++idx, pua = pua->Next)
+ for (idx = 0, pua = pap->FirstUnicastAddress; pua; pua = pua->Next)
{
struct sockaddr *sa = (struct sockaddr *) pua->Address.lpSockaddr;
# define sin ((struct sockaddr_in *) sa)
@@ -1918,10 +1917,12 @@ get_xp_ifs (ULONG family)
/* Next in chain */
ifp->ifa_ifa.ifa_next = (struct ifaddrs *) &ifp[1].ifa_ifa;
/* Interface name */
- if (idx && sa->sa_family == AF_INET)
+ if (sa->sa_family == AF_INET && idx)
__small_sprintf (ifp->ifa_name, "%s:%u", pap->AdapterName, idx);
else
strcpy (ifp->ifa_name, pap->AdapterName);
+ if (sa->sa_family == AF_INET)
+ ++idx;
ifp->ifa_ifa.ifa_name = ifp->ifa_name;
/* Flags */
ifp->ifa_ifa.ifa_flags = get_flags (pap);