According to https://cygwin.com/ml/cygwin/2016-03/msg00124.html it's a problem to collect friendlyname info using AF_INET6 sockets. Fix problem by exposing additional hardware info for all collected interfaces via the pointer in the ifaddrs::ifa_data member. * include/ifaddrs.h (struct ifaddrs_hwdata): Define as struct of not yet exposed members of struct ifall, defined in net.cc. * net.cc (struct ifall): Replace hardware dta members with struct ifaddrs_hwdata. Accommodate throughout. (get_ifs): Let ifaddrs ifa_data member point to ifall::ifa_hwdata member. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
		
			
				
	
	
		
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*	$OpenBSD: ifaddrs.h,v 1.4 2004/01/22 21:48:02 espie Exp $	*/
 | |
| 
 | |
| /*
 | |
|  * Copyright (c) 1995, 1999
 | |
|  *	Berkeley Software Design, Inc.  All rights reserved.
 | |
|  *
 | |
|  * Redistribution and use in source and binary forms, with or without
 | |
|  * modification, are permitted provided that the following conditions
 | |
|  * are met:
 | |
|  * 1. Redistributions of source code must retain the above copyright
 | |
|  *    notice, this list of conditions and the following disclaimer.
 | |
|  *
 | |
|  * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND
 | |
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
|  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
|  * ARE DISCLAIMED.  IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE
 | |
|  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
|  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
|  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
|  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
|  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
|  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
|  * SUCH DAMAGE.
 | |
|  *
 | |
|  *	BSDI ifaddrs.h,v 2.5 2000/02/23 14:51:59 dab Exp
 | |
|  */
 | |
| 
 | |
| #ifndef	_IFADDRS_H_
 | |
| #define	_IFADDRS_H_
 | |
| 
 | |
| struct ifaddrs {
 | |
| 	struct ifaddrs  *ifa_next;
 | |
| 	char		*ifa_name;
 | |
| 	unsigned int	 ifa_flags;
 | |
| 	struct sockaddr	*ifa_addr;
 | |
| 	struct sockaddr	*ifa_netmask;
 | |
| 	struct sockaddr	*ifa_dstaddr;
 | |
| 	void		*ifa_data;
 | |
| };
 | |
| 
 | |
| #ifdef __CYGWIN__
 | |
| #include <cygwin/if.h>
 | |
| /* On Cygwin the ifa_data member points to this structure, independent of
 | |
|    the address family. */
 | |
| struct ifaddrs_hwdata {
 | |
| 	struct sockaddr         ifa_hwaddr;
 | |
| 	int                     ifa_metric;
 | |
| 	int                     ifa_mtu;
 | |
| 	int                     ifa_ifindex;
 | |
| 	struct ifreq_frndlyname ifa_frndlyname;
 | |
| };
 | |
| #endif
 | |
| 
 | |
| /*
 | |
|  * This may have been defined in <net/if.h>.  Note that if <net/if.h> is
 | |
|  * to be included it must be included before this header file.
 | |
|  */
 | |
| /* CV 2007-06-20: Not a problem on Cygwin right now. */
 | |
| #ifndef	ifa_broadaddr
 | |
| #define	ifa_broadaddr	ifa_dstaddr	/* broadcast address interface */
 | |
| #endif
 | |
| 
 | |
| #include <sys/cdefs.h>
 | |
| 
 | |
| __BEGIN_DECLS
 | |
| extern int getifaddrs(struct ifaddrs **);
 | |
| extern void freeifaddrs(struct ifaddrs *);
 | |
| __END_DECLS
 | |
| 
 | |
| #endif
 |