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

📄 icmp6.h

📁 This directory contains source code for tcpdump, a tool for network monitoring and data acquisition
💻 H
📖 第 1 页 / 共 2 页
字号:

struct nd_neighbor_advert
{                               /* neighbor advertisement */
  struct icmp6_hdr nd_na_hdr;
  struct in6_addr nd_na_target; /* target address */
  /* could be followed by options */
};

#define nd_na_type		nd_na_hdr.icmp6_type
#define nd_na_code		nd_na_hdr.icmp6_code
#define nd_na_cksum		nd_na_hdr.icmp6_cksum
#define nd_na_flags_reserved	nd_na_hdr.icmp6_data32[0]

/* network endian */
#define ND_NA_FLAG_ROUTER       ((u_int32_t)htonl(0x80000000))
#define ND_NA_FLAG_SOLICITED    ((u_int32_t)htonl(0x40000000))
#define ND_NA_FLAG_OVERRIDE     ((u_int32_t)htonl(0x20000000))

struct nd_redirect
{                               /* redirect */
  struct icmp6_hdr nd_rd_hdr;
  struct in6_addr nd_rd_target; /* target address */
  struct in6_addr nd_rd_dst;    /* destination address */
  /* could be followed by options */
};

#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]

struct nd_opt_hdr
{                               /* Neighbor discovery option header */
  u_int8_t nd_opt_type;
  u_int8_t nd_opt_len;
  /* followed by option specific data */
};

#define ND_OPT_SOURCE_LINKADDR		1
#define ND_OPT_TARGET_LINKADDR		2
#define ND_OPT_PREFIX_INFORMATION	3
#define ND_OPT_REDIRECTED_HEADER	4
#define ND_OPT_MTU			5
#define ND_OPT_ADVINT			7

struct nd_opt_prefix_info
{                               /* prefix information */
  u_int8_t nd_opt_pi_type;
  u_int8_t nd_opt_pi_len;
  u_int8_t nd_opt_pi_prefix_len;
  u_int8_t nd_opt_pi_flags_reserved;
  u_int32_t nd_opt_pi_valid_time;
  u_int32_t nd_opt_pi_preferred_time;
  u_int32_t nd_opt_pi_reserved2;
  struct in6_addr nd_opt_pi_prefix;
};

#define ND_OPT_PI_FLAG_ONLINK		0x80
#define ND_OPT_PI_FLAG_AUTO		0x40
#define ND_OPT_PI_FLAG_ROUTER		0x20 /*2292bis */

struct nd_opt_rd_hdr
{                               /* redirected header */
  u_int8_t nd_opt_rh_type;
  u_int8_t nd_opt_rh_len;
  u_int16_t nd_opt_rh_reserved1;
  u_int32_t nd_opt_rh_reserved2;
  /* followed by IP header and data */
};

struct nd_opt_mtu
{                               /* MTU option */
  u_int8_t nd_opt_mtu_type;
  u_int8_t nd_opt_mtu_len;
  u_int16_t nd_opt_mtu_reserved;
  u_int32_t nd_opt_mtu_mtu;
};

struct nd_opt_advint
{                               /* Advertisement interval option */
  u_int8_t nd_opt_advint_type;
  u_int8_t nd_opt_advint_len;
  u_int16_t nd_opt_advint_reserved;
  u_int32_t nd_opt_advint_advint;
};

/*
 * icmp6 namelookup
 */

struct icmp6_namelookup
{
  struct icmp6_hdr icmp6_nl_hdr;
  u_int8_t icmp6_nl_nonce[8];
  int32_t icmp6_nl_ttl;
#if 0
  u_int8_t icmp6_nl_len;
  u_int8_t icmp6_nl_name[3];
#endif
  /* could be followed by options */
};

/*
 * icmp6 node information
 */
struct icmp6_nodeinfo
{
  struct icmp6_hdr icmp6_ni_hdr;
  u_int8_t icmp6_ni_nonce[8];
  /* could be followed by reply data */
};

#define ni_type		icmp6_ni_hdr.icmp6_type
#define ni_code		icmp6_ni_hdr.icmp6_code
#define ni_cksum	icmp6_ni_hdr.icmp6_cksum
#define ni_qtype	icmp6_ni_hdr.icmp6_data16[0]
#define ni_flags	icmp6_ni_hdr.icmp6_data16[1]

#define NI_QTYPE_NOOP           0   /* NOOP  */
#define NI_QTYPE_SUPTYPES       1   /* Supported Qtypes */
#define NI_QTYPE_FQDN           2   /* FQDN (draft 04) */
#define NI_QTYPE_DNSNAME        2   /* DNS Name */
#define NI_QTYPE_NODEADDR       3   /* Node Addresses */
#define NI_QTYPE_IPV4ADDR       4   /* IPv4 Addresses */

/* network endian */
#define NI_SUPTYPE_FLAG_COMPRESS	((u_int16_t)htons(0x1))
#define NI_FQDN_FLAG_VALIDTTL		((u_int16_t)htons(0x1))

/* network endian */
#define NI_NODEADDR_FLAG_TRUNCATE	((u_int16_t)htons(0x1))
#define NI_NODEADDR_FLAG_ALL		((u_int16_t)htons(0x2))
#define NI_NODEADDR_FLAG_COMPAT		((u_int16_t)htons(0x4))
#define NI_NODEADDR_FLAG_LINKLOCAL	((u_int16_t)htons(0x8))
#define NI_NODEADDR_FLAG_SITELOCAL	((u_int16_t)htons(0x10))
#define NI_NODEADDR_FLAG_GLOBAL		((u_int16_t)htons(0x20))
#define NI_NODEADDR_FLAG_ANYCAST	((u_int16_t)htons(0x40)) /* just experimental. not in spec */

struct ni_reply_fqdn
{
  u_int32_t ni_fqdn_ttl;         /* TTL */
  u_int8_t  ni_fqdn_namelen;     /* length in octets of the FQDN */
  u_int8_t  ni_fqdn_name[3];     /* XXX: alignment */
};

/*
 * Router Renumbering. as router-renum-08.txt
 */
struct icmp6_router_renum
{                               /* router renumbering header */
  struct icmp6_hdr rr_hdr;
  u_int8_t rr_segnum;
  u_int8_t rr_flags;
  u_int16_t rr_maxdelay;
  u_int32_t rr_reserved;
};

#define ICMP6_RR_FLAGS_TEST		0x80
#define ICMP6_RR_FLAGS_REQRESULT	0x40
#define ICMP6_RR_FLAGS_ALLIF		0x20
#define ICMP6_RR_FLAGS_SPECSITE		0x10
#define ICMP6_RR_FLAGS_PREVDONE		0x08

#define rr_type		rr_hdr.icmp6_type
#define rr_code		rr_hdr.icmp6_code
#define rr_cksum	rr_hdr.icmp6_cksum
#define rr_seqnum 	rr_hdr.icmp6_data32[0]

struct rr_pco_match
{                               /* match prefix part */
  u_int8_t rpm_code;
  u_int8_t rpm_len;
  u_int8_t rpm_ordinal;
  u_int8_t rpm_matchlen;
  u_int8_t rpm_minlen;
  u_int8_t rpm_maxlen;
  u_int16_t rpm_reserved;
  struct in6_addr rpm_prefix;
};

#define RPM_PCO_ADD		1
#define RPM_PCO_CHANGE		2
#define RPM_PCO_SETGLOBAL	3
#define RPM_PCO_MAX		4

struct rr_pco_use
{                               /* use prefix part */
  u_int8_t rpu_uselen;
  u_int8_t rpu_keeplen;
  u_int8_t rpu_ramask;
  u_int8_t rpu_raflags;
  u_int32_t rpu_vltime;
  u_int32_t rpu_pltime;
  u_int32_t rpu_flags;
  struct in6_addr rpu_prefix;
};

#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK	0x80
#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO	0x40

/* network endian */
#define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME     ((u_int32_t)htonl(0x80000000))
#define ICMP6_RR_PCOUSE_FLAGS_DECRPLTIME     ((u_int32_t)htonl(0x40000000))

struct rr_result
{                               /* router renumbering result message */
  u_int16_t rrr_flags;
  u_int8_t rrr_ordinal;
  u_int8_t rrr_matchedlen;
  u_int32_t rrr_ifid;
  struct in6_addr rrr_prefix;
};

/* network endian */
#define ICMP6_RR_RESULT_FLAGS_OOB		((u_int16_t)htons(0x0002))
#define ICMP6_RR_RESULT_FLAGS_FORBIDDEN		((u_int16_t)htons(0x0001))

#endif     /* not _NETINET_ICMP6_H_ */

⌨️ 快捷键说明

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