123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- /*++
- Copyright (c) 2017 Minoca Corp.
- This file is licensed under the terms of the GNU Lesser General Public
- License version 3. Alternative licensing terms are available. Contact
- info@minocacorp.com for details.
- Module Name:
- ifaddrs.h
- Abstract:
- This header contains definitions for getting network interface addresses in
- the C Library.
- Author:
- Chris Stevens 24-Jan-2017
- --*/
- #ifndef _IFADDRS_H
- #define _IFADDRS_H
- //
- // ------------------------------------------------------------------- Includes
- //
- #include <libcbase.h>
- //
- // ---------------------------------------------------------------- Definitions
- //
- #ifdef __cplusplus
- extern "C" {
- #endif
- //
- // ------------------------------------------------------ Data Type Definitions
- //
- /*++
- Structure Description:
- This structure defines a network interface.
- Members:
- ifa_next - Stores a pointer to the next interface structure.
- ifa_name - Stores the null-terminated name of the interface.
- ifa_flags - Stores a bitmask of network interface flags. See IFF_* for
- definitions.
- ifa_addr - Stores a pointer to the network interface's address.
- ifa_netmask - Stores a pointer to the network interface's mask.
- ifa_broadaddr - Stores a pointer to the network interface's broadcast
- address.
- ifa_dstaddr - Stores a pointer to the network interface's P2P destination
- address.
- ifa_data - Stores a pointer to address family specific data.
- --*/
- struct ifaddrs {
- struct ifaddrs *ifa_next;
- char *ifa_name;
- u_int ifa_flags;
- struct sockaddr *ifa_addr;
- struct sockaddr *ifa_netmask;
- struct sockaddr *ifa_broadaddr;
- struct sockaddr *ifa_dstaddr;
- void *ifa_data;
- };
- //
- // -------------------------------------------------------------------- Globals
- //
- //
- // -------------------------------------------------------- Function Prototypes
- //
- LIBC_API
- int
- getifaddrs (
- struct ifaddrs **Interfaces
- );
- /*++
- Routine Description:
- This routine creates a linked list of network interfaces structures
- describing all of the network interfaces on the local system.
- Arguments:
- Interfaces - Supplies a pointer that receives a pointer to the linked list
- of network interfaces.
- Return Value:
- 0 on success.
- -1 on failure, and errno will be set to indicate the error.
- --*/
- LIBC_API
- void
- freeifaddrs (
- struct ifaddrs *Interfaces
- );
- /*++
- Routine Description:
- This routine releases a list of network interfaces.
- Arguments:
- Interfaces - Supplies a pointer to the list of network interfaces to
- release.
- Return Value:
- None.
- --*/
- #ifdef __cplusplus
- }
- #endif
- #endif
|