]> The Tcpdump Group git mirrors - tcpdump/blobdiff - icmp6.h
Fix the pointer tests in the non-ndoified TTEST2() macro as well.
[tcpdump] / icmp6.h
diff --git a/icmp6.h b/icmp6.h
index 5873e90e344dcffae43e4c52d8d5b77c7b54c010..168a70897f10bc22912e16c4a44d60cf3772b520 100644 (file)
--- a/icmp6.h
+++ b/icmp6.h
@@ -1,5 +1,5 @@
-/* @(#) $Header: /tcpdump/master/tcpdump/icmp6.h,v 1.11 2001-06-01 23:01:04 itojun Exp $ (LBL) */
-/*     $NetBSD: icmp6.h,v 1.13 2000/08/03 16:30:37 itojun Exp $        */
+/* @(#) $Header: /tcpdump/master/tcpdump/icmp6.h,v 1.18 2007-08-29 02:31:44 mcr Exp $ (LBL) */
+/*     NetBSD: icmp6.h,v 1.13 2000/08/03 16:30:37 itojun Exp   */
 /*     $KAME: icmp6.h,v 1.22 2000/08/03 15:25:16 jinmei Exp $  */
 
 /*
@@ -104,9 +104,9 @@ struct icmp6_hdr {
 #define MLD6_LISTENER_DONE             132     /* multicast listener done */
 
 #define ND_ROUTER_SOLICIT              133     /* router solicitation */
-#define ND_ROUTER_ADVERT               134     /* router advertisment */
+#define ND_ROUTER_ADVERT               134     /* router advertisement */
 #define ND_NEIGHBOR_SOLICIT            135     /* neighbor solicitation */
-#define ND_NEIGHBOR_ADVERT             136     /* neighbor advertisment */
+#define ND_NEIGHBOR_ADVERT             136     /* neighbor advertisement */
 #define ND_REDIRECT                    137     /* redirect */
 
 #define ICMP6_ROUTER_RENUMBERING       138     /* router renumbering */
@@ -117,12 +117,20 @@ struct icmp6_hdr {
 #define ICMP6_FQDN_REPLY               140     /* FQDN reply */
 #define ICMP6_NI_QUERY                 139     /* node information request */
 #define ICMP6_NI_REPLY                 140     /* node information reply */
+#define IND_SOLICIT                    141     /* inverse neighbor solicitation */
+#define IND_ADVERT                     142     /* inverse neighbor advertisement */
 
-/* The definitions below are experimental. TBA */
-#define MLD6_MTRACE_RESP               141     /* mtrace response(to sender) */
-#define MLD6_MTRACE                    142     /* mtrace messages */
+#define ICMP6_V2_MEMBERSHIP_REPORT     143     /* v2 membership report */
+#define MLDV2_LISTENER_REPORT          143     /* v2 multicast listener report */
+#define ICMP6_HADISCOV_REQUEST         144
+#define ICMP6_HADISCOV_REPLY           145
+#define ICMP6_MOBILEPREFIX_SOLICIT     146
+#define ICMP6_MOBILEPREFIX_ADVERT      147
 
-#define ICMP6_MAXTYPE                  142
+#define MLD6_MTRACE_RESP               200     /* mtrace response(to sender) */
+#define MLD6_MTRACE                    201     /* mtrace messages */
+
+#define ICMP6_MAXTYPE                  201
 
 #define ICMP6_DST_UNREACH_NOROUTE      0       /* no route to destination */
 #define ICMP6_DST_UNREACH_ADMIN                1       /* administratively prohibited */
@@ -170,6 +178,9 @@ struct mld6_hdr {
 #define mld6_maxdelay  mld6_hdr.icmp6_data16[0]
 #define mld6_reserved  mld6_hdr.icmp6_data16[1]
 
+#define MLD_MINLEN     24
+#define MLDV2_MINLEN   28
+
 /*
  * Neighbor Discovery
  */
@@ -234,10 +245,10 @@ struct nd_neighbor_advert {       /* neighbor advertisement */
 #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]
-/* netowkr 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))
+
+#define ND_NA_FLAG_ROUTER              0x80000000
+#define ND_NA_FLAG_SOLICITED           0x40000000
+#define ND_NA_FLAG_OVERRIDE            0x20000000
 
 struct nd_redirect {           /* redirect */
        struct icmp6_hdr        nd_rd_hdr;
@@ -265,16 +276,16 @@ struct nd_opt_hdr {               /* Neighbor discovery option header */
 #define ND_OPT_ADVINTERVAL             7
 #define ND_OPT_HOMEAGENT_INFO          8
 #define ND_OPT_ROUTE_INFO              9       /* draft-ietf-ipngwg-router-preference, not officially assigned yet */
-
+#define ND_OPT_RDNSS                   25
 
 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;
+       u_int8_t        nd_opt_pi_valid_time[4];
+       u_int8_t        nd_opt_pi_preferred_time[4];
+       u_int8_t        nd_opt_pi_reserved2[4];
        struct in6_addr nd_opt_pi_prefix;
 };
 
@@ -297,6 +308,14 @@ struct nd_opt_mtu {                /* MTU option */
        u_int32_t       nd_opt_mtu_mtu;
 };
 
+struct nd_opt_rdnss {          /* RDNSS RFC 5006 */
+       u_int8_t        nd_opt_rdnss_type;
+       u_int8_t        nd_opt_rdnss_len;
+       u_int16_t       nd_opt_rdnss_reserved;
+       u_int32_t       nd_opt_rdnss_lifetime;
+       struct in6_addr nd_opt_rdnss_addr[1];   /* variable-length */
+};
+
 struct nd_opt_advinterval {    /* Advertisement interval option */
        u_int8_t        nd_opt_adv_type;
        u_int8_t        nd_opt_adv_len;