4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-19 12:59:21 +08:00

Cygwin: net: Make if_nametoindex, etc. consistent with if_nameindex.

Currently, if_nametoindex() and if_indextoname() handle interface names
such as "ethernet_32777", while if_nameindex() returns the names such
as "{5AF7ACD0-D52E-4DFC-A4D0-54D3E6D6B2AC}". This patch unifies the
interface names to the latter.

Fixes: c356901f0d69 ("Rename if_indextoname to cygwin_if_indextoname (analag for if_nametoindex)")
Reviewed-by: Corinna Vinschen <corinna@vinschen.de>
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
This commit is contained in:
Takashi Yano 2024-02-03 12:45:29 +09:00
parent aa22a43ec0
commit aa392df06b
3 changed files with 32 additions and 4 deletions

View File

@ -462,8 +462,6 @@ LoadDLLfunc (GetNetworkParams, iphlpapi)
LoadDLLfunc (GetTcpTable, iphlpapi)
LoadDLLfunc (GetTcp6Table, iphlpapi)
LoadDLLfunc (GetUdpTable, iphlpapi)
LoadDLLfunc (if_indextoname, iphlpapi)
LoadDLLfunc (if_nametoindex, iphlpapi)
LoadDLLfuncEx2 (DiscardVirtualMemory, kernel32, 1, 127)
LoadDLLfuncEx (ClosePseudoConsole, kernel32, 1)

View File

@ -2001,13 +2001,40 @@ get_ifconf (struct ifconf *ifc, int what)
extern "C" unsigned
cygwin_if_nametoindex (const char *name)
{
return (unsigned) ::if_nametoindex (name);
PIP_ADAPTER_ADDRESSES pa0 = NULL, pap;
if (get_adapters_addresses (&pa0, AF_UNSPEC))
for (pap = pa0; pap; pap = pap->Next)
if (strcmp (name, pap->AdapterName) == 0)
{
free (pa0);
return pap->IfIndex;
}
if (pa0)
free (pa0);
return 0;
}
extern "C" char *
cygwin_if_indextoname (unsigned ifindex, char *ifname)
{
return ::if_indextoname (ifindex, ifname);
if (ifindex == 0 || ifname == NULL)
{
set_errno (ENXIO);
return NULL;
}
PIP_ADAPTER_ADDRESSES pa0 = NULL, pap;
if (get_adapters_addresses (&pa0, AF_UNSPEC))
for (pap = pa0; pap; pap = pap->Next)
if (ifindex == pap->IfIndex)
{
strcpy (ifname, pap->AdapterName);
free (pa0);
return ifname;
}
if (pa0)
free (pa0);
set_errno (ENXIO);
return NULL;
}
extern "C" struct if_nameindex *

View File

@ -3,3 +3,6 @@ Bug Fixes
- Fix exit code for non-cygwin process running in console. The bug
was introduced in 3.5.0.
- Make the interface names handled by if_nametoindex() and if_indextoname()
consistent with that of if_nameindex().