 84d9c625bf
			
		
	
	
		84d9c625bf
		
	
	
	
	
		
			
			- Fix for possible unset uid/gid in toproto
 - Fix for default mtree style
 - Update libelf
 - Importing libexecinfo
 - Resynchronize GCC, mpc, gmp, mpfr
 - build.sh: Replace params with show-params.
     This has been done as the make target has been renamed in the same
     way, while a new target named params has been added. This new
     target generates a file containing all the parameters, instead of
     printing it on the console.
 - Update test48 with new etc/services (Fix by Ben Gras <ben@minix3.org)
     get getservbyport() out of the inner loop
Change-Id: Ie6ad5226fa2621ff9f0dee8782ea48f9443d2091
		
	
			
		
			
				
	
	
		
			198 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: getifaddrs.3,v 1.14 2013/04/07 23:12:36 wiz Exp $
 | |
| .\"	BSDI	getifaddrs.3,v 2.5 2000/02/23 14:51:59 dab 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.
 | |
| .Dd April 7, 2013
 | |
| .Dt GETIFADDRS 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm getifaddrs
 | |
| .Nd get interface addresses
 | |
| .Sh SYNOPSIS
 | |
| .In sys/types.h
 | |
| .In sys/socket.h
 | |
| .In ifaddrs.h
 | |
| .Ft int
 | |
| .Fn getifaddrs "struct ifaddrs **ifap"
 | |
| .Ft void
 | |
| .Fn freeifaddrs "struct ifaddrs *ifp"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Fn getifaddrs
 | |
| function stores a reference to a linked list of the network interfaces
 | |
| on the local machine in the memory referenced by
 | |
| .Fa ifap .
 | |
| The list consists of
 | |
| .Nm ifaddrs
 | |
| structures, as defined in the include file
 | |
| .In ifaddrs.h .
 | |
| The
 | |
| .Nm ifaddrs
 | |
| structure contains at least the following entries:
 | |
| .Bd -literal
 | |
|     struct ifaddrs   *ifa_next;         /* Pointer to next struct */
 | |
|     char             *ifa_name;         /* Interface name */
 | |
|     u_int             ifa_flags;        /* Interface flags */
 | |
|     struct sockaddr  *ifa_addr;         /* Interface address */
 | |
|     struct sockaddr  *ifa_netmask;      /* Interface netmask */
 | |
|     struct sockaddr  *ifa_broadaddr;    /* Interface broadcast address */
 | |
|     struct sockaddr  *ifa_dstaddr;      /* P2P interface destination */
 | |
|     void             *ifa_data;		/* Address specific data */
 | |
| .Ed
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_next
 | |
| field contains a pointer to the next structure on the list.
 | |
| This field is
 | |
| .Dv NULL
 | |
| in last structure on the list.
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_name
 | |
| field contains the interface name.
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_flags
 | |
| field contains the interface flags, as set by
 | |
| .Xr ifconfig 8
 | |
| utility.
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_addr
 | |
| field references either the address of the interface or the link level
 | |
| address of the interface, if one exists, otherwise it is
 | |
| .Dv NULL .
 | |
| (The
 | |
| .Li sa_family
 | |
| field of the
 | |
| .Li ifa_addr
 | |
| field should be consulted to determine the format of the
 | |
| .Li ifa_addr
 | |
| address.)
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_netmask
 | |
| field references the netmask associated with
 | |
| .Li ifa_addr ,
 | |
| if one is set, otherwise it is
 | |
| .Dv NULL .
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_broadaddr
 | |
| field,
 | |
| which should only be referenced for non-P2P interfaces,
 | |
| references the broadcast address associated with
 | |
| .Li ifa_addr ,
 | |
| if one exists, otherwise it is
 | |
| .Dv NULL .
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_dstaddr
 | |
| field references the destination address on a P2P interface,
 | |
| if one exists, otherwise it is
 | |
| .Dv NULL .
 | |
| .Pp
 | |
| The
 | |
| .Li ifa_data
 | |
| field references address family specific data.
 | |
| For
 | |
| .Dv AF_LINK
 | |
| addresses it contains a pointer to the
 | |
| .Fa struct if_data
 | |
| .Pq as defined in include file Aq Pa net/if.h
 | |
| which contains various interface attributes and statistics.
 | |
| For all other address families, it is
 | |
| .Dv NULL .
 | |
| .Pp
 | |
| The data returned by
 | |
| .Fn getifaddrs
 | |
| is dynamically allocated and should be freed using
 | |
| .Fn freeifaddrs
 | |
| when no longer needed.
 | |
| .Sh RETURN VALUES
 | |
| Upon successful completion, a value of 0 is returned.
 | |
| Otherwise, a value of -1 is returned and
 | |
| .Va errno
 | |
| is set to indicate the error.
 | |
| .Sh EXAMPLES
 | |
| The following example program prints a list of all addresses configured
 | |
| on the system.
 | |
| .Bd -literal -offset indent
 | |
| #include \*[Lt]sys/types.h\*[Gt]
 | |
| #include \*[Lt]sys/socket.h\*[Gt]
 | |
| #include \*[Lt]stdio.h\*[Gt]
 | |
| #include \*[Lt]ifaddrs.h\*[Gt]
 | |
| #include \*[Lt]util.h\*[Gt]
 | |
| #include \*[Lt]err.h\*[Gt]
 | |
| #include \*[Lt]stdlib.h\*[Gt]
 | |
| 
 | |
| int
 | |
| main(int argc, char *argv[])
 | |
| {
 | |
| 	struct ifaddrs *ifa, *a;
 | |
| 
 | |
| 	if (getifaddrs(\*[Am]ifa) == -1)
 | |
| 		err(EXIT_FAILURE, "getifaddrs");
 | |
| 
 | |
| 	for (a = ifa; a; a = a->ifa_next) {
 | |
| 		char buf[1024];
 | |
| 		sockaddr_snprintf(buf, sizeof(buf), "%f %a",
 | |
| 		    a->ifa_addr);
 | |
| 		printf("%s %x %s\\n", a->ifa_name, a->ifa_flags, buf);
 | |
| 	}
 | |
| 	freeifaddrs(ifa);
 | |
| 	return EXIT_SUCCESS;
 | |
| }
 | |
| .Ed
 | |
| .Sh ERRORS
 | |
| The
 | |
| .Fn getifaddrs
 | |
| may fail and set
 | |
| .Va errno
 | |
| for any of the errors specified for the library routines
 | |
| .Xr ioctl 2 ,
 | |
| .Xr socket 2 ,
 | |
| .Xr malloc 3
 | |
| or
 | |
| .Xr sysctl 3 .
 | |
| .Sh SEE ALSO
 | |
| .Xr ioctl 2 ,
 | |
| .Xr socket 2 ,
 | |
| .Xr sysctl 3 ,
 | |
| .Xr networking 4 ,
 | |
| .Xr ifconfig 8
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Nm
 | |
| implementation first appeared in
 | |
| .Bsx .
 | |
| .Sh BUGS
 | |
| If both
 | |
| .In net/if.h
 | |
| and
 | |
| .In ifaddrs.h
 | |
| are being included,
 | |
| .In net/if.h
 | |
| .Em must
 | |
| be included before
 | |
| .In ifaddrs.h .
 |