📄 readme-ip
字号:
@title IP data-structure documentation
@author Stephen Dawson-Haggerty
@release public
----------------------------------------------------------------------
The ip-stack provides a bare IP datagram interface to the network
layer; this is documented in comments in the code.
For the purposes of socket programming, two data structures are most
important. The 'struct sockaddr_in6' and the 'struct in6_addr'. They
are substantially shared with the linux/bsd versions, and reproduced
below.
struct in6_addr
{
union
{
uint8_t u6_addr8[16];
uint16_t u6_addr16[8];
uint32_t u6_addr32[4];
} in6_u;
#define s6_addr in6_u.u6_addr8
#define s6_addr16 in6_u.u6_addr16
#define s6_addr32 in6_u.u6_addr32
};
struct sockaddr_in6 {
uint16_t sin6_port;
struct in6_addr sin6_addr;
};
void inet_pton6(char *addr, struct in6_addr *dest);
Usage
----------------------------------------------------------------------
Example 1: Suppose we want to setup a sockaddr_in6 to point to ff02::5, port 10000:
{
struct sockaddr_in6 sa6;
inet_pton6("ff02::5", &sa6.sin6_addr);
sa6.sin6_port = htons(10000);
}
Example 2: Do the same thing, but without the overhead of storing and
parsing the string address representation.
{
struct sockaddr_in6 sa6;
memset(&sa6, 0, sizeof(struct sockaddr_in6));
sa6.sin6_addr.s6_addr16[0] = htons(0xff02);
sa6.sin6_addr.s6_addr[15] = 5;
sa6.sin6_port = htons(10000);
}
This code is very unix-y; the second example will work on *nix's.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -