📄 ip.h
字号:
enum { IPaddrlen= 16, IPv4addrlen= 4, IPv4off= 12, IPllen= 4, IPV4HDR_LEN= 20, /* vihl & vcf[0] values */ IP_VER4= 0x40, IP_VER6= 0x60,};#define ISIPV6MCAST(addr) ((addr)[0] == 0xff)#define ISIPV6LINKLOCAL(addr) ((addr)[0] == 0xfe && ((addr)[1] & 0xc0) == 0x80)/* * ipv6 constants * `ra' is `router advertisement', `rs' is `router solicitation'. * `na' is `neighbour advertisement'. */enum { IPV6HDR_LEN = 40, /* neighbour discovery option types */ V6nd_srclladdr = 1, V6nd_targlladdr = 2, V6nd_pfxinfo = 3, V6nd_redirhdr = 4, V6nd_mtu = 5, /* new since rfc2461; see iana.org/assignments/icmpv6-parameters */ V6nd_home = 8, V6nd_srcaddrs = 9, /* rfc3122 */ V6nd_ip = 17, /* /lib/rfc/drafts/draft-jeong-dnsop-ipv6-dns-discovery-12.txt */ V6nd_rdns = 25, /* plan 9 extensions */ V6nd_9fs = 250, V6nd_9auth = 251, /* Router constants (all times in ms.) */ Maxv6initraintvl= 16000, Maxv6initras = 3, Maxv6finalras = 3, Minv6interradelay= 3000, Maxv6radelay = 500, /* Host constants */ Maxv6rsdelay = 1000, V6rsintvl = 4000, Maxv6rss = 3, /* Node constants */ Maxv6mcastrss = 3, Maxv6unicastrss = 3, Maxv6anycastdelay= 1000, Maxv6na = 3, V6reachabletime = 30000, V6retranstimer = 1000, V6initprobedelay= 5000,};/* V6 header on the wire */typedef struct Ip6hdr Ip6hdr;struct Ip6hdr { uchar vcf[4]; /* version:4, traffic class:8, flow label:20 */ uchar ploadlen[2]; /* payload length: packet length - 40 */ uchar proto; /* next header type */ uchar ttl; /* hop limit */ uchar src[IPaddrlen]; /* source address */ uchar dst[IPaddrlen]; /* destination address */ uchar payload[];};/* * user-level icmpv6 with control message "headers" */typedef struct Icmp6hdr Icmp6hdr;struct Icmp6hdr { uchar _0_[8]; uchar laddr[IPaddrlen]; /* local address */ uchar raddr[IPaddrlen]; /* remote address */};/* * user level udp headers with control message "headers" */enum { Udphdrsize= 52, /* size of a Udphdr */};typedef struct Udphdr Udphdr;struct Udphdr{ uchar raddr[IPaddrlen]; /* V6 remote address */ uchar laddr[IPaddrlen]; /* V6 local address */ uchar ifcaddr[IPaddrlen]; /* V6 ifc addr msg was received on */ uchar rport[2]; /* remote port */ uchar lport[2]; /* local port */};uchar* defmask(uchar*);void maskip(uchar*, uchar*, uchar*);int eipfmt(Fmt*);int isv4(uchar*);vlong parseip(uchar*, char*);vlong parseipmask(uchar*, char*);char* v4parseip(uchar*, char*);char* v4parsecidr(uchar*, uchar*, char*);int parseether(uchar*, char*);int myipaddr(uchar*, char*);int myetheraddr(uchar*, char*);int equivip4(uchar*, uchar*);int equivip6(uchar*, uchar*);void hnputv(void*, uvlong);void hnputl(void*, uint);void hnputs(void*, ushort);uvlong nhgetv(void*);uint nhgetl(void*);ushort nhgets(void*);ushort ptclbsum(uchar*, int);int v6tov4(uchar*, uchar*);void v4tov6(uchar*, uchar*);#define ipcmp(x, y) memcmp(x, y, IPaddrlen)#define ipmove(x, y) memmove(x, y, IPaddrlen)extern uchar IPv4bcast[IPaddrlen];extern uchar IPv4bcastobs[IPaddrlen];extern uchar IPv4allsys[IPaddrlen];extern uchar IPv4allrouter[IPaddrlen];extern uchar IPnoaddr[IPaddrlen];extern uchar v4prefix[IPaddrlen];extern uchar IPallbits[IPaddrlen];#define CLASS(p) ((*(uchar*)(p))>>6)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -