Blame view

net/sctp/debug.c 4.34 KB
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
1
  /* SCTP kernel implementation
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
5
   * (C) Copyright IBM Corp. 2001, 2004
   * Copyright (c) 1999-2000 Cisco, Inc.
   * Copyright (c) 1999-2001 Motorola, Inc.
   * Copyright (c) 2001 Intel Corp.
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
6
   *
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
7
   * This file is part of the SCTP kernel implementation
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
8
   *
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
9
10
   * This file converts numerical ID value to alphabetical names for SCTP
   * terms such as chunk type, parameter time, event type, etc.
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
11
   *
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
12
   * This SCTP implementation is free software;
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
13
   * you can redistribute it and/or modify it under the terms of
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
14
15
16
   * the GNU General Public License as published by
   * the Free Software Foundation; either version 2, or (at your option)
   * any later version.
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
17
   *
60c778b25   Vlad Yasevich   [SCTP]: Stop clai...
18
   * This SCTP implementation is distributed in the hope that it
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
19
20
21
22
   * 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.
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
23
   *
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
24
   * You should have received a copy of the GNU General Public License
4b2f13a25   Jeff Kirsher   sctp: Fix FSF add...
25
26
   * along with GNU CC; see the file COPYING.  If not, see
   * <http://www.gnu.org/licenses/>.
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
27
   *
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
28
29
   * Please send any bug reports or fixes you make to the
   * email address(es):
91705c61b   Daniel Borkmann   net: sctp: trivia...
30
   *    lksctp developers <linux-sctp@vger.kernel.org>
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
31
   *
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
32
   * Written or modified by:
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
33
34
35
36
37
38
   *    La Monte H.P. Yarroll <piggy@acm.org>
   *    Karl Knutson          <karl@athena.chicago.il.us>
   *    Xingang Guo           <xingang.guo@intel.com>
   *    Jon Grimm             <jgrimm@us.ibm.com>
   *    Daisy Chang	    <daisyc@us.ibm.com>
   *    Sridhar Samudrala	    <sri@us.ibm.com>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
39
40
41
   */
  
  #include <net/sctp/sctp.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
42
  /* These are printable forms of Chunk ID's from section 3.1.  */
36cbd3dcc   Jan Engelhardt   net: mark read-on...
43
  static const char *const sctp_cid_tbl[SCTP_NUM_BASE_CHUNK_TYPES] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  	"DATA",
  	"INIT",
  	"INIT_ACK",
  	"SACK",
  	"HEARTBEAT",
  	"HEARTBEAT_ACK",
  	"ABORT",
  	"SHUTDOWN",
  	"SHUTDOWN_ACK",
  	"ERROR",
  	"COOKIE_ECHO",
  	"COOKIE_ACK",
  	"ECN_ECNE",
  	"ECN_CWR",
  	"SHUTDOWN_COMPLETE",
  };
  
  /* Lookup "chunk type" debug name. */
bfc6f8270   Xin Long   sctp: remove the ...
62
  const char *sctp_cname(const union sctp_subtype cid)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
63
  {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
64
65
  	if (cid.chunk <= SCTP_CID_BASE_MAX)
  		return sctp_cid_tbl[cid.chunk];
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
66

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
67
68
69
70
71
72
73
74
75
  	switch (cid.chunk) {
  	case SCTP_CID_ASCONF:
  		return "ASCONF";
  
  	case SCTP_CID_ASCONF_ACK:
  		return "ASCONF_ACK";
  
  	case SCTP_CID_FWD_TSN:
  		return "FWD_TSN";
906f8257e   Wei Yongjun   sctp: Add some mi...
76
77
  	case SCTP_CID_AUTH:
  		return "AUTH";
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
78
  	default:
3ff50b799   Stephen Hemminger   [NET]: cleanup ex...
79
80
  		break;
  	}
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
81
82
83
84
  	return "unknown chunk";
  }
  
  /* These are printable forms of the states.  */
36cbd3dcc   Jan Engelhardt   net: mark read-on...
85
  const char *const sctp_state_tbl[SCTP_STATE_NUM_STATES] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
86
87
88
89
90
91
92
93
94
95
96
  	"STATE_CLOSED",
  	"STATE_COOKIE_WAIT",
  	"STATE_COOKIE_ECHOED",
  	"STATE_ESTABLISHED",
  	"STATE_SHUTDOWN_PENDING",
  	"STATE_SHUTDOWN_SENT",
  	"STATE_SHUTDOWN_RECEIVED",
  	"STATE_SHUTDOWN_ACK_SENT",
  };
  
  /* Events that could change the state of an association.  */
36cbd3dcc   Jan Engelhardt   net: mark read-on...
97
  const char *const sctp_evttype_tbl[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
98
99
100
101
102
103
104
105
  	"EVENT_T_unknown",
  	"EVENT_T_CHUNK",
  	"EVENT_T_TIMEOUT",
  	"EVENT_T_OTHER",
  	"EVENT_T_PRIMITIVE"
  };
  
  /* Return value of a state function */
36cbd3dcc   Jan Engelhardt   net: mark read-on...
106
  const char *const sctp_status_tbl[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
107
108
109
110
111
112
113
114
115
116
117
118
  	"DISPOSITION_DISCARD",
  	"DISPOSITION_CONSUME",
  	"DISPOSITION_NOMEM",
  	"DISPOSITION_DELETE_TCB",
  	"DISPOSITION_ABORT",
  	"DISPOSITION_VIOLATION",
  	"DISPOSITION_NOT_IMPL",
  	"DISPOSITION_ERROR",
  	"DISPOSITION_BUG"
  };
  
  /* Printable forms of primitives */
36cbd3dcc   Jan Engelhardt   net: mark read-on...
119
  static const char *const sctp_primitive_tbl[SCTP_NUM_PRIMITIVE_TYPES] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
120
121
122
123
124
  	"PRIMITIVE_ASSOCIATE",
  	"PRIMITIVE_SHUTDOWN",
  	"PRIMITIVE_ABORT",
  	"PRIMITIVE_SEND",
  	"PRIMITIVE_REQUESTHEARTBEAT",
906f8257e   Wei Yongjun   sctp: Add some mi...
125
  	"PRIMITIVE_ASCONF",
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
126
127
128
  };
  
  /* Lookup primitive debug name. */
bfc6f8270   Xin Long   sctp: remove the ...
129
  const char *sctp_pname(const union sctp_subtype id)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
130
  {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
131
132
133
134
  	if (id.primitive <= SCTP_EVENT_PRIMITIVE_MAX)
  		return sctp_primitive_tbl[id.primitive];
  	return "unknown_primitive";
  }
36cbd3dcc   Jan Engelhardt   net: mark read-on...
135
  static const char *const sctp_other_tbl[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
136
  	"NO_PENDING_TSN",
d808ad9ab   YOSHIFUJI Hideaki   [NET] SCTP: Fix w...
137
  	"ICMP_PROTO_UNREACH",
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
138
139
140
  };
  
  /* Lookup "other" debug name. */
bfc6f8270   Xin Long   sctp: remove the ...
141
  const char *sctp_oname(const union sctp_subtype id)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
142
  {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
143
144
145
146
  	if (id.other <= SCTP_EVENT_OTHER_MAX)
  		return sctp_other_tbl[id.other];
  	return "unknown 'other' event";
  }
36cbd3dcc   Jan Engelhardt   net: mark read-on...
147
  static const char *const sctp_timer_tbl[] = {
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
148
149
150
151
152
153
154
155
  	"TIMEOUT_NONE",
  	"TIMEOUT_T1_COOKIE",
  	"TIMEOUT_T1_INIT",
  	"TIMEOUT_T2_SHUTDOWN",
  	"TIMEOUT_T3_RTX",
  	"TIMEOUT_T4_RTO",
  	"TIMEOUT_T5_SHUTDOWN_GUARD",
  	"TIMEOUT_HEARTBEAT",
146408693   Colin Ian King   net: sctp: fix ar...
156
  	"TIMEOUT_RECONF",
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
157
158
159
160
161
  	"TIMEOUT_SACK",
  	"TIMEOUT_AUTOCLOSE",
  };
  
  /* Lookup timer debug name. */
bfc6f8270   Xin Long   sctp: remove the ...
162
  const char *sctp_tname(const union sctp_subtype id)
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
163
  {
146408693   Colin Ian King   net: sctp: fix ar...
164
165
166
  	BUILD_BUG_ON(SCTP_EVENT_TIMEOUT_MAX + 1 != ARRAY_SIZE(sctp_timer_tbl));
  
  	if (id.timeout < ARRAY_SIZE(sctp_timer_tbl))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
167
168
169
  		return sctp_timer_tbl[id.timeout];
  	return "unknown_timer";
  }