212 lines
6 KiB
C
212 lines
6 KiB
C
/* packet-mip6.h
|
|
*
|
|
* $Id: packet-mip6.h,v 1.4 2003/12/16 19:31:40 guy Exp $
|
|
*
|
|
* Definitions for Mobile IPv6 dissection (draft-ietf-mobileip-ipv6-20.txt)
|
|
* Copyright 2003 Oy L M Ericsson Ab <teemu.rinta-aho@ericsson.fi>
|
|
*
|
|
* Ethereal - Network traffic analyzer
|
|
* By Gerald Combs <gerald@ethereal.com>
|
|
* Copyright 1998 Gerald Combs
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef __PACKET_MIP6_H_DEFINED__
|
|
#define __PACKET_MIP6_H_DEFINED__
|
|
|
|
/* Mobility Header types */
|
|
typedef enum {
|
|
BRR = 0,
|
|
HOTI = 1,
|
|
COTI = 2,
|
|
HOT = 3,
|
|
COT = 4,
|
|
BU = 5,
|
|
BA = 6,
|
|
BE = 7
|
|
} mhTypes;
|
|
|
|
static const value_string mip6_mh_types[] = {
|
|
{BRR, "Binding Refresh Request"},
|
|
{HOTI, "Home Test Init"},
|
|
{COTI, "Care-of Test Init"},
|
|
{HOT, "Home Test"},
|
|
{COT, "Care-of Test"},
|
|
{BU, "Binding Update"},
|
|
{BA, "Binding Acknowledgement"},
|
|
{BE, "Binding Error"},
|
|
{0, NULL}
|
|
};
|
|
|
|
/* Mobility Option types */
|
|
typedef enum {
|
|
PAD1 = 0,
|
|
PADN = 1,
|
|
BRA = 2,
|
|
ACOA = 3,
|
|
NI = 4,
|
|
BAD = 5
|
|
} optTypes;
|
|
|
|
/* Binding Update flag description */
|
|
static const true_false_string mip6_bu_a_flag_value = {
|
|
"Binding Acknowledgement requested",
|
|
"Binding Acknowledgement not requested"
|
|
};
|
|
|
|
static const true_false_string mip6_bu_h_flag_value = {
|
|
"Home Registration",
|
|
"No Home Registration"
|
|
};
|
|
|
|
static const true_false_string mip6_bu_l_flag_value = {
|
|
"Link-Local Address Compatibility",
|
|
"No Link-Local Address Compatibility"
|
|
};
|
|
|
|
static const true_false_string mip6_bu_k_flag_value = {
|
|
"Key Management Mobility Compatibility",
|
|
"No Key Management Mobility Compatibility"
|
|
};
|
|
|
|
/* Binding Acknowledgement status values */
|
|
static const value_string mip6_ba_status_value[] = {
|
|
{ 0, "Binding Update accepted" },
|
|
{ 1, "Accepted but prefix discovery necessary" },
|
|
{ 128, "Reason unspecified" },
|
|
{ 129, "Administratively prohibited" },
|
|
{ 130, "Insufficient resources" },
|
|
{ 131, "Home registration not supported" },
|
|
{ 132, "Not home subnet" },
|
|
{ 133, "Not home agent for this mobile node" },
|
|
{ 134, "Duplicate Address Detection failed" },
|
|
{ 135, "Sequence number out of window" },
|
|
{ 136, "Expired home nonce index" },
|
|
{ 137, "Expired care-of nonce index" },
|
|
{ 138, "Expired nonces" },
|
|
{ 139, "Registration type change disallowed" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
/* Binding Error status values */
|
|
static const value_string mip6_be_status_value[] = {
|
|
{ 1, "Unknown binding for Home Address destination option" },
|
|
{ 2, "Unrecognized MH type value" },
|
|
{ 0, NULL }
|
|
};
|
|
|
|
/* Message lengths */
|
|
#define MIP6_BRR_LEN 2
|
|
#define MIP6_HOTI_LEN 10
|
|
#define MIP6_COTI_LEN 10
|
|
#define MIP6_HOT_LEN 18
|
|
#define MIP6_COT_LEN 18
|
|
#define MIP6_BU_LEN 6
|
|
#define MIP6_BA_LEN 6
|
|
#define MIP6_BE_LEN 18
|
|
|
|
/* Field offsets & lengths for mobility headers */
|
|
#define MIP6_PROTO_OFF 0
|
|
#define MIP6_HLEN_OFF 1
|
|
#define MIP6_TYPE_OFF 2
|
|
#define MIP6_RES_OFF 3
|
|
#define MIP6_CSUM_OFF 4
|
|
#define MIP6_DATA_OFF 6
|
|
#define MIP6_PROTO_LEN 1
|
|
#define MIP6_HLEN_LEN 1
|
|
#define MIP6_TYPE_LEN 1
|
|
#define MIP6_RES_LEN 1
|
|
#define MIP6_CSUM_LEN 2
|
|
|
|
#define MIP6_BRR_RES_OFF 6
|
|
#define MIP6_BRR_OPTS_OFF 8
|
|
#define MIP6_BRR_RES_LEN 2
|
|
|
|
#define MIP6_HOTI_RES_OFF 6
|
|
#define MIP6_HOTI_COOKIE_OFF 8
|
|
#define MIP6_HOTI_OPTS_OFF 16
|
|
#define MIP6_HOTI_RES_LEN 2
|
|
#define MIP6_HOTI_COOKIE_LEN 8
|
|
|
|
#define MIP6_COTI_RES_OFF 6
|
|
#define MIP6_COTI_COOKIE_OFF 8
|
|
#define MIP6_COTI_OPTS_OFF 16
|
|
#define MIP6_COTI_RES_LEN 2
|
|
#define MIP6_COTI_COOKIE_LEN 8
|
|
|
|
#define MIP6_HOT_INDEX_OFF 6
|
|
#define MIP6_HOT_COOKIE_OFF 8
|
|
#define MIP6_HOT_TOKEN_OFF 16
|
|
#define MIP6_HOT_OPTS_OFF 24
|
|
#define MIP6_HOT_INDEX_LEN 2
|
|
#define MIP6_HOT_COOKIE_LEN 8
|
|
#define MIP6_HOT_TOKEN_LEN 8
|
|
|
|
#define MIP6_COT_INDEX_OFF 6
|
|
#define MIP6_COT_COOKIE_OFF 8
|
|
#define MIP6_COT_TOKEN_OFF 16
|
|
#define MIP6_COT_OPTS_OFF 24
|
|
#define MIP6_COT_INDEX_LEN 2
|
|
#define MIP6_COT_COOKIE_LEN 8
|
|
#define MIP6_COT_TOKEN_LEN 8
|
|
|
|
#define MIP6_BU_SEQNR_OFF 6
|
|
#define MIP6_BU_FLAGS_OFF 8
|
|
#define MIP6_BU_RES_OFF 9
|
|
#define MIP6_BU_LIFETIME_OFF 10
|
|
#define MIP6_BU_OPTS_OFF 12
|
|
#define MIP6_BU_SEQNR_LEN 2
|
|
#define MIP6_BU_FLAGS_LEN 1
|
|
#define MIP6_BU_RES_LEN 1
|
|
#define MIP6_BU_LIFETIME_LEN 2
|
|
|
|
#define MIP6_BA_STATUS_OFF 6
|
|
#define MIP6_BA_FLAGS_OFF 7
|
|
#define MIP6_BA_SEQNR_OFF 8
|
|
#define MIP6_BA_LIFETIME_OFF 10
|
|
#define MIP6_BA_OPTS_OFF 12
|
|
#define MIP6_BA_STATUS_LEN 1
|
|
#define MIP6_BA_FLAGS_LEN 1
|
|
#define MIP6_BA_SEQNR_LEN 2
|
|
#define MIP6_BA_LIFETIME_LEN 2
|
|
|
|
#define MIP6_BE_STATUS_OFF 6
|
|
#define MIP6_BE_RES_OFF 7
|
|
#define MIP6_BE_HOA_OFF 8
|
|
#define MIP6_BE_OPTS_OFF 24
|
|
#define MIP6_BE_STATUS_LEN 1
|
|
#define MIP6_BE_RES_LEN 1
|
|
#define MIP6_BE_HOA_LEN 16
|
|
|
|
/* Field offsets & field and option lengths for mobility options */
|
|
#define MIP6_BRA_LEN 2
|
|
#define MIP6_BRA_RI_OFF 2
|
|
#define MIP6_BRA_RI_LEN 2
|
|
|
|
#define MIP6_ACOA_LEN 16
|
|
#define MIP6_ACOA_ACOA_OFF 2
|
|
#define MIP6_ACOA_ACOA_LEN 16
|
|
|
|
#define MIP6_NI_LEN 4
|
|
#define MIP6_NI_HNI_OFF 2
|
|
#define MIP6_NI_CNI_OFF 4
|
|
#define MIP6_NI_HNI_LEN 2
|
|
#define MIP6_NI_CNI_LEN 2
|
|
|
|
#define MIP6_BAD_AUTH_OFF 2
|
|
|
|
#endif /* __PACKET_MIP6_H_DEFINED__ */
|