components/wireshark/patches/evb.patch
author Xiangning Yu<xiangning.yu@oracle.com>
Mon, 18 Jun 2012 09:50:24 -0700
changeset 872 4ce8edeb91bf
child 883 50516829ab64
permissions -rw-r--r--
7174457 EVB patch for wireshark userland
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
872
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     1
Index: epan/oui.h
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     2
===================================================================
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     3
--- epan/oui.h	(revision 41973)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     4
+++ epan/oui.h	(working copy)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     5
@@ -47,6 +47,7 @@
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     6
 #define OUI_ERICSSON        0x0001EC    /* Ericsson Group */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     7
 #define OUI_CATENA          0x00025A    /* Catena Networks */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     8
 #define OUI_ATHEROS         0x00037F    /* Atheros Communications */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
     9
+#define OUI_ORACLE          0x0003BA    /* Oracle */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    10
 #define OUI_SONY_ERICSSON   0x000AD9    /* Sony Ericsson Mobile Communications AB */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    11
 #define OUI_SONY_ERICSSON_2 0x000E07    /* Sony Ericsson Mobile Communications AB */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    12
 #define OUI_PROFINET        0x000ECF    /* PROFIBUS Nutzerorganisation e.V. */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    13
Index: epan/etypes.h
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    14
===================================================================
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    15
--- epan/etypes.h	(revision 41973)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    16
+++ epan/etypes.h	(working copy)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    17
@@ -463,6 +463,10 @@
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    18
 #define ETHERTYPE_TTE_PCF		0x891D  /* TTEthernet Protocol Control Frame */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    19
 #endif
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    20
 
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    21
+#ifndef ETHERTYPE_ECP
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    22
+#define ETHERTYPE_ECP                   0x8940  /* Edge Control Protocol */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    23
+#endif
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    24
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    25
 #ifndef ETHERTYPE_LOOP
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    26
 #define ETHERTYPE_LOOP			0x9000 	/* used for layer 2 testing (do i see my own frames on the wire) */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    27
 #endif
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    28
Index: epan/dissectors/packet-ecp.c
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    29
===================================================================
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    30
--- epan/dissectors/packet-ecp.c	(revision 0)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    31
+++ epan/dissectors/packet-ecp.c	(revision 0)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    32
@@ -0,0 +1,616 @@
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    33
+/* packet-ecp.c
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    34
+ * Routines for Solaris ECP/VDP dissection based on IEEE 802.1Qbg Draft 2.1
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    35
+ *
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    36
+ * Wireshark - Network traffic analyzer
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    37
+ * By Gerald Combs <[email protected]>
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    38
+ * Copyright 1998 Gerald Combs
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    39
+ *
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    40
+ * This program is free software; you can redistribute it and/or
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    41
+ * modify it under the terms of the GNU General Public License
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    42
+ * as published by the Free Software Foundation; either version 2
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    43
+ * of the License, or (at your option) any later version.
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    44
+ *
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    45
+ * This program is distributed in the hope that it will be useful,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    46
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    47
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    48
+ * GNU General Public License for more details.
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    49
+ *
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    50
+ * You should have received a copy of the GNU General Public License
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    51
+ * along with this program; if not, write to the Free Software
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    52
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    53
+ */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    54
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    55
+#ifdef HAVE_CONFIG_H
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    56
+# include "config.h"
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    57
+#endif
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    58
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    59
+#include <stdio.h>
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    60
+#include <epan/packet.h>
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    61
+#include <epan/etypes.h>
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    62
+#include <epan/oui.h>
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    63
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    64
+static int proto_ecp = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    65
+static int hf_ecp_version = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    66
+static int hf_ecp_op = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    67
+static int hf_ecp_subtype = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    68
+static int hf_ecp_seqno = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    69
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    70
+static int proto_vdp = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    71
+static int hf_vdp_tlv_type = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    72
+static int hf_vdp_tlv_len = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    73
+static int hf_vdp_tlv_assoc_reason = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    74
+static int hf_vdp_tlv_org_oui = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    75
+static int hf_vdp_vsitypeid = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    76
+static int hf_vdp_vsiversion = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    77
+static int hf_vdp_vsiid_format = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    78
+static int hf_vdp_filter_format = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    79
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    80
+static int hf_oui_oracle_subtype = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    81
+static int hf_oui_oracle_encoding = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    82
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    83
+static gint ett_ecp = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    84
+static gint ett_vdp_tlv = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    85
+static gint ett_vdp_tlv_mgrid = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    86
+static gint ett_vdp_tlv_assoc = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    87
+static gint ett_vdp_tlv_org = -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    88
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    89
+static dissector_handle_t data_handle;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    90
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    91
+#define	ECP_OP_REQ		0x0
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    92
+#define	ECP_OP_ACK		0x1
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    93
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    94
+#define	ECP_SUBTYPE_VDP		0x0001
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    95
+#define	ECP_SUBTYPE_PECSP	0x0002
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    96
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    97
+#define VDP_TLV_PREASSOC	0x01
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    98
+#define VDP_TLV_PREASSOCRR	0x02
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
    99
+#define VDP_TLV_ASSOC		0x03
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   100
+#define VDP_TLV_DEASSOC		0x04
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   101
+#define VDP_TLV_MGRID		0x05
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   102
+#define	VDP_TLV_ORG		0x7F
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   103
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   104
+#define	VSI_FMT_IPv4		0x01
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   105
+#define	VSI_FMT_IPv6		0x02
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   106
+#define	VSI_FMT_MAC		0x03
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   107
+#define	VSI_FMT_LOCAL		0x04
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   108
+#define	VSI_FMT_UUID		0x05
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   109
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   110
+#define	VDP_FILTER_VID		0x01
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   111
+#define	VDP_FILTER_MACVID	0x02
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   112
+#define	VDP_FILTER_GRPVID	0x03
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   113
+#define	VDP_FILTER_GRPMACVID	0x04
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   114
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   115
+/* Masks - from packet-lldp.c */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   116
+#define TLV_TYPE_MASK		0xFE00
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   117
+#define TLV_TYPE(value)		(((value) & TLV_TYPE_MASK) >> 9)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   118
+#define TLV_INFO_LEN_MASK	0x01FF
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   119
+#define TLV_INFO_LEN(value)	((value) & TLV_INFO_LEN_MASK)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   120
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   121
+#define	ECP_VERSION_MASK	0xF000
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   122
+#define	ECP_OP_MASK		0x0C00
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   123
+#define	ECP_SUBTYPE_MASK	0x03FF
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   124
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   125
+#define	ECP_VERSION(value)	(((value) & ECP_VERSION_MASK) >> 12)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   126
+#define	ECP_OP(value)		(((value) & ECP_OP_MASK) >> 10)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   127
+#define	ECP_SUBTYPE(value)	(((value) & ECP_SUBTYPE_MASK))
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   128
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   129
+#define	OUI_ORACLE_VSIMGR_SUBTYPE	0x01
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   130
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   131
+/*
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   132
+ * Hash table for translating OUIs to a dissector table/field info pair;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   133
+ * the dissector table maps PID values to dissectors, and the field
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   134
+ * corresponds to the PID for that OUI.
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   135
+ */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   136
+typedef struct {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   137
+	dissector_table_t table;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   138
+	hf_register_info *field_info;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   139
+} oui_info_t;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   140
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   141
+static GHashTable *oui_info_table = NULL;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   142
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   143
+static const value_string ecp_op_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   144
+	{ ECP_OP_REQ,	"ECP request" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   145
+	{ ECP_OP_ACK,	"ECP acknowledgement" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   146
+	{ 0,	NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   147
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   148
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   149
+static const value_string ecp_subtype_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   150
+	{ ECP_SUBTYPE_VDP,	"VDP" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   151
+	{ 0,			NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   152
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   153
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   154
+static const value_string vdp_tlv_type_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   155
+	{ VDP_TLV_PREASSOC,		"PreAssociate" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   156
+	{ VDP_TLV_PREASSOCRR,		"PreAssociate with RR" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   157
+	{ VDP_TLV_ASSOC,		"Associate" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   158
+	{ VDP_TLV_DEASSOC,		"DeAssociate" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   159
+	{ VDP_TLV_MGRID,		"VSI Manager ID" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   160
+	{ VDP_TLV_ORG,			"Orgnaizationally defined TLV" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   161
+	{ 0x0,				NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   162
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   163
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   164
+static const value_string vdp_tlv_oui_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   165
+	{ OUI_ORACLE,		"Oracle" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   166
+	{ 0x0,			NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   167
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   168
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   169
+static const value_string oui_oracle_subtype_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   170
+	{ OUI_ORACLE_VSIMGR_SUBTYPE,		"VSI Manager Subtype" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   171
+	{ 0x0,					NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   172
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   173
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   174
+static const value_string oui_oracle_encoding_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   175
+	{ 0x1,		"oracle_vsi_v1" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   176
+	{ 0x0,		NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   177
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   178
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   179
+static const value_string vdp_response_error_type_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   180
+	{ 0x0,	"Success" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   181
+	{ 0x1,	"Invalid Format" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   182
+	{ 0x2,	"Insufficient Resource" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   183
+	{ 0x3,	"Unable to Contact VSI Manager" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   184
+	{ 0x4,	"Other Failure" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   185
+	{ 0x5,	"Invalid VID, GroupID, or Mac address" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   186
+	{ 0x0,	NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   187
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   188
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   189
+static const value_string vdp_vsiid_format_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   190
+	{ VSI_FMT_IPv4,		"IPv4" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   191
+	{ VSI_FMT_IPv6,		"IPv6" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   192
+	{ VSI_FMT_MAC,		"MAC" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   193
+	{ VSI_FMT_LOCAL,	"Local" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   194
+	{ VSI_FMT_UUID,		"UUID" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   195
+	{ 0x0,	NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   196
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   197
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   198
+static const value_string vdp_filter_format_vals[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   199
+	{ VDP_FILTER_VID,		"VID" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   200
+	{ VDP_FILTER_MACVID,		"MAC/VID" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   201
+	{ VDP_FILTER_GRPVID,		"GroupID/VID" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   202
+	{ VDP_FILTER_GRPMACVID,		"GroupID/MAC/VID" },
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   203
+	{ 0x0,				NULL }
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   204
+};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   205
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   206
+static void
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   207
+vdp_add_vidstr(tvbuff_t *tvb, proto_tree *tree, guint32 offset, proto_item *ti)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   208
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   209
+	guint16 val;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   210
+	guint ps, pcp, vid;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   211
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   212
+	val = tvb_get_ntohs(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   213
+	ps = (val >> 12) & 0x8;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   214
+	pcp = (val >> 12) & 0x7;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   215
+	vid = val & 0x0FFF;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   216
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   217
+		if (ti == NULL)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   218
+			proto_tree_add_text(tree, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   219
+			    "PS %u, PCP %u, VID %u", ps, pcp, vid);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   220
+		else
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   221
+			proto_item_append_text(ti,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   222
+			    "PS %u, PCP %u, VID %u", ps, pcp, vid);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   223
+	}	
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   224
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   225
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   226
+static gint32
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   227
+dissect_vdp_tlv_assoc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset, guint8 tlvtype)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   228
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   229
+	proto_tree *vdp_tlv_assoc_tree;	 
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   230
+	proto_item *ti;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   231
+	guint16 tlvhdr;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   232
+	guint32 tlvlen = 0;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   233
+	guint8 reason, flags;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   234
+	gboolean request;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   235
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   236
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   237
+		if (tlvtype == VDP_TLV_ASSOC)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   238
+			ti = proto_tree_add_text(tree, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   239
+			    "VDP Associate");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   240
+		else
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   241
+			ti = proto_tree_add_text(tree, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   242
+			    "VDP DeAssociate");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   243
+		vdp_tlv_assoc_tree = proto_item_add_subtree(ti,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   244
+		    ett_vdp_tlv_assoc);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   245
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   246
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   247
+	tlvhdr = tvb_get_ntohs(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   248
+	tlvlen = TLV_INFO_LEN(tlvhdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   249
+	offset += 2;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   250
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   251
+	/* Reason */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   252
+	reason = tvb_get_bits8(tvb, offset, 8);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   253
+	flags = reason >> 4;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   254
+	request = !(flags & 0x4);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   255
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   256
+		ti = proto_tree_add_item(vdp_tlv_assoc_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   257
+		    hf_vdp_tlv_assoc_reason, tvb, offset, 1, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   258
+		if (request) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   259
+			proto_item_append_text(ti, " Request");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   260
+			if (flags != 0) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   261
+				proto_item_append_text(ti, "; Flags (%x)",
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   262
+				    flags);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   263
+				if (flags & 0x1)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   264
+					proto_item_append_text(ti, " M-Bit");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   265
+				if (flags & 0x2)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   266
+					proto_item_append_text(ti, " S-Bit");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   267
+			}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   268
+		} else {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   269
+			guint8 error = reason & 0x0F;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   270
+			const char *errorstr;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   271
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   272
+			proto_item_append_text(ti, " Response");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   273
+			errorstr = val_to_str(error,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   274
+			    vdp_response_error_type_vals, "Unknown error");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   275
+			proto_item_append_text(ti, "%s", errorstr); 
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   276
+			if ((flags & 0x0F) != 0) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   277
+				proto_item_append_text(ti, "; Flags (%x)",
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   278
+				    flags);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   279
+				if (flags & 0x1)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   280
+					proto_item_append_text(ti,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   281
+					    " Hard Error");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   282
+				if (flags & 0x2)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   283
+					proto_item_append_text(ti, " Keep");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   284
+			}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   285
+		}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   286
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   287
+	offset++;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   288
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   289
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   290
+		guint8 filter_format;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   291
+		const char *str;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   292
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   293
+		/* VSITYPEID/VERSION */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   294
+		proto_tree_add_item(vdp_tlv_assoc_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   295
+		    hf_vdp_vsitypeid, tvb, offset, 3, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   296
+		offset += 3;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   297
+		proto_tree_add_item(vdp_tlv_assoc_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   298
+		    hf_vdp_vsiversion, tvb, offset, 1, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   299
+		offset++;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   300
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   301
+		/* VSIID Format */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   302
+		proto_tree_add_item(vdp_tlv_assoc_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   303
+		    hf_vdp_vsiid_format, tvb, offset, 1, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   304
+		offset++;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   305
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   306
+		/* VSIID */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   307
+		str = tvb_bytes_to_str_punct(tvb, offset, 16, ':');
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   308
+		proto_tree_add_text(vdp_tlv_assoc_tree, tvb, offset, 16,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   309
+		    "VSIID: %s", str);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   310
+		offset += 16;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   311
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   312
+		/* Filter Format */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   313
+		proto_tree_add_item(vdp_tlv_assoc_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   314
+		    hf_vdp_filter_format, tvb, offset, 1, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   315
+		filter_format = tvb_get_guint8(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   316
+		offset++;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   317
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   318
+		switch (filter_format) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   319
+		case VDP_FILTER_VID:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   320
+			vdp_add_vidstr(tvb, vdp_tlv_assoc_tree, offset, NULL);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   321
+			offset += 2;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   322
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   323
+		case VDP_FILTER_MACVID:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   324
+			str = tvb_ether_to_str(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   325
+			ti = proto_tree_add_text(vdp_tlv_assoc_tree, tvb,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   326
+			    offset, 6, "MAC %s. ", str);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   327
+			offset += 6;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   328
+			vdp_add_vidstr(tvb, vdp_tlv_assoc_tree, offset, ti);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   329
+			offset += 2;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   330
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   331
+		}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   332
+	} else {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   333
+		offset += 30;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   334
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   335
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   336
+	return offset; 
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   337
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   338
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   339
+static gint32
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   340
+dissect_vdp_tlv_mgrid(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   341
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   342
+	proto_tree *vdp_tlv_mgrid_tree = NULL;	
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   343
+	proto_item *ti = NULL;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   344
+	guint16 tlvhdr;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   345
+	guint32 tlvlen = 0;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   346
+	const char *str;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   347
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   348
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   349
+		ti = proto_tree_add_text(tree, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   350
+		    "%s", "VDP Manager ID");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   351
+		vdp_tlv_mgrid_tree = proto_item_add_subtree(ti,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   352
+		    ett_vdp_tlv_mgrid);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   353
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   354
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   355
+	tlvhdr = tvb_get_ntohs(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   356
+	tlvlen = TLV_INFO_LEN(tlvhdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   357
+	if (tlvlen != 16) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   358
+		if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   359
+			proto_tree_add_text(vdp_tlv_mgrid_tree, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   360
+			    "%s Invalid Length: %u",
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   361
+			    decode_boolean_bitfield(tlvlen, TLV_INFO_LEN_MASK,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   362
+			    16, "", ""), tlvlen);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   363
+		}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   364
+		return -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   365
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   366
+	offset += 2;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   367
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   368
+	str = tvb_ip6_to_str(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   369
+	if (ti != NULL) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   370
+		proto_item_append_text(ti, ": %s", str);	
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   371
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   372
+	offset += 16;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   373
+	return offset;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   374
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   375
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   376
+static gint32
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   377
+dissect_oracle_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   378
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   379
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   380
+		proto_tree_add_item(tree, hf_oui_oracle_encoding, tvb,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   381
+		    offset, 1, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   382
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   383
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   384
+	return offset + 1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   385
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   386
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   387
+static gint32
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   388
+dissect_vdp_tlv_org(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 offset)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   389
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   390
+	guint16 tlvhdr;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   391
+	guint32 tlvlen = 0;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   392
+	guint32 oui;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   393
+	guint8 subtype;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   394
+	const char *ouistr;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   395
+	const char *subtypestr;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   396
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   397
+	/* TLV header */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   398
+	tlvhdr = tvb_get_ntohs(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   399
+	tlvlen = TLV_INFO_LEN(tlvhdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   400
+	if (tlvlen < 3) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   401
+		if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   402
+			proto_tree_add_text(tree, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   403
+			    "%s Invalid Length: %u",
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   404
+			    decode_boolean_bitfield(tlvlen, TLV_INFO_LEN_MASK,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   405
+			    16, "", ""), tlvlen);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   406
+		}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   407
+		return -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   408
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   409
+	offset += 2;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   410
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   411
+	oui = tvb_get_ntoh24(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   412
+	ouistr = val_to_str(oui, vdp_tlv_oui_vals, "Unknown");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   413
+	
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   414
+	/* XXX only support Oracle OUI for now */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   415
+	if (oui != OUI_ORACLE)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   416
+		return -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   417
+	offset += 3;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   418
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   419
+	subtype = tvb_get_guint8(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   420
+	subtypestr = val_to_str(subtype, oui_oracle_subtype_vals,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   421
+	    "Unknown subtype 0x%x"); 
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   422
+	offset++;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   423
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   424
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   425
+		proto_tree_add_text(tree, tvb, offset, 0, "%s - %s",
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   426
+		    ouistr, subtypestr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   427
+		/* XXX create a org tlv tree if neccessary */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   428
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   429
+	switch (subtype) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   430
+	case OUI_ORACLE_VSIMGR_SUBTYPE:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   431
+		offset = dissect_oracle_tlv(tvb, pinfo, tree, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   432
+		break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   433
+	default:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   434
+		return -1;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   435
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   436
+	return offset;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   437
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   438
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   439
+static void
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   440
+dissect_vdp_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint32 offset)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   441
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   442
+	proto_tree *vdp_tlv_tree = NULL;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   443
+	proto_item *ti;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   444
+	guint8	tlvtype;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   445
+	guint16 tlvhdr;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   446
+	guint32 tlvlen = 0;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   447
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   448
+	while (offset > 0) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   449
+		tlvhdr = tvb_get_ntohs(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   450
+		tlvtype = TLV_TYPE(tlvhdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   451
+		tlvlen = TLV_INFO_LEN(tlvhdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   452
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   453
+		if (tlvtype == 0) /* XXX most likely it's padding */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   454
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   455
+		if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   456
+			ti = proto_tree_add_text(tree, tvb, offset, tlvlen + 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   457
+			    "VDP TLV");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   458
+			vdp_tlv_tree = proto_item_add_subtree(ti, ett_vdp_tlv);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   459
+			proto_tree_add_item(vdp_tlv_tree, hf_vdp_tlv_type, tvb,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   460
+			    offset, 2, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   461
+			proto_tree_add_item(vdp_tlv_tree, hf_vdp_tlv_len, tvb,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   462
+			    offset, 2, ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   463
+		}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   464
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   465
+		switch (tlvtype) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   466
+		case VDP_TLV_PREASSOC:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   467
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   468
+		case VDP_TLV_PREASSOCRR:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   469
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   470
+		case VDP_TLV_ASSOC:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   471
+		case VDP_TLV_DEASSOC:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   472
+			offset = dissect_vdp_tlv_assoc(tvb, pinfo, vdp_tlv_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   473
+			    offset, tlvtype);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   474
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   475
+		case VDP_TLV_MGRID:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   476
+			offset = dissect_vdp_tlv_mgrid(tvb, pinfo, vdp_tlv_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   477
+			    offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   478
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   479
+		case VDP_TLV_ORG:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   480
+			offset = dissect_vdp_tlv_org(tvb, pinfo, vdp_tlv_tree,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   481
+			    offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   482
+			break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   483
+		default:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   484
+			/* unknown type */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   485
+			goto done;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   486
+		}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   487
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   488
+done:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   489
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   490
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   491
+static void
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   492
+dissect_ecp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   493
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   494
+	proto_item *ti;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   495
+	proto_tree *ecp_tree = NULL;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   496
+	int offset = 0;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   497
+	guint16 hdr, ver, op, subtype, seqno;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   498
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   499
+	col_set_str(pinfo->cinfo, COL_PROTOCOL, "ECP");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   500
+	col_clear(pinfo->cinfo, COL_INFO);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   501
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   502
+	/* Version/OP/Subtype */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   503
+	hdr = tvb_get_ntohs(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   504
+	ver = ECP_VERSION(hdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   505
+	op = ECP_OP(hdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   506
+	subtype = ECP_SUBTYPE(hdr);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   507
+	if (check_col(pinfo->cinfo, COL_INFO)) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   508
+		col_append_fstr(pinfo->cinfo, COL_INFO,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   509
+		    "PDU Version = %x OP = %x"
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   510
+		    " Subtype = %x", ver, op, subtype);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   511
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   512
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   513
+		/* details */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   514
+		ti = proto_tree_add_item(tree, proto_ecp, tvb, 0, -1, ENC_NA);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   515
+		ecp_tree = proto_item_add_subtree(ti, ett_ecp);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   516
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   517
+		proto_tree_add_item(ecp_tree, hf_ecp_version, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   518
+		    ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   519
+		proto_tree_add_item(ecp_tree, hf_ecp_op, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   520
+		    ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   521
+		proto_tree_add_item(ecp_tree, hf_ecp_subtype, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   522
+		    ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   523
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   524
+	offset += 2;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   525
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   526
+	/* Seqno */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   527
+	if (tree) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   528
+		proto_tree_add_item(ecp_tree, hf_ecp_seqno, tvb, offset, 2,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   529
+		    ENC_BIG_ENDIAN);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   530
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   531
+	seqno = tvb_get_ntohs(tvb, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   532
+	switch (op) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   533
+	case ECP_OP_REQ:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   534
+		col_append_fstr(pinfo->cinfo, COL_INFO,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   535
+		    " SEQ = 0x%x", seqno);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   536
+		break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   537
+	case ECP_OP_ACK:
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   538
+		col_append_fstr(pinfo->cinfo, COL_INFO,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   539
+		    " ACK = 0x%x", seqno);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   540
+		break;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   541
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   542
+	offset += 2;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   543
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   544
+	/* XXX todo: use sub-dissector */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   545
+	if (subtype == ECP_SUBTYPE_VDP) {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   546
+		dissect_vdp_tlv(tvb, pinfo, ecp_tree, offset);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   547
+	}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   548
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   549
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   550
+void
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   551
+proto_register_ecp(void)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   552
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   553
+	static hf_register_info hf_ecp[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   554
+		{ &hf_ecp_version,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   555
+		{ "Version",	"ecp.ver", FT_UINT16, BASE_DEC,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   556
+		    NULL, ECP_VERSION_MASK, NULL, HFILL }},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   557
+		{ &hf_ecp_op,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   558
+		{ "Operation", "ecp.op", FT_UINT16, BASE_HEX,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   559
+		    VALS(ecp_op_vals), ECP_OP_MASK, NULL, HFILL }},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   560
+		{ &hf_ecp_subtype,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   561
+		{ "Subtype", "ecp.subtype", FT_UINT16, BASE_HEX,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   562
+		    VALS(ecp_subtype_vals), ECP_SUBTYPE_MASK, NULL, HFILL }},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   563
+		{ &hf_ecp_seqno,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   564
+		{ "Sequence number", "ecp.seqno", FT_UINT16, BASE_DEC,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   565
+		    NULL, 0x0, NULL, HFILL }},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   566
+	};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   567
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   568
+	static hf_register_info hf_vdp[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   569
+		{ &hf_vdp_tlv_type,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   570
+		{ "VDP TLV Type",	"vdp.tlvtype", FT_UINT16, BASE_DEC,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   571
+			VALS(vdp_tlv_type_vals), TLV_TYPE_MASK, NULL, HFILL }},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   572
+		{ &hf_vdp_tlv_len,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   573
+		{ "VDP TLV Length",	"vdp.tlvlen", FT_UINT16, BASE_DEC,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   574
+			NULL, TLV_INFO_LEN_MASK, NULL, HFILL }},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   575
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   576
+		{ &hf_vdp_tlv_assoc_reason,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   577
+		{ "Reason/Status",	"vdp.assoc.reason", FT_UINT8, BASE_HEX,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   578
+			NULL, 0x0, NULL, HFILL }},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   579
+		{ &hf_vdp_tlv_org_oui,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   580
+		{ "Org OUI", "vdp.org.oui", FT_UINT24, BASE_HEX,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   581
+			VALS(vdp_tlv_oui_vals), 0x0, NULL, HFILL}},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   582
+		{ &hf_oui_oracle_subtype,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   583
+		{ "Oracle Subtype", "vdp.oracle.subtype", FT_UINT8, BASE_HEX,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   584
+			VALS(oui_oracle_subtype_vals), 0x0, NULL, HFILL}},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   585
+		{ &hf_oui_oracle_encoding,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   586
+		{ "VSI Manager ID Encoding", "vdp.oracle.encoding", FT_UINT8,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   587
+		    	BASE_HEX, VALS(oui_oracle_encoding_vals),
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   588
+			0x0, NULL, HFILL}},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   589
+		{ &hf_vdp_vsitypeid,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   590
+		{ "VSI Type ID", "vdp.vsitypeid", FT_UINT24,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   591
+		    	BASE_HEX, NULL, 0x0, NULL, HFILL}},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   592
+		{ &hf_vdp_vsiversion,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   593
+		{ "VSI Version", "vdp.vsiversion", FT_UINT8,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   594
+		    	BASE_HEX, NULL, 0x0, NULL, HFILL}},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   595
+		{ &hf_vdp_vsiid_format,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   596
+		{ "VSIID Format ", "vdp.vsiidformat", FT_UINT8,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   597
+		    	BASE_HEX, VALS(vdp_vsiid_format_vals), 0x0,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   598
+			NULL, HFILL}},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   599
+		{ &hf_vdp_filter_format,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   600
+		{ "VDP Filter Format ", "vdp.filterformat", FT_UINT8,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   601
+		    	BASE_HEX, VALS(vdp_filter_format_vals), 0x0,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   602
+			NULL, HFILL}},
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   603
+		
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   604
+	};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   605
+		
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   606
+	static gint *ett[] = {
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   607
+		&ett_ecp,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   608
+		&ett_vdp_tlv,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   609
+		&ett_vdp_tlv_assoc,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   610
+		&ett_vdp_tlv_mgrid,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   611
+		&ett_vdp_tlv_org,
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   612
+	};
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   613
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   614
+	proto_ecp = proto_register_protocol("Edge Control Protocol",
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   615
+	    "ECP21", "ecp21");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   616
+	proto_register_field_array(proto_ecp, hf_ecp, array_length(hf_ecp));
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   617
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   618
+	proto_vdp = proto_register_protocol("VSI protocol",
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   619
+	    "VDP21", "vdp21");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   620
+	proto_register_field_array(proto_vdp, hf_vdp, array_length(hf_vdp));
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   621
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   622
+	proto_register_subtree_array(ett, array_length(ett));
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   623
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   624
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   625
+static void
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   626
+register_hf(gpointer key _U_, gpointer value, gpointer user_data _U_)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   627
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   628
+	oui_info_t *info = value;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   629
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   630
+	proto_register_field_array(proto_ecp, info->field_info, 1);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   631
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   632
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   633
+void
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   634
+proto_reg_handoff_ecp_21(void)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   635
+{
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   636
+	dissector_handle_t ecp_handle;
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   637
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   638
+	data_handle = find_dissector("data");
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   639
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   640
+	ecp_handle = create_dissector_handle(dissect_ecp, proto_ecp);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   641
+	dissector_add_uint("ethertype", ETHERTYPE_ECP, ecp_handle);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   642
+
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   643
+	/*
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   644
+	 * Register all the fields for PIDs for various OUIs.
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   645
+	 */
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   646
+	if (oui_info_table != NULL)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   647
+		g_hash_table_foreach(oui_info_table, register_hf, NULL);
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   648
+}
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   649
Index: epan/dissectors/Makefile.common
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   650
===================================================================
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   651
--- epan/dissectors/Makefile.common	(revision 41973)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   652
+++ epan/dissectors/Makefile.common	(working copy)
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   653
@@ -108,6 +108,7 @@
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   654
 	packet-dop.c \
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   655
 	packet-dsp.c \
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   656
 	packet-ess.c \
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   657
+	packet-ecp.c \
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   658
 	packet-ftam.c \
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   659
 	packet-goose.c \
4ce8edeb91bf 7174457 EVB patch for wireshark userland
Xiangning Yu<xiangning.yu@oracle.com>
parents:
diff changeset
   660
 	packet-h225.c \