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

📄 ip6_misc.h

📁 “网络安全技术实践与代码详解”实例代码
💻 H
字号:
/* * Copyright (c) 1993, 1994, 1997 *	The Regents of the University of California.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that: (1) source code distributions * retain the above copyright notice and this paragraph in its entirety, (2) * distributions including binary code include the above copyright notice and * this paragraph in its entirety in the documentation or other materials * provided with the distribution, and (3) all advertising materials mentioning * features or use of this software display the following acknowledgement: * ``This product includes software developed by the University of California, * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of * the University nor the names of its contributors may be used to endorse * or promote products derived from this software without specific prior * written permission. * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * @(#) $Header: /tcpdump/master/libpcap/Win32/Include/ip6_misc.h,v 1.4 2004/07/06 23:45:29 risso Exp $ (LBL) *//* * This file contains a collage of declarations for IPv6 from FreeBSD not present in Windows */#include <winsock2.h>#ifndef __MINGW32__#include <ws2tcpip.h>#endif /* __MINGW32__ */#define	IN_MULTICAST(a)		IN_CLASSD(a)#define	IN_EXPERIMENTAL(a)	((((u_int32_t) (a)) & 0xf0000000) == 0xf0000000)#define	IN_LOOPBACKNET		127#ifdef __MINGW32__/* IPv6 address */struct in6_addr  {    union      {	u_int8_t		u6_addr8[16];	u_int16_t	u6_addr16[8];	u_int32_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#define s6_addr64		in6_u.u6_addr64  };#define IN6ADDR_ANY_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }#define IN6ADDR_LOOPBACK_INIT { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 }#endif /* __MINGW32__ */#if (defined WIN32) || (defined __MINGW32__)typedef unsigned short	sa_family_t;#endif#ifdef __MINGW32__#define	__SOCKADDR_COMMON(sa_prefix) \  sa_family_t sa_prefix##family/* Ditto, for IPv6.  */struct sockaddr_in6  {    __SOCKADDR_COMMON (sin6_);    u_int16_t sin6_port;		/* Transport layer port # */    u_int32_t sin6_flowinfo;	/* IPv6 flow information */    struct in6_addr sin6_addr;	/* IPv6 address */  };#define IN6_IS_ADDR_V4MAPPED(a) \	((((u_int32_t *) (a))[0] == 0) && (((u_int32_t *) (a))[1] == 0) && \	 (((u_int32_t *) (a))[2] == htonl (0xffff)))#define IN6_IS_ADDR_MULTICAST(a) (((u_int8_t *) (a))[0] == 0xff)#define IN6_IS_ADDR_LINKLOCAL(a) \	((((u_int32_t *) (a))[0] & htonl (0xffc00000)) == htonl (0xfe800000))#define IN6_IS_ADDR_LOOPBACK(a) \	(((u_int32_t *) (a))[0] == 0 && ((u_int32_t *) (a))[1] == 0 && \	 ((u_int32_t *) (a))[2] == 0 && ((u_int32_t *) (a))[3] == htonl (1))#endif /* __MINGW32__ */#define ip6_vfc   ip6_ctlun.ip6_un2_vfc#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim#define nd_rd_type               nd_rd_hdr.icmp6_type#define nd_rd_code               nd_rd_hdr.icmp6_code#define nd_rd_cksum              nd_rd_hdr.icmp6_cksum#define nd_rd_reserved           nd_rd_hdr.icmp6_data32[0]/* *	IPV6 extension headers */#define IPPROTO_HOPOPTS		0	/* IPv6 hop-by-hop options	*/#define IPPROTO_IPV6		41  /* IPv6 header.  */#define IPPROTO_ROUTING		43	/* IPv6 routing header		*/#define IPPROTO_FRAGMENT	44	/* IPv6 fragmentation header	*/#define IPPROTO_ESP		50	/* encapsulating security payload */#define IPPROTO_AH		51	/* authentication header	*/#define IPPROTO_ICMPV6		58	/* ICMPv6			*/#define IPPROTO_NONE		59	/* IPv6 no next header		*/#define IPPROTO_DSTOPTS		60	/* IPv6 destination options	*/#define IPPROTO_PIM			103 /* Protocol Independent Multicast.  */#define	 IPV6_RTHDR_TYPE_0 0/* Option types and related macros */#define IP6OPT_PAD1		0x00	/* 00 0 00000 */#define IP6OPT_PADN		0x01	/* 00 0 00001 */#define IP6OPT_JUMBO		0xC2	/* 11 0 00010 = 194 */#define IP6OPT_JUMBO_LEN	6#define IP6OPT_ROUTER_ALERT	0x05	/* 00 0 00101 */#define IP6OPT_RTALERT_LEN	4#define IP6OPT_RTALERT_MLD	0	/* Datagram contains an MLD message */#define IP6OPT_RTALERT_RSVP	1	/* Datagram contains an RSVP message */#define IP6OPT_RTALERT_ACTNET	2 	/* contains an Active Networks msg */#define IP6OPT_MINLEN		2#define IP6OPT_BINDING_UPDATE	0xc6	/* 11 0 00110 */#define IP6OPT_BINDING_ACK	0x07	/* 00 0 00111 */#define IP6OPT_BINDING_REQ	0x08	/* 00 0 01000 */#define IP6OPT_HOME_ADDRESS	0xc9	/* 11 0 01001 */#define IP6OPT_EID		0x8a	/* 10 0 01010 */#define IP6OPT_TYPE(o)		((o) & 0xC0)#define IP6OPT_TYPE_SKIP	0x00#define IP6OPT_TYPE_DISCARD	0x40#define IP6OPT_TYPE_FORCEICMP	0x80#define IP6OPT_TYPE_ICMP	0xC0#define IP6OPT_MUTABLE		0x20#ifdef __MINGW32__#ifndef EAI_ADDRFAMILYstruct addrinfo {	int	ai_flags;	/* AI_PASSIVE, AI_CANONNAME */	int	ai_family;	/* PF_xxx */	int	ai_socktype;	/* SOCK_xxx */	int	ai_protocol;	/* 0 or IPPROTO_xxx for IPv4 and IPv6 */	size_t	ai_addrlen;	/* length of ai_addr */	char	*ai_canonname;	/* canonical name for hostname */	struct sockaddr *ai_addr;	/* binary address */	struct addrinfo *ai_next;	/* next structure in linked list */};#endif#endif /* __MINGW32__ */

⌨️ 快捷键说明

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