Mobile IPv6 support, from Martti Kuparinen.
authorguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 14 Dec 2000 08:35:08 +0000 (08:35 +0000)
committerguy <guy@f5534014-38df-0310-8fa8-9805f1628bb7>
Thu, 14 Dec 2000 08:35:08 +0000 (08:35 +0000)
git-svn-id: http://anonsvn.wireshark.org/wireshark/trunk@2755 f5534014-38df-0310-8fa8-9805f1628bb7

AUTHORS
doc/ethereal.pod.template
packet-ipv6.c
packet-ipv6.h

diff --git a/AUTHORS b/AUTHORS
index 2e90836ba577402907b40144e44ecfbe3f9f8977..7af88dece956f0b77e921569381f034bf11fcf88 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -458,6 +458,10 @@ Burke Lau <burke_lau@agilent.com> {
        MPLS-over-PPP support
 }
 
+Martti Kuparinen <martti.kuparinen@nomadiclab.com> {
+       Mobile IPv6 support
+}
+
 Alain Magloire <alainm@rcsm.ece.mcgill.ca> was kind enough to
 give his permission to use his version of snprintf.c.
 
index 765867e3efa55476a2937a04d5b6772916a2f4fc..7b4ea8124a64423a08283a0ed37465cd17a9bd90 100644 (file)
@@ -1008,6 +1008,7 @@ B<http://www.ethereal.com>.
   Kevin Shi                <techishi@ms22.hinet.net>
   Mike Frisch              <mfrisch@saturn.tlug.org>
   Burke Lau                <burke_lau@agilent.com>
+  Martti Kuparinen         <martti.kuparinen@nomadiclab.com>
 
 Alain Magloire <alainm@rcsm.ece.mcgill.ca> was kind enough to give his
 permission to use his version of snprintf.c.
index c2ae63524f15f75345b0fad9944f4e338ba9e22b..1ad058792a920474954119f3638095e69b3e04e0 100644 (file)
@@ -1,7 +1,7 @@
 /* packet-ipv6.c
  * Routines for IPv6 packet disassembly 
  *
- * $Id: packet-ipv6.c,v 1.46 2000/11/19 08:53:58 guy Exp $
+ * $Id: packet-ipv6.c,v 1.47 2000/12/14 08:35:07 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -264,6 +264,34 @@ dissect_opts(const u_char *pd, int offset, frame_data *fd, proto_tree *tree,
                p += 2;
                break;
              }
+           case IP6OPT_BINDING_UPDATE:
+               proto_tree_add_text(dstopt_tree, NullTVB, p - pd, p[1] + 2,
+                   "Mobile IPv6 Binding Update");
+               p += p[1];
+               p += 2;
+               break;
+           case IP6OPT_BINDING_ACK:
+               proto_tree_add_text(dstopt_tree, NullTVB, p - pd, p[1] + 2,
+                   "Mobile IPv6 Binding Acknowledgement");
+               p += p[1];
+               p += 2;
+               break;
+           case IP6OPT_BINDING_REQ:
+               proto_tree_add_text(dstopt_tree, NullTVB, p - pd, p[1] + 2,
+                   "Mobile IPv6 Binding Request");
+               p += p[1];
+               p += 2;
+               break;
+           case IP6OPT_HOME_ADDRESS:
+               proto_tree_add_text(dstopt_tree, NullTVB, p - pd, p[1] + 2,
+                   "Mobile IPv6 Home Address");
+               p += p[1];
+               p += 2;
+               break;
+           case IP6OPT_EID:
+               p += p[1];
+               p += 2;
+               break;
            default:
                p = (u_char *)(pd + offset + len);
                break;
index d778405fea1f6b2deac3171106b2a4d1aae67172..ab3411bcd44b3e1e1461f62f153ddf14e155e058 100644 (file)
@@ -1,7 +1,7 @@
 /* packet-ipv6.h
  * Definitions for IPv6 packet disassembly 
  *
- * $Id: packet-ipv6.h,v 1.16 2000/11/11 10:23:41 guy Exp $
+ * $Id: packet-ipv6.h,v 1.17 2000/12/14 08:35:07 guy Exp $
  *
  * Ethereal - Network traffic analyzer
  * By Gerald Combs <gerald@zing.org>
@@ -173,6 +173,81 @@ struct ip6_frag {
 #define IP6F_RESERVED_MASK     0x0006  /* reserved bits in ip6f_offlg */
 #define IP6F_MORE_FRAG         0x0001  /* more-fragments flag */
 
+/*
+ * Mobile IPv6
+ */
+#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 IP6SUBOPT_UNIQUE_ID    0x02    /* Unique Id */
+#define IP6SUBOPT_ALTERNATE_COA        0x04    /* Alternate CoA */
+
+/* Binding Update Option */
+struct ip6_opt_binding_update {
+       guint8  ip6bu_type;
+       guint8  ip6bu_len;
+       guint8  ip6bu_flags;
+#define IP6_BU_ACK     0x80            /* Request a binding ack */
+#define IP6_BU_HOME    0x40            /* Home Registration */
+#define IP6_BU_COA     0x20            /* Care-of-address present in option */
+#define IP6_BU_ROUTER  0x10            /* Sending mobile node is a router */
+       guint8  ip6bu_prefixlen;
+       guint16 ip6bu_seqno;
+       guint32 ip6bu_lifetime;
+       /* followed by sub-options */
+};
+
+/* Binding Ack Option */
+struct ip6_opt_binding_ack {
+       guint8  ip6ba_type;
+       guint8  ip6ba_len;
+       guint8  ip6ba_status;
+#define IP6_BINDING_ACK_OK             0       /* Binding Update accepted */
+#define IP6_BINDING_ACK_EUNKNOWN       128     /* Reason unspecified */
+#define IP6_BINDING_ACK_EPERM          130     /* Administratively prohib. */
+#define IP6_BINDING_ACK_EAGAIN         131     /* Insufficient resources */
+#define IP6_BINDING_ACK_EHOMENOSUPPORT 132     /* Home registration */
+#define IP6_BINDING_ACK_ENOTHOMESUBNET 133     /* Not home subnet */
+#define IP6_BINDING_ACK_EBADIFLEN      136     /* Incorrect interface id len */
+#define IP6_BINDING_ACK_ENOTHOME       137     /* Not home agent for this MN */
+       guint16 ip6ba_seqno;
+       guint32 ip6ba_lifetime;
+       guint32 ip6ba_refresh;
+       /* followed by sub-options */
+};
+
+/* Binding Request Option */
+struct ip6_opt_binding_request {
+       guint8  ip6br_type;
+       guint8  ip6br_len;
+       /* followed by sub-options */
+};
+
+/* Home Address Option */
+struct ip6_opt_home_address {
+       guint8  ip6ha_type;
+       guint8  ip6ha_len;
+       struct e_in6_addr ip6ha_ha;             /* Home Address */
+       /* followed by sub-options */
+};
+
+/* Unique Identifier sub-option */
+struct ip6_subopt_unique_id {
+       guint8  ip6ui_type;
+       guint8  ip6ui_len;
+       guint16 ip6ui_id;                       /* Unique Identifier */
+};
+
+/* Alternate CoA sub-option */
+struct ip6_subopt_alternate_coa {
+       guint8  ip6acoa_type;
+       guint8  ip6acoa_len;
+       struct e_in6_addr coa;                  /* Alternate CoA */
+};
+
+
 /*
  * Definition for ICMPv6.
  * RFC 1885