⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ipv6.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
#define MIN(a, b) ((a) <= (b) ? (a) : (b))/* rfc 3513 defines the address prefices */#define isv6mcast(addr)	  ((addr)[0] == 0xff)#define islinklocal(addr) ((addr)[0] == 0xfe && ((addr)[1] & 0xc0) == 0x80)#define issitelocal(addr) ((addr)[0] == 0xfe && ((addr)[1] & 0xc0) == 0xc0)#define isv6global(addr) (((addr)[0] & 0xe0) == 0x20)#define optexsts(np) (nhgets((np)->ploadlen) > 24)#define issmcast(addr) (memcmp((addr), v6solicitednode, 13) == 0)/* from RFC 2460 */typedef struct Ip6hdr     Ip6hdr;typedef struct Opthdr     Opthdr;typedef struct Routinghdr Routinghdr;typedef struct Fraghdr6    Fraghdr6;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];	uchar dst[IPaddrlen];};struct Opthdr {	uchar nexthdr;	uchar len;};struct Routinghdr {	uchar nexthdr;	uchar len;	uchar rtetype;	uchar segrem;};struct Fraghdr6 {	uchar nexthdr;	uchar res;	uchar offsetRM[2];	// Offset, Res, M flag	uchar id[4];};enum {			/* Header Types */	HBH		= 0,	//?	ICMP		= 1,	IGMP		= 2,	GGP		= 3,	IPINIP		= 4,	ST		= 5,	TCP		= 6,	UDP		= 17,	ISO_TP4		= 29,	RH		= 43,	FH		= 44,	IDRP		= 45,	RSVP		= 46,	AH		= 51,	ESP		= 52,	ICMPv6		= 58,		NNH		= 59,	DOH		= 60,	ISO_IP		= 80,	IGRP		= 88,	OSPF		= 89,		Maxhdrtype	= 256,};enum {	//	multicast flgs and scop	well_known_flg				= 0,	transient_flg				= 1,	node_local_scop 			= 1,	link_local_scop 			= 2,	site_local_scop 			= 5,	org_local_scop				= 8,	global_scop				= 14,	//	various prefix lengths	SOLN_PREF_LEN				= 13,	//	icmpv6 unreach codes	icmp6_no_route				= 0,	icmp6_ad_prohib				= 1,	icmp6_unassigned			= 2,	icmp6_adr_unreach			= 3,	icmp6_port_unreach			= 4,	icmp6_unkn_code				= 5,	// 	various flags & constants	v6MINTU      				= 1280,		HOP_LIMIT    				= 255,	ETHERHDR_LEN 				= 14,	IPV6HDR_LEN  				= 40,	IPV4HDR_LEN  				= 20,	// 	option types	SRC_LLADDRESS    			= 1,	TARGET_LLADDRESS 			= 2,	PREFIX_INFO      			= 3,	REDIR_HEADER     			= 4,	MTU_OPTION       			= 5,	SRC_UNSPEC  				= 0,	SRC_UNI     				= 1, 	TARG_UNI    				= 2,	TARG_MULTI  				= 3,	t_unitent   				= 1,	t_uniproxy  				= 2,	t_unirany   				= 3,	//	Router constants (all times in milliseconds)	MAX_INITIAL_RTR_ADVERT_INTERVAL 	= 16000,	MAX_INITIAL_RTR_ADVERTISEMENTS  	= 3, 	MAX_FINAL_RTR_ADVERTISEMENTS    	= 3,	MIN_DELAY_BETWEEN_RAS 			= 3000,	MAX_RA_DELAY_TIME     			= 500,	//	Host constants	MAX_RTR_SOLICITATION_DELAY 		= 1000,	RTR_SOLICITATION_INTERVAL  		= 4000,	MAX_RTR_SOLICITATIONS      		= 3,	//	Node constants	MAX_MULTICAST_SOLICIT   		= 3,	MAX_UNICAST_SOLICIT     		= 3,	MAX_ANYCAST_DELAY_TIME  		= 1000,	MAX_NEIGHBOR_ADVERTISEMENT 		= 3,		REACHABLE_TIME 				= 30000,	RETRANS_TIMER  				= 1000,		DELAY_FIRST_PROBE_TIME 			= 5000,};extern void ipv62smcast(uchar *, uchar *);extern void icmpns(Fs *f, uchar* src, int suni, uchar* targ, int tuni, uchar* mac);extern void icmpna(Fs *f, uchar* src, uchar* dst, uchar* targ, uchar* mac, uchar flags);extern void icmpttlexceeded6(Fs *f, Ipifc *ifc, Block *bp);extern void icmppkttoobig6(Fs *f, Ipifc *ifc, Block *bp);extern void icmphostunr(Fs *f, Ipifc *ifc, Block *bp, int code, int free);extern uchar v6allnodesN[IPaddrlen];extern uchar v6allnodesL[IPaddrlen];extern uchar v6allroutersN[IPaddrlen];extern uchar v6allroutersL[IPaddrlen];extern uchar v6allnodesNmask[IPaddrlen];extern uchar v6allnodesLmask[IPaddrlen];extern uchar v6allroutersS[IPaddrlen];extern uchar v6solicitednode[IPaddrlen];extern uchar v6solicitednodemask[IPaddrlen];extern uchar v6Unspecified[IPaddrlen];extern uchar v6loopback[IPaddrlen];extern uchar v6loopbackmask[IPaddrlen];extern uchar v6linklocal[IPaddrlen];extern uchar v6linklocalmask[IPaddrlen];extern uchar v6sitelocal[IPaddrlen];extern uchar v6sitelocalmask[IPaddrlen];extern uchar v6glunicast[IPaddrlen];extern uchar v6multicast[IPaddrlen];extern uchar v6multicastmask[IPaddrlen];extern int v6llpreflen;extern int v6slpreflen;extern int v6lbpreflen;extern int v6mcpreflen;extern int v6snpreflen;extern int v6aNpreflen;extern int v6aLpreflen;extern int ReTransTimer;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -