cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

debug.c (3917B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/* SCTP kernel implementation
      3 * (C) Copyright IBM Corp. 2001, 2004
      4 * Copyright (c) 1999-2000 Cisco, Inc.
      5 * Copyright (c) 1999-2001 Motorola, Inc.
      6 * Copyright (c) 2001 Intel Corp.
      7 *
      8 * This file is part of the SCTP kernel implementation
      9 *
     10 * This file converts numerical ID value to alphabetical names for SCTP
     11 * terms such as chunk type, parameter time, event type, etc.
     12 *
     13 * Please send any bug reports or fixes you make to the
     14 * email address(es):
     15 *    lksctp developers <linux-sctp@vger.kernel.org>
     16 *
     17 * Written or modified by:
     18 *    La Monte H.P. Yarroll <piggy@acm.org>
     19 *    Karl Knutson          <karl@athena.chicago.il.us>
     20 *    Xingang Guo           <xingang.guo@intel.com>
     21 *    Jon Grimm             <jgrimm@us.ibm.com>
     22 *    Daisy Chang	    <daisyc@us.ibm.com>
     23 *    Sridhar Samudrala	    <sri@us.ibm.com>
     24 */
     25
     26#include <net/sctp/sctp.h>
     27
     28/* These are printable forms of Chunk ID's from section 3.1.  */
     29static const char *const sctp_cid_tbl[SCTP_NUM_BASE_CHUNK_TYPES] = {
     30	"DATA",
     31	"INIT",
     32	"INIT_ACK",
     33	"SACK",
     34	"HEARTBEAT",
     35	"HEARTBEAT_ACK",
     36	"ABORT",
     37	"SHUTDOWN",
     38	"SHUTDOWN_ACK",
     39	"ERROR",
     40	"COOKIE_ECHO",
     41	"COOKIE_ACK",
     42	"ECN_ECNE",
     43	"ECN_CWR",
     44	"SHUTDOWN_COMPLETE",
     45};
     46
     47/* Lookup "chunk type" debug name. */
     48const char *sctp_cname(const union sctp_subtype cid)
     49{
     50	if (cid.chunk <= SCTP_CID_BASE_MAX)
     51		return sctp_cid_tbl[cid.chunk];
     52
     53	switch (cid.chunk) {
     54	case SCTP_CID_ASCONF:
     55		return "ASCONF";
     56
     57	case SCTP_CID_ASCONF_ACK:
     58		return "ASCONF_ACK";
     59
     60	case SCTP_CID_FWD_TSN:
     61		return "FWD_TSN";
     62
     63	case SCTP_CID_AUTH:
     64		return "AUTH";
     65
     66	case SCTP_CID_RECONF:
     67		return "RECONF";
     68
     69	case SCTP_CID_I_DATA:
     70		return "I_DATA";
     71
     72	case SCTP_CID_I_FWD_TSN:
     73		return "I_FWD_TSN";
     74
     75	default:
     76		break;
     77	}
     78
     79	return "unknown chunk";
     80}
     81
     82/* These are printable forms of the states.  */
     83const char *const sctp_state_tbl[SCTP_STATE_NUM_STATES] = {
     84	"STATE_CLOSED",
     85	"STATE_COOKIE_WAIT",
     86	"STATE_COOKIE_ECHOED",
     87	"STATE_ESTABLISHED",
     88	"STATE_SHUTDOWN_PENDING",
     89	"STATE_SHUTDOWN_SENT",
     90	"STATE_SHUTDOWN_RECEIVED",
     91	"STATE_SHUTDOWN_ACK_SENT",
     92};
     93
     94/* Events that could change the state of an association.  */
     95const char *const sctp_evttype_tbl[] = {
     96	"EVENT_T_unknown",
     97	"EVENT_T_CHUNK",
     98	"EVENT_T_TIMEOUT",
     99	"EVENT_T_OTHER",
    100	"EVENT_T_PRIMITIVE"
    101};
    102
    103/* Return value of a state function */
    104const char *const sctp_status_tbl[] = {
    105	"DISPOSITION_DISCARD",
    106	"DISPOSITION_CONSUME",
    107	"DISPOSITION_NOMEM",
    108	"DISPOSITION_DELETE_TCB",
    109	"DISPOSITION_ABORT",
    110	"DISPOSITION_VIOLATION",
    111	"DISPOSITION_NOT_IMPL",
    112	"DISPOSITION_ERROR",
    113	"DISPOSITION_BUG"
    114};
    115
    116/* Printable forms of primitives */
    117static const char *const sctp_primitive_tbl[SCTP_NUM_PRIMITIVE_TYPES] = {
    118	"PRIMITIVE_ASSOCIATE",
    119	"PRIMITIVE_SHUTDOWN",
    120	"PRIMITIVE_ABORT",
    121	"PRIMITIVE_SEND",
    122	"PRIMITIVE_REQUESTHEARTBEAT",
    123	"PRIMITIVE_ASCONF",
    124};
    125
    126/* Lookup primitive debug name. */
    127const char *sctp_pname(const union sctp_subtype id)
    128{
    129	if (id.primitive <= SCTP_EVENT_PRIMITIVE_MAX)
    130		return sctp_primitive_tbl[id.primitive];
    131	return "unknown_primitive";
    132}
    133
    134static const char *const sctp_other_tbl[] = {
    135	"NO_PENDING_TSN",
    136	"ICMP_PROTO_UNREACH",
    137};
    138
    139/* Lookup "other" debug name. */
    140const char *sctp_oname(const union sctp_subtype id)
    141{
    142	if (id.other <= SCTP_EVENT_OTHER_MAX)
    143		return sctp_other_tbl[id.other];
    144	return "unknown 'other' event";
    145}
    146
    147static const char *const sctp_timer_tbl[] = {
    148	"TIMEOUT_NONE",
    149	"TIMEOUT_T1_COOKIE",
    150	"TIMEOUT_T1_INIT",
    151	"TIMEOUT_T2_SHUTDOWN",
    152	"TIMEOUT_T3_RTX",
    153	"TIMEOUT_T4_RTO",
    154	"TIMEOUT_T5_SHUTDOWN_GUARD",
    155	"TIMEOUT_HEARTBEAT",
    156	"TIMEOUT_RECONF",
    157	"TIMEOUT_PROBE",
    158	"TIMEOUT_SACK",
    159	"TIMEOUT_AUTOCLOSE",
    160};
    161
    162/* Lookup timer debug name. */
    163const char *sctp_tname(const union sctp_subtype id)
    164{
    165	BUILD_BUG_ON(SCTP_EVENT_TIMEOUT_MAX + 1 != ARRAY_SIZE(sctp_timer_tbl));
    166
    167	if (id.timeout < ARRAY_SIZE(sctp_timer_tbl))
    168		return sctp_timer_tbl[id.timeout];
    169	return "unknown_timer";
    170}