From b60b1414c39e902281dd7c819cb2deb5083d6bcc Mon Sep 17 00:00:00 2001 From: Gerald Combs Date: Sun, 8 Dec 2002 02:32:36 +0000 Subject: From Dinesh Dutt: Add Fibre Channel support, including FCIP, Basic FC header, Extended Link Service, Interswitch Link Service, FCP, and IPFC. svn path=/trunk/; revision=6757 --- packet-fclctl.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 packet-fclctl.c (limited to 'packet-fclctl.c') diff --git a/packet-fclctl.c b/packet-fclctl.c new file mode 100644 index 0000000000..ac67f2850d --- /dev/null +++ b/packet-fclctl.c @@ -0,0 +1,102 @@ +/* packet-fclctl.c + * Routines for FC Link Control Frames + * Copyright 2001, Dinesh G Dutt + * + * $Id: packet-fclctl.c,v 1.1 2002/12/08 02:32:17 gerald Exp $ + * + * Ethereal - Network traffic analyzer + * By Gerald Combs + * Copyright 1998 Gerald Combs + * + * Copied from WHATEVER_FILE_YOU_USED (where "WHATEVER_FILE_YOU_USED" + * is a dissector file; if you just copied this from README.developer, + * don't bother with the "Copied from" - you don't even need to put + * in a "Copied from" if you copied an existing dissector, especially + * if the bulk of the code in the new dissector is your code) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include +#include + +#ifdef HAVE_SYS_TYPES_H +# include +#endif + +#ifdef HAVE_NETINET_IN_H +# include +#endif + +#include + +#ifdef NEED_SNPRINTF_H +# include "snprintf.h" +#endif + +#include +#include "etypes.h" +#include "packet-fc.h" +#include "packet-fclctl.h" + +static gchar errstr[64]; + +gchar * +fclctl_get_typestr (guint8 linkctl_type, guint8 type) +{ + if ((linkctl_type == FC_LCTL_FBSYB) || + (linkctl_type == FC_LCTL_FBSYL)) { + return (val_to_str ((type & 0xF0), fc_lctl_fbsy_val, "0x%x")); + } + else return ("\0"); +} + +gchar * +fclctl_get_paramstr (guint32 linkctl_type, guint32 param) +{ + int len; + + errstr[0] = '\0'; + + if (linkctl_type == FC_LCTL_PBSY) { + strcpy (errstr, val_to_str (((param & 0xFF000000) >> 24), + fc_lctl_pbsy_acode_val, "0x%x")); + len = strlen (errstr); + strcpy (&errstr[len], ", "); + len = strlen (errstr); + strcpy (&errstr[len], + val_to_str (((param & 0x00FF0000) >> 16), + fc_lctl_pbsy_rjt_val, "0x%x")); + } + else if ((linkctl_type == FC_LCTL_FRJT) || + (linkctl_type == FC_LCTL_PRJT)) { + strcpy (errstr, + val_to_str (((param & 0xFF000000) >> 24), + fc_lctl_rjt_acode_val, "0x%x")); + len = strlen (errstr); + strcpy (&errstr[len], ", "); + len = strlen (errstr); + strcpy (&errstr[len], + val_to_str (((param & 0x00FF0000) >> 16), fc_lctl_rjt_val, + "%x")); + } + + return (errstr); +} -- cgit v1.2.1