124 lines
3.1 KiB
C
124 lines
3.1 KiB
C
#ifndef _IFADDRS_H
|
|
#define _IFADDRS_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <features.h>
|
|
#include <netinet/in.h>
|
|
#include <sys/socket.h>
|
|
|
|
struct ifaddrs {
|
|
struct ifaddrs *ifa_next;
|
|
char *ifa_name;
|
|
unsigned ifa_flags;
|
|
struct sockaddr *ifa_addr;
|
|
struct sockaddr *ifa_netmask;
|
|
union {
|
|
struct sockaddr *ifu_broadaddr;
|
|
struct sockaddr *ifu_dstaddr;
|
|
} ifa_ifu;
|
|
void *ifa_data;
|
|
};
|
|
#define ifa_broadaddr ifa_ifu.ifu_broadaddr
|
|
#define ifa_dstaddr ifa_ifu.ifu_dstaddr
|
|
|
|
/**
|
|
* @defgroup Network_Interfaces_Info Network Interfaces Info
|
|
* This section contains the interfaces to get information about Network interfaces in LwIP.
|
|
* @ingroup libc
|
|
*/
|
|
|
|
/*
|
|
* Func Name: freeifaddrs
|
|
*/
|
|
|
|
/**
|
|
* @ingroup Network_Interfaces_Info
|
|
* @par Prototype
|
|
* @code
|
|
* void freeifaddrs(struct ifaddrs *ifa);
|
|
* @endcode
|
|
*
|
|
* @par Purpose
|
|
* This function is to free the memory of struct ifaddrs * provided by getifaddrs.
|
|
*
|
|
* @par Description
|
|
* The function getifaddrs, provides the list of network interfaces in struct ifaddrs*.
|
|
* The application has to free the memory of struct ifaddrs * by using this function.
|
|
*
|
|
* @param[in] ifap Pointer to struct ifaddrs [N/A]
|
|
*
|
|
* @par Return values
|
|
* None
|
|
*
|
|
* @par Required Header File
|
|
* ifaddrs.h.h
|
|
*
|
|
* @par Note
|
|
* \n
|
|
* N/A
|
|
*
|
|
* @par Related Topics
|
|
* \n
|
|
* N/A
|
|
*/
|
|
void freeifaddrs(struct ifaddrs *);
|
|
|
|
/*
|
|
* Func Name: getifaddrs
|
|
*/
|
|
|
|
/**
|
|
* @ingroup Network_Interfaces_Info
|
|
* @par Prototype
|
|
* @code
|
|
* int getifaddrs(struct ifaddrs **ifap);
|
|
* @endcode
|
|
*
|
|
* @par Purpose
|
|
* This function creates a linked list of structures describing the network
|
|
* interfaces of the local system, and stores the address of the first item
|
|
* of the list in *ifap.
|
|
*
|
|
* @par Description
|
|
* This function creates a linked list of struct ifaddrs, which holds the information
|
|
* about the network interfaces of the local system. The ifa_next field contains a
|
|
* pointer to the next structure on the list, or NULL if this is the last item of the list.
|
|
* The ifa_name points to the null-terminated interface name. The ifa_flags field
|
|
* contains the interface flags. The ifa_addr field points to a structure containing
|
|
* the interface address. The ifa_netmask field points to a structure containing
|
|
* the netmask associated with ifa_addr, if applicable for the address family.
|
|
* Depending on whether the bit IFF_brcast or IFF_POINTOPOINT is set
|
|
* in ifa_flags (only one can be set at a time), either ifa_broadaddr will contain
|
|
* the brcast address associated with ifa_addr (if applicable for the address
|
|
* family) or ifa_dstaddr will contain the destination address of the point-to-point
|
|
* interface.
|
|
*
|
|
* @param[in] ifap Double Pointer to struct ifaddrs [N/A]
|
|
*
|
|
* @par Return values
|
|
* ERR_OK : on success
|
|
* Non zero value : on failure
|
|
*
|
|
* @par Required Header File
|
|
* ifaddrs.h.h
|
|
*
|
|
* @par Note
|
|
* The data returned by getifaddrs() is dynamically allocated and should be freed
|
|
* using freeifaddrs() when no longer needed.\n
|
|
*
|
|
* @par Related Topics
|
|
* \n
|
|
* N/A
|
|
*/
|
|
int getifaddrs(struct ifaddrs **);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|