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

📄 aodv.h

📁 TCPDUMP的C语言源代码,是在数据链路层的应用
💻 H
字号:
/* @(#) $Header: /tcpdump/master/tcpdump/aodv.h,v 1.3 2003-09-13 01:34:42 guy Exp $ (LBL) *//* * Copyright (c) 2003 Bruce M. Simpson <bms@spc.org> * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *        This product includes software developed by Bruce M. Simpson. * 4. Neither the name of Bruce M. Simpson nor the names of co- *    contributors may be used to endorse or promote products derived *    from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY Bruce M. Simpson AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL Bruce M. Simpson OR CONTRIBUTORS * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */#ifndef _AODV_H_#define _AODV_H_struct aodv_rreq {	u_int8_t	rreq_type;	/* AODV message type (1) */	u_int8_t	rreq_flags;	/* various flags */	u_int8_t	rreq_zero0;	/* reserved, set to zero */	u_int8_t	rreq_hops;	/* number of hops from originator */	u_int32_t	rreq_id;	/* request ID */	u_int32_t	rreq_da;	/* destination IPv4 address */	u_int32_t	rreq_ds;	/* destination sequence number */	u_int32_t	rreq_oa;	/* originator IPv4 address */	u_int32_t	rreq_os;	/* originator sequence number */};#ifdef INET6struct aodv_rreq6 {	u_int8_t	rreq_type;	/* AODV message type (1) */	u_int8_t	rreq_flags;	/* various flags */	u_int8_t	rreq_zero0;	/* reserved, set to zero */	u_int8_t	rreq_hops;	/* number of hops from originator */	u_int32_t	rreq_id;	/* request ID */	struct in6_addr	rreq_da;	/* destination IPv6 address */	u_int32_t	rreq_ds;	/* destination sequence number */	struct in6_addr	rreq_oa;	/* originator IPv6 address */	u_int32_t	rreq_os;	/* originator sequence number */};struct aodv_rreq6_draft_01 {	u_int8_t	rreq_type;	/* AODV message type (16) */	u_int8_t	rreq_flags;	/* various flags */	u_int8_t	rreq_zero0;	/* reserved, set to zero */	u_int8_t	rreq_hops;	/* number of hops from originator */	u_int32_t	rreq_id;	/* request ID */	u_int32_t	rreq_ds;	/* destination sequence number */	u_int32_t	rreq_os;	/* originator sequence number */	struct in6_addr	rreq_da;	/* destination IPv6 address */	struct in6_addr	rreq_oa;	/* originator IPv6 address */};#endif#define	RREQ_JOIN	0x80		/* join (reserved for multicast */#define	RREQ_REPAIR	0x40		/* repair (reserved for multicast */#define	RREQ_GRAT	0x20		/* gratuitous RREP */#define	RREQ_DEST	0x10		/* destination only */#define	RREQ_UNKNOWN	0x08		/* unknown destination sequence num */#define	RREQ_FLAGS_MASK	0xF8		/* mask for rreq_flags */struct aodv_rrep {	u_int8_t	rrep_type;	/* AODV message type (2) */	u_int8_t	rrep_flags;	/* various flags */	u_int8_t	rrep_ps;	/* prefix size */	u_int8_t	rrep_hops;	/* number of hops from o to d */	u_int32_t	rrep_da;	/* destination IPv4 address */	u_int32_t	rrep_ds;	/* destination sequence number */	u_int32_t	rrep_oa;	/* originator IPv4 address */	u_int32_t	rrep_life;	/* lifetime of this route */};#ifdef INET6struct aodv_rrep6 {	u_int8_t	rrep_type;	/* AODV message type (2) */	u_int8_t	rrep_flags;	/* various flags */	u_int8_t	rrep_ps;	/* prefix size */	u_int8_t	rrep_hops;	/* number of hops from o to d */	struct in6_addr	rrep_da;	/* destination IPv6 address */	u_int32_t	rrep_ds;	/* destination sequence number */	struct in6_addr	rrep_oa;	/* originator IPv6 address */	u_int32_t	rrep_life;	/* lifetime of this route */};struct aodv_rrep6_draft_01 {	u_int8_t	rrep_type;	/* AODV message type (17) */	u_int8_t	rrep_flags;	/* various flags */	u_int8_t	rrep_ps;	/* prefix size */	u_int8_t	rrep_hops;	/* number of hops from o to d */	u_int32_t	rrep_ds;	/* destination sequence number */	struct in6_addr	rrep_da;	/* destination IPv6 address */	struct in6_addr	rrep_oa;	/* originator IPv6 address */	u_int32_t	rrep_life;	/* lifetime of this route */};#endif#define	RREP_REPAIR		0x80	/* repair (reserved for multicast */#define	RREP_ACK		0x40	/* acknowledgement required */#define	RREP_FLAGS_MASK		0xC0	/* mask for rrep_flags */#define	RREP_PREFIX_MASK	0x1F	/* mask for prefix size */struct rerr_unreach {	u_int32_t	u_da;	/* IPv4 address */	u_int32_t	u_ds;	/* sequence number */};#ifdef INET6struct rerr_unreach6 {	struct in6_addr	u_da;	/* IPv6 address */	u_int32_t	u_ds;	/* sequence number */};struct rerr_unreach6_draft_01 {	struct in6_addr	u_da;	/* IPv6 address */	u_int32_t	u_ds;	/* sequence number */};#endifstruct aodv_rerr {	u_int8_t	rerr_type;	/* AODV message type (3 or 18) */	u_int8_t	rerr_flags;	/* various flags */	u_int8_t	rerr_zero0;	/* reserved, set to zero */	u_int8_t	rerr_dc;	/* destination count */	union {		struct	rerr_unreach dest[1];#ifdef INET6		struct	rerr_unreach6 dest6[1];		struct	rerr_unreach6_draft_01 dest6_draft_01[1];#endif	} r;};#define RERR_NODELETE		0x80	/* don't delete the link */#define RERR_FLAGS_MASK		0x80	/* mask for rerr_flags */struct aodv_rrep_ack {	u_int8_t	ra_type;	u_int8_t	ra_zero0;};union aodv {	struct aodv_rreq rreq;	struct aodv_rrep rrep;	struct aodv_rerr rerr;	struct aodv_rrep_ack rrep_ack;#ifdef INET6	struct aodv_rreq6 rreq6;	struct aodv_rreq6_draft_01 rreq6_draft_01;	struct aodv_rrep6 rrep6;	struct aodv_rrep6_draft_01 rrep6_draft_01;#endif};#define	AODV_RREQ		1	/* route request */#define	AODV_RREP		2	/* route response */#define	AODV_RERR		3	/* error report */#define	AODV_RREP_ACK		4	/* route response acknowledgement */#define AODV_V6_DRAFT_01_RREQ		16	/* IPv6 route request */#define AODV_V6_DRAFT_01_RREP		17	/* IPv6 route response */#define AODV_V6_DRAFT_01_RERR		18	/* IPv6 error report */#define AODV_V6_DRAFT_01_RREP_ACK	19	/* IPV6 route response acknowledgment */struct aodv_ext {	u_int8_t	type;		/* extension type */	u_int8_t	length;		/* extension length */};struct aodv_hello {	struct	aodv_ext	eh;		/* extension header */	u_int32_t		interval;	/* expect my next hello in						 * (n) ms */};#define	AODV_EXT_HELLO	1#endif /* _AODV_H_ */

⌨️ 快捷键说明

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