Last active
August 29, 2015 14:06
-
-
Save zweng/27418f22883e6d6b0037 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct addrinfo { | |
int ai_flags; // AI_PASSIVE, AI_CANONNAME, etc. | |
int ai_family; // AF_INET, AF_INET6, AF_UNSPEC | |
int ai_socktype; // SOCK_STREAM, SOCK_DGRAM | |
int ai_protocol; // use 0 for "any" | |
size_t ai_addrlen; // size of ai_addr in bytes | |
struct sockaddr *ai_addr; // struct sockaddr_in or _in6 | |
char *ai_canonname; // full canonical hostname | |
struct addrinfo *ai_next; // linked list, next node | |
}; | |
struct sockaddr { | |
unsigned short sa_family; // address family, AF_xxx | |
char sa_data[14]; // 14 bytes of protocol address | |
}; | |
// (IPv4 only--see struct sockaddr_in6 for IPv6) | |
struct sockaddr_in { | |
short int sin_family; // Address family, AF_INET | |
unsigned short int sin_port; // Port number | |
struct in_addr sin_addr; // Internet address | |
unsigned char sin_zero[8]; // Same size as struct sockaddr | |
}; | |
// (IPv4 only--see struct in6_addr for IPv6) | |
// Internet address (a structure for historical reasons) | |
struct in_addr { | |
uint32_t s_addr; // that's a 32-bit int (4 bytes) | |
}; | |
// (IPv6 only--see struct sockaddr_in and struct in_addr for IPv4) | |
struct sockaddr_in6 { | |
u_int16_t sin6_family; // address family, AF_INET6 | |
u_int16_t sin6_port; // port number, Network Byte Order | |
u_int32_t sin6_flowinfo; // IPv6 flow information | |
struct in6_addr sin6_addr; // IPv6 address | |
u_int32_t sin6_scope_id; // Scope ID | |
}; | |
struct in6_addr { | |
unsigned char s6_addr[16]; // IPv6 address | |
}; | |
struct sockaddr_storage { | |
sa_family_t ss_family; // address family | |
// all this is padding, implementation specific, ignore it: | |
char __ss_pad1[_SS_PAD1SIZE]; | |
int64_t __ss_align; | |
char __ss_pad2[_SS_PAD2SIZE]; | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment