@ jwodder и @onteria_ хорошо охватили часть IPv6, поэтому я просто рассмотрю часть numbers :
ai_flags -> 40
Возможно, это будет сумма следующихдва в /usr/include/netdb.h
:
# define AI_V4MAPPED 0x0008 /* IPv4 mapped addresses are acceptable. */
# define AI_ADDRCONFIG 0x0020 /* Use configuration of this host to choose
Это семейство протоколов , inet, inet6, apx, unix и т. д.: * 10101 *
ai_family -> 2
bits/socket.h:78:#define PF_INET 2 /* IP protocol family. */
bits/socket.h:119:#define AF_INET PF_INET
Это тип сокета , поток, дграмма, пакет, rdm, seqpacket:
ai_socktype -> 1
bits/socket.h:42: SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
Протокол более высокого уровня , TCP, UDP, TCP6, UDP6, UDPlite,ospf, icmp и т. д .:
ai_protocol -> 6
Достаточно забавно, в /etc/protocols
:
tcp 6 TCP # transmission control protocol
Размер struct sockaddr
.(Отличается в зависимости от семейства адресов! Тьфу.)
ai_addrlen -> 16
Это потому, что вы получаете обратно struct sockaddr_in
, см. linux/in.h
:
#define __SOCK_SIZE__ 16 /* sizeof(struct sockaddr) */
struct sockaddr_in {
sa_family_t sin_family; /* Address family */
__be16 sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
/* Pad to size of `struct sockaddr'. */
unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
sizeof(unsigned short int) - sizeof(struct in_addr)];
};
И последнееодин, от /etc/hosts
:)
ai_addr hostname -> 127.0.0.1