* net.cc (gen_old_if_name): New function to generate short interface
names for old pre-1.7 applications. (get_ifs): Call gen_old_if_name for said old applications.
This commit is contained in:
		| @@ -1,3 +1,9 @@ | |||||||
|  | 2013-06-13  Corinna Vinschen  <corinna@vinschen.de> | ||||||
|  |  | ||||||
|  | 	* net.cc (gen_old_if_name): New function to generate short interface | ||||||
|  | 	names for old pre-1.7 applications. | ||||||
|  | 	(get_ifs): Call gen_old_if_name for said old applications. | ||||||
|  |  | ||||||
| 2013-06-13  Corinna Vinschen  <corinna@vinschen.de> | 2013-06-13  Corinna Vinschen  <corinna@vinschen.de> | ||||||
|  |  | ||||||
| 	* posix.sgml (fcntl, flock, lockf): Point to implementation notes. | 	* posix.sgml (fcntl, flock, lockf): Point to implementation notes. | ||||||
|   | |||||||
| @@ -1900,6 +1900,51 @@ get_hwaddr (struct ifall *ifp, PIP_ADAPTER_ADDRESSES pap) | |||||||
|       ifp->ifa_hwaddr.sa_data[i] = pap->PhysicalAddress[i]; |       ifp->ifa_hwaddr.sa_data[i] = pap->PhysicalAddress[i]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * Generate short, unique interface name for usage with aged | ||||||
|  |  * applications still using the old pre-1.7 ifreq structure. | ||||||
|  |  */ | ||||||
|  | static void | ||||||
|  | gen_old_if_name (char *name, PIP_ADAPTER_ADDRESSES pap, DWORD idx) | ||||||
|  | { | ||||||
|  |   /* Note: The returned name must be < 16 chars. */ | ||||||
|  |   const char *prefix; | ||||||
|  |  | ||||||
|  |   switch (pap->IfType) | ||||||
|  |     { | ||||||
|  |       case IF_TYPE_ISO88025_TOKENRING: | ||||||
|  | 	prefix = "tok"; | ||||||
|  | 	break; | ||||||
|  |       case IF_TYPE_PPP: | ||||||
|  | 	prefix = "ppp"; | ||||||
|  | 	break; | ||||||
|  |       case IF_TYPE_SOFTWARE_LOOPBACK: | ||||||
|  |       	prefix = "lo"; | ||||||
|  | 	break; | ||||||
|  |       case IF_TYPE_ATM: | ||||||
|  |       	prefix = "atm"; | ||||||
|  | 	break; | ||||||
|  |       case IF_TYPE_IEEE80211: | ||||||
|  |       	prefix = "wlan"; | ||||||
|  | 	break; | ||||||
|  |       case IF_TYPE_SLIP: | ||||||
|  |       case IF_TYPE_RS232: | ||||||
|  |       case IF_TYPE_MODEM: | ||||||
|  | 	prefix = "slp"; | ||||||
|  | 	break; | ||||||
|  |       case IF_TYPE_TUNNEL: | ||||||
|  |       	prefix = "tun"; | ||||||
|  | 	break; | ||||||
|  |       default: | ||||||
|  | 	prefix = "eth"; | ||||||
|  | 	break; | ||||||
|  |     } | ||||||
|  |   if (idx) | ||||||
|  |     __small_sprintf (name, "%s%u:%u", prefix, pap->IfIndex, idx); | ||||||
|  |   else | ||||||
|  |     __small_sprintf (name, "%s%u", prefix, pap->IfIndex, idx); | ||||||
|  | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Get network interfaces.  Use IP Helper function GetAdaptersAddresses. |  * Get network interfaces.  Use IP Helper function GetAdaptersAddresses. | ||||||
|  */ |  */ | ||||||
| @@ -1941,7 +1986,10 @@ get_ifs (ULONG family) | |||||||
| 	    /* Next in chain */ | 	    /* Next in chain */ | ||||||
| 	    ifp->ifa_ifa.ifa_next = (struct ifaddrs *) &ifp[1].ifa_ifa; | 	    ifp->ifa_ifa.ifa_next = (struct ifaddrs *) &ifp[1].ifa_ifa; | ||||||
| 	    /* Interface name */ | 	    /* Interface name */ | ||||||
| 	    if (idx) |  | ||||||
|  | 	    if (CYGWIN_VERSION_CHECK_FOR_OLD_IFREQ) | ||||||
|  | 	      gen_old_if_name (ifp->ifa_name, pap, idx); | ||||||
|  | 	    else if (idx) | ||||||
| 	      __small_sprintf (ifp->ifa_name, "%s:%u", pap->AdapterName, idx); | 	      __small_sprintf (ifp->ifa_name, "%s:%u", pap->AdapterName, idx); | ||||||
| 	    else | 	    else | ||||||
| 	      strcpy (ifp->ifa_name, pap->AdapterName); | 	      strcpy (ifp->ifa_name, pap->AdapterName); | ||||||
| @@ -1985,7 +2033,9 @@ get_ifs (ULONG family) | |||||||
| 	    /* Next in chain */ | 	    /* Next in chain */ | ||||||
| 	    ifp->ifa_ifa.ifa_next = (struct ifaddrs *) &ifp[1].ifa_ifa; | 	    ifp->ifa_ifa.ifa_next = (struct ifaddrs *) &ifp[1].ifa_ifa; | ||||||
| 	    /* Interface name */ | 	    /* Interface name */ | ||||||
| 	    if (sa->sa_family == AF_INET && idx) | 	    if (CYGWIN_VERSION_CHECK_FOR_OLD_IFREQ) | ||||||
|  | 	      gen_old_if_name (ifp->ifa_name, pap, idx); | ||||||
|  | 	    else if (sa->sa_family == AF_INET && idx) | ||||||
| 	      __small_sprintf (ifp->ifa_name, "%s:%u", pap->AdapterName, idx); | 	      __small_sprintf (ifp->ifa_name, "%s:%u", pap->AdapterName, idx); | ||||||
| 	    else | 	    else | ||||||
| 	      strcpy (ifp->ifa_name, pap->AdapterName); | 	      strcpy (ifp->ifa_name, pap->AdapterName); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user