Ethereal-dev: [Ethereal-dev] Some more patches for FC-SP
Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.
From: Dinesh G Dutt <ddutt@xxxxxxxxx>
Date: Thu, 6 Nov 2003 23:36:25 -0800
Hi,
I'm including 3 patches related to FC-SP:
- Added support for decoding related to Security in *LOGI service params
- Added support for new LS_RJT code for authentication failure
- Brought packet-fcsp.c up-to-date with FC-SP rev 1.2
I made some mods to FC-ELS decoder:
- Added support for displaying support for Multicast/Broadcast supported
bits in *LOGI common service params
- Removed restriction for "Random Relative Offset" & its alternate to be in
PLOGI or PDISC only. Some HBAs set it even in FLOGI.
Dinesh
--
Index: packet-fcels.c
===================================================================
RCS file: /cvsroot/ethereal/packet-fcels.c,v
retrieving revision 1.5
diff -u -r1.5 packet-fcels.c
--- packet-fcels.c 30 Oct 2003 02:06:11 -0000 1.5
+++ packet-fcels.c 7 Nov 2003 07:30:32 -0000
@@ -244,17 +244,15 @@
punc[0] = '\0';
- if ((opcode == FC_ELS_PLOGI) || (opcode == FC_ELS_PDISC)) {
- if (flag & 0x8000) {
- strcpy (flagstr, "Cont. Incr. Offset Supported");
- stroff += 28;
- strcpy (punc, ", ");
- }
- if (flag & 0x4000) {
- sprintf (&flagstr[stroff], "%sRRO Supported", punc);
- stroff += 15;
- strcpy (punc, ", ");
- }
+ if (flag & 0x8000) {
+ strcpy (flagstr, "Cont. Incr. Offset Supported");
+ stroff += 28;
+ strcpy (punc, ", ");
+ }
+ if (flag & 0x4000) {
+ sprintf (&flagstr[stroff], "%sRRO Supported", punc);
+ stroff += 15;
+ strcpy (punc, ", ");
}
if (flag & 0x2000) {
@@ -271,7 +269,7 @@
else {
sprintf (&flagstr[stroff], "%sNormal B2B Credit Mgmt", punc);
strcpy (punc, ", ");
- stroff += 21;
+ stroff += 22;
}
if ((opcode == FC_ELS_PLOGI) || (opcode == FC_ELS_PDISC)) {
@@ -287,6 +285,21 @@
strcpy (&flagstr[stroff], ", Simplex Dedicated Conn Supported");
stroff += 34;
}
+ }
+
+ if (flag & 0x0200) {
+ strcpy (&flagstr[stroff], ", Multicast Supported");
+ stroff += 21;
+ }
+
+ if (flag & 0x0100) {
+ strcpy (&flagstr[stroff], ", Broadcast Supported");
+ stroff += 21;
+ }
+
+ if (flag & 0x0020) {
+ strcpy (&flagstr[stroff], ", Security Bit");
+ stroff += 14;
}
if (flag & 0x0010) {
Index: packet-fcels.h
===================================================================
RCS file: /cvsroot/ethereal/packet-fcels.h,v
retrieving revision 1.2
diff -u -r1.2 packet-fcels.h
--- packet-fcels.h 30 Oct 2003 02:06:11 -0000 1.2
+++ packet-fcels.h 7 Nov 2003 07:30:41 -0000
@@ -155,6 +155,7 @@
#define FC_ELS_RJT_DET_INV_VCID 0x41
#define FC_ELS_RJT_DET_OORSRC_C4 0x42
#define FC_ELS_RJT_DET_INV_PNNAME 0x44
+#define FC_ELS_RJT_DET_AUTH_REQD 0x48
static const value_string fc_els_rjt_det_val[] = {
{FC_ELS_RJT_DET_NODET , "No further details"},
@@ -195,6 +196,8 @@
{FC_ELS_RJT_DET_INV_VCID , "VC_ID Not Found"},
{FC_ELS_RJT_DET_OORSRC_C4 , "No Resources to Support Class 4 Conn"},
{FC_ELS_RJT_DET_INV_PNNAME , "Invalid Port/Node Name"},
+ {FC_ELS_RJT_DET_AUTH_REQD , "Authentication Required"},
+ {0, NULL},
};
static const value_string fc_els_flacompliance_val[] = {
Index: packet-fcsp.c
===================================================================
RCS file: /cvsroot/ethereal/packet-fcsp.c,v
retrieving revision 1.1
diff -u -r1.1 packet-fcsp.c
--- packet-fcsp.c 30 Oct 2003 02:06:12 -0000 1.1
+++ packet-fcsp.c 7 Nov 2003 07:31:07 -0000
@@ -174,10 +174,7 @@
guint16 param_len = 0, i;
if (tree) {
- proto_tree_add_item (tree, hf_auth_proto_type, tvb, offset, 4, 0);
-
- auth_param_tag = tvb_get_ntohs (tvb, offset+4);
- offset += 4;
+ auth_param_tag = tvb_get_ntohs (tvb, offset);
total_len -= 4;
while (total_len > 0) {
@@ -187,7 +184,7 @@
2, 0);
auth_param_tag = tvb_get_ntohs (tvb, offset);
- param_len = tvb_get_ntohs (tvb, offset+2);
+ param_len = tvb_get_ntohs (tvb, offset+2)*4;
switch (auth_param_tag) {
case FC_AUTH_DHCHAP_PARAM_HASHLIST:
@@ -347,12 +344,14 @@
offset += 4;
for (i = 0; i < num_protos; i++) {
- proto_type = tvb_get_ntohs (tvb, offset);
- proto_tree_add_item (tree, hf_auth_proto_type, tvb, offset, 2, 0);
- proto_tree_add_item (tree, hf_auth_proto_param_len, tvb, offset+2, 2, 0);
- param_len = tvb_get_ntohs (tvb, offset+2)*4;
-
+ proto_tree_add_item (tree, hf_auth_proto_param_len, tvb, offset, 4, 0);
+ param_len = tvb_get_ntohl (tvb, offset);
+ offset += 4;
+
if (tvb_bytes_exist (tvb, offset, param_len)) {
+ proto_type = tvb_get_ntohl (tvb, offset);
+
+ proto_tree_add_item (tree, hf_auth_proto_type, tvb, offset, 4, 0);
switch (proto_type) {
case FC_AUTH_PROTO_TYPE_DHCHAP:
dissect_fcsp_dhchap_auth_param (tvb, tree, offset+4, param_len);
-- When you were born, you cried and the world rejoiced. Live your life so when you die, the world cries and you rejoice. - Indian saying
- Follow-Ups:
- Re: [Ethereal-dev] Some more patches for FC-SP
- From: Guy Harris
- Re: [Ethereal-dev] Some more patches for FC-SP
- Prev by Date: Re: [Ethereal-dev] configure requires a C++ compiler
- Next by Date: Re: [Ethereal-dev] Some more patches for FC-SP
- Previous by thread: [Ethereal-dev] config.nmake problem
- Next by thread: Re: [Ethereal-dev] Some more patches for FC-SP
- Index(es):





