diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-12-02 14:39:15 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-12-02 14:39:15 +0300 |
commit | bdcc0b84ed75787006794fb6c98f8f0b1a78a67f (patch) | |
tree | 1afc1d03a64701879e16a30e83c6e7eb608bb152 /winsup/cygwin/net.cc | |
parent | 910e31f0154734f5bdfaa2d334a037eeeead295b (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.cc | 7 |
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); |