mcu_hi3321_watch/open_source/musl/include/ifaddrs.h
2025-05-26 20:15:20 +08:00

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