* fhandler_socket.cc (fhandler_socket::ioctl): Handle SIOCGIFINDEX.
* net.cc (get_2k_ifconf): Ditto. (get_nt_ifconf): Fake SIOCGIFINDEX. (get_95_ifconf): Ditto. (get_ifconf): Handle SIOCGIFINDEX. Fake it for loopback on systems not supporting IP Helper Lib. * include/asm/socket.h (SIOCGIFINDEX): Define. * include/cygwin/if.h (struct ifreq): Add member for interface index. (ifr_ifindex): Define.
This commit is contained in:
parent
2fd167e6de
commit
835fc32a3a
|
@ -1,3 +1,15 @@
|
|||
2007-01-16 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* fhandler_socket.cc (fhandler_socket::ioctl): Handle SIOCGIFINDEX.
|
||||
* net.cc (get_2k_ifconf): Ditto.
|
||||
(get_nt_ifconf): Fake SIOCGIFINDEX.
|
||||
(get_95_ifconf): Ditto.
|
||||
(get_ifconf): Handle SIOCGIFINDEX. Fake it for loopback on systems
|
||||
not supporting IP Helper Lib.
|
||||
* include/asm/socket.h (SIOCGIFINDEX): Define.
|
||||
* include/cygwin/if.h (struct ifreq): Add member for interface index.
|
||||
(ifr_ifindex): Define.
|
||||
|
||||
2007-01-16 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* include/cygwin/in6.h (struct ipv6_mreq): Change type of interface
|
||||
|
|
|
@ -1419,6 +1419,7 @@ fhandler_socket::ioctl (unsigned int cmd, void *p)
|
|||
case SIOCGIFHWADDR:
|
||||
case SIOCGIFMETRIC:
|
||||
case SIOCGIFMTU:
|
||||
case SIOCGIFINDEX:
|
||||
{
|
||||
ifc.ifc_len = 2048;
|
||||
ifc.ifc_buf = (char *) alloca (2048);
|
||||
|
@ -1469,6 +1470,9 @@ fhandler_socket::ioctl (unsigned int cmd, void *p)
|
|||
case SIOCGIFMTU:
|
||||
ifr->ifr_mtu = ifrp->ifr_mtu;
|
||||
break;
|
||||
case SIOCGIFINDEX:
|
||||
ifr->ifr_ifindex = ifrp->ifr_ifindex;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* asm/socket.h
|
||||
|
||||
Copyright 1996, 1997, 1998, 2001 Red Hat, Inc.
|
||||
Copyright 1996, 1997, 1998, 2001, 2005, 2007 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
|
@ -41,6 +41,7 @@ details. */
|
|||
#define SIOCGIFHWADDR _IOW('s', 105, struct ifreq) /* Get hw addr */
|
||||
#define SIOCGIFMETRIC _IOW('s', 106, struct ifreq) /* get metric */
|
||||
#define SIOCGIFMTU _IOW('s', 107, struct ifreq) /* get MTU size */
|
||||
#define SIOCGIFINDEX _IOW('s', 108, struct ifreq) /* get if index */
|
||||
|
||||
#define SOL_SOCKET 0xffff /* options for socket level */
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* cygwin/if.h
|
||||
|
||||
Copyright 1996, 2001 Red Hat, Inc.
|
||||
Copyright 1996, 2001, 2007 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
|
@ -51,6 +51,7 @@ struct ifreq
|
|||
short ifru_flags;
|
||||
int ifru_metric;
|
||||
int ifru_mtu;
|
||||
int ifru_ifindex;
|
||||
} ifr_ifru;
|
||||
};
|
||||
|
||||
|
@ -62,7 +63,7 @@ struct ifreq
|
|||
#define ifr_hwaddr ifr_ifru.ifru_hwaddr /* MAC address */
|
||||
#define ifr_metric ifr_ifru.ifru_metric /* metric */
|
||||
#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
|
||||
|
||||
#define ifr_ifindex ifr_ifru.ifru_ifindex /* interface index */
|
||||
|
||||
/*
|
||||
* Structure used in SIOCGIFCONF request.
|
||||
|
|
|
@ -1299,6 +1299,9 @@ get_2k_ifconf (struct ifconf *ifc, int what)
|
|||
case SIOCGIFMTU:
|
||||
ifr->ifr_mtu = ifrow->dwMtu;
|
||||
break;
|
||||
case SIOCGIFINDEX:
|
||||
ifr->ifr_ifindex = ifrow->dwIndex;
|
||||
break;
|
||||
}
|
||||
++cnt;
|
||||
if ((caddr_t)++ ifr >
|
||||
|
@ -1461,6 +1464,9 @@ get_nt_ifconf (struct ifconf *ifc, int what)
|
|||
case SIOCGIFMTU:
|
||||
ifr->ifr_mtu = 1500;
|
||||
break;
|
||||
case SIOCGIFINDEX:
|
||||
ifr->ifr_ifindex = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1503,6 +1509,9 @@ get_nt_ifconf (struct ifconf *ifc, int what)
|
|||
case SIOCGIFMTU:
|
||||
ifr->ifr_mtu = 1500;
|
||||
break;
|
||||
case SIOCGIFINDEX:
|
||||
ifr->ifr_ifindex = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
++cnt;
|
||||
|
@ -1638,6 +1647,9 @@ get_95_ifconf (struct ifconf *ifc, int what)
|
|||
case SIOCGIFMTU:
|
||||
ifr->ifr_mtu = 1500;
|
||||
break;
|
||||
case SIOCGIFINDEX:
|
||||
ifr->ifr_ifindex = -1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1747,6 +1759,9 @@ get_ifconf (struct ifconf *ifc, int what)
|
|||
/* Default value for MS TCP Loopback interface. */
|
||||
ifr->ifr_mtu = 1520;
|
||||
break;
|
||||
case SIOCGIFINDEX:
|
||||
ifr->ifr_ifindex = -1;
|
||||
break;
|
||||
default:
|
||||
set_errno (EINVAL);
|
||||
return -1;
|
||||
|
|
Loading…
Reference in New Issue