linux/net/sctp/debug.c
<<
>>
Prefs
   1/* SCTP kernel implementation
   2 * (C) Copyright IBM Corp. 2001, 2004
   3 * Copyright (c) 1999-2000 Cisco, Inc.
   4 * Copyright (c) 1999-2001 Motorola, Inc.
   5 * Copyright (c) 2001 Intel Corp.
   6 *
   7 * This file is part of the SCTP kernel implementation
   8 *
   9 * This file converts numerical ID value to alphabetical names for SCTP
  10 * terms such as chunk type, parameter time, event type, etc.
  11 *
  12 * This SCTP implementation is free software;
  13 * you can redistribute it and/or modify it under the terms of
  14 * the GNU General Public License as published by
  15 * the Free Software Foundation; either version 2, or (at your option)
  16 * any later version.
  17 *
  18 * This SCTP implementation is distributed in the hope that it
  19 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
  20 *                 ************************
  21 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  22 * See the GNU General Public License for more details.
  23 *
  24 * You should have received a copy of the GNU General Public License
  25 * along with GNU CC; see the file COPYING.  If not, write to
  26 * the Free Software Foundation, 59 Temple Place - Suite 330,
  27 * Boston, MA 02111-1307, USA.
  28 *
  29 * Please send any bug reports or fixes you make to the
  30 * email address(es):
  31 *    lksctp developers <lksctp-developers@lists.sourceforge.net>
  32 *
  33 * Or submit a bug report through the following website:
  34 *    http://www.sf.net/projects/lksctp
  35 *
  36 * Written or modified by:
  37 *    La Monte H.P. Yarroll <piggy@acm.org>
  38 *    Karl Knutson          <karl@athena.chicago.il.us>
  39 *    Xingang Guo           <xingang.guo@intel.com>
  40 *    Jon Grimm             <jgrimm@us.ibm.com>
  41 *    Daisy Chang           <daisyc@us.ibm.com>
  42 *    Sridhar Samudrala     <sri@us.ibm.com>
  43 *
  44 * Any bugs reported given to us we will try to fix... any fixes shared will
  45 * be incorporated into the next SCTP release.
  46 */
  47
  48#include <net/sctp/sctp.h>
  49
  50#if SCTP_DEBUG
  51int sctp_debug_flag = 1;        /* Initially enable DEBUG */
  52#endif  /* SCTP_DEBUG */
  53
  54/* These are printable forms of Chunk ID's from section 3.1.  */
  55static const char *const sctp_cid_tbl[SCTP_NUM_BASE_CHUNK_TYPES] = {
  56        "DATA",
  57        "INIT",
  58        "INIT_ACK",
  59        "SACK",
  60        "HEARTBEAT",
  61        "HEARTBEAT_ACK",
  62        "ABORT",
  63        "SHUTDOWN",
  64        "SHUTDOWN_ACK",
  65        "ERROR",
  66        "COOKIE_ECHO",
  67        "COOKIE_ACK",
  68        "ECN_ECNE",
  69        "ECN_CWR",
  70        "SHUTDOWN_COMPLETE",
  71};
  72
  73/* Lookup "chunk type" debug name. */
  74const char *sctp_cname(const sctp_subtype_t cid)
  75{
  76        if (cid.chunk <= SCTP_CID_BASE_MAX)
  77                return sctp_cid_tbl[cid.chunk];
  78
  79        switch (cid.chunk) {
  80        case SCTP_CID_ASCONF:
  81                return "ASCONF";
  82
  83        case SCTP_CID_ASCONF_ACK:
  84                return "ASCONF_ACK";
  85
  86        case SCTP_CID_FWD_TSN:
  87                return "FWD_TSN";
  88
  89        case SCTP_CID_AUTH:
  90                return "AUTH";
  91
  92        default:
  93                break;
  94        }
  95
  96        return "unknown chunk";
  97}
  98
  99/* These are printable forms of the states.  */
 100const char *const sctp_state_tbl[SCTP_STATE_NUM_STATES] = {
 101        "STATE_CLOSED",
 102        "STATE_COOKIE_WAIT",
 103        "STATE_COOKIE_ECHOED",
 104        "STATE_ESTABLISHED",
 105        "STATE_SHUTDOWN_PENDING",
 106        "STATE_SHUTDOWN_SENT",
 107        "STATE_SHUTDOWN_RECEIVED",
 108        "STATE_SHUTDOWN_ACK_SENT",
 109};
 110
 111/* Events that could change the state of an association.  */
 112const char *const sctp_evttype_tbl[] = {
 113        "EVENT_T_unknown",
 114        "EVENT_T_CHUNK",
 115        "EVENT_T_TIMEOUT",
 116        "EVENT_T_OTHER",
 117        "EVENT_T_PRIMITIVE"
 118};
 119
 120/* Return value of a state function */
 121const char *const sctp_status_tbl[] = {
 122        "DISPOSITION_DISCARD",
 123        "DISPOSITION_CONSUME",
 124        "DISPOSITION_NOMEM",
 125        "DISPOSITION_DELETE_TCB",
 126        "DISPOSITION_ABORT",
 127        "DISPOSITION_VIOLATION",
 128        "DISPOSITION_NOT_IMPL",
 129        "DISPOSITION_ERROR",
 130        "DISPOSITION_BUG"
 131};
 132
 133/* Printable forms of primitives */
 134static const char *const sctp_primitive_tbl[SCTP_NUM_PRIMITIVE_TYPES] = {
 135        "PRIMITIVE_ASSOCIATE",
 136        "PRIMITIVE_SHUTDOWN",
 137        "PRIMITIVE_ABORT",
 138        "PRIMITIVE_SEND",
 139        "PRIMITIVE_REQUESTHEARTBEAT",
 140        "PRIMITIVE_ASCONF",
 141};
 142
 143/* Lookup primitive debug name. */
 144const char *sctp_pname(const sctp_subtype_t id)
 145{
 146        if (id.primitive <= SCTP_EVENT_PRIMITIVE_MAX)
 147                return sctp_primitive_tbl[id.primitive];
 148        return "unknown_primitive";
 149}
 150
 151static const char *const sctp_other_tbl[] = {
 152        "NO_PENDING_TSN",
 153        "ICMP_PROTO_UNREACH",
 154};
 155
 156/* Lookup "other" debug name. */
 157const char *sctp_oname(const sctp_subtype_t id)
 158{
 159        if (id.other <= SCTP_EVENT_OTHER_MAX)
 160                return sctp_other_tbl[id.other];
 161        return "unknown 'other' event";
 162}
 163
 164static const char *const sctp_timer_tbl[] = {
 165        "TIMEOUT_NONE",
 166        "TIMEOUT_T1_COOKIE",
 167        "TIMEOUT_T1_INIT",
 168        "TIMEOUT_T2_SHUTDOWN",
 169        "TIMEOUT_T3_RTX",
 170        "TIMEOUT_T4_RTO",
 171        "TIMEOUT_T5_SHUTDOWN_GUARD",
 172        "TIMEOUT_HEARTBEAT",
 173        "TIMEOUT_SACK",
 174        "TIMEOUT_AUTOCLOSE",
 175};
 176
 177/* Lookup timer debug name. */
 178const char *sctp_tname(const sctp_subtype_t id)
 179{
 180        if (id.timeout <= SCTP_EVENT_TIMEOUT_MAX)
 181                return sctp_timer_tbl[id.timeout];
 182        return "unknown_timer";
 183}
 184
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.