| xj | b04a402 | 2021-11-25 15:01:52 +0800 | [diff] [blame] | 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 SCTP implementation is free software; | 
 | 10 |  * you can redistribute it and/or modify it under the terms of | 
 | 11 |  * the GNU General Public License as published by | 
 | 12 |  * the Free Software Foundation; either version 2, or (at your option) | 
 | 13 |  * any later version. | 
 | 14 |  * | 
 | 15 |  * This SCTP implementation is distributed in the hope that it | 
 | 16 |  * will be useful, but WITHOUT ANY WARRANTY; without even the implied | 
 | 17 |  *                 ************************ | 
 | 18 |  * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | 
 | 19 |  * See the GNU General Public License for more details. | 
 | 20 |  * | 
 | 21 |  * You should have received a copy of the GNU General Public License | 
 | 22 |  * along with GNU CC; see the file COPYING.  If not, see | 
 | 23 |  * <http://www.gnu.org/licenses/>. | 
 | 24 |  * | 
 | 25 |  * Please send any bug reports or fixes you make to the | 
 | 26 |  * email address(es): | 
 | 27 |  *    lksctp developers <linux-sctp@vger.kernel.org> | 
 | 28 |  * | 
 | 29 |  * Written or modified by: | 
 | 30 |  *   La Monte H.P. Yarroll <piggy@acm.org> | 
 | 31 |  *   Karl Knutson          <karl@athena.chicago.il.us> | 
 | 32 |  *   Randall Stewart       <randall@stewart.chicago.il.us> | 
 | 33 |  *   Ken Morneau           <kmorneau@cisco.com> | 
 | 34 |  *   Qiaobing Xie          <qxie1@motorola.com> | 
 | 35 |  *   Xingang Guo           <xingang.guo@intel.com> | 
 | 36 |  *   Sridhar Samudrala     <samudrala@us.ibm.com> | 
 | 37 |  *   Daisy Chang           <daisyc@us.ibm.com> | 
 | 38 |  */ | 
 | 39 |  | 
 | 40 | #ifndef __sctp_constants_h__ | 
 | 41 | #define __sctp_constants_h__ | 
 | 42 |  | 
 | 43 | #include <linux/sctp.h> | 
 | 44 | #include <linux/ipv6.h> /* For ipv6hdr. */ | 
 | 45 | #include <net/tcp_states.h>  /* For TCP states used in enum sctp_sock_state */ | 
 | 46 |  | 
 | 47 | /* Value used for stream negotiation. */ | 
 | 48 | enum { SCTP_MAX_STREAM = 0xffff }; | 
 | 49 | enum { SCTP_DEFAULT_OUTSTREAMS = 10 }; | 
 | 50 | enum { SCTP_DEFAULT_INSTREAMS = SCTP_MAX_STREAM }; | 
 | 51 |  | 
 | 52 | /* Since CIDs are sparse, we need all four of the following | 
 | 53 |  * symbols.  CIDs are dense through SCTP_CID_BASE_MAX. | 
 | 54 |  */ | 
 | 55 | #define SCTP_CID_BASE_MAX		SCTP_CID_SHUTDOWN_COMPLETE | 
 | 56 |  | 
 | 57 | #define SCTP_NUM_BASE_CHUNK_TYPES	(SCTP_CID_BASE_MAX + 1) | 
 | 58 |  | 
 | 59 | #define SCTP_NUM_ADDIP_CHUNK_TYPES	2 | 
 | 60 |  | 
 | 61 | #define SCTP_NUM_PRSCTP_CHUNK_TYPES	1 | 
 | 62 |  | 
 | 63 | #define SCTP_NUM_RECONF_CHUNK_TYPES	1 | 
 | 64 |  | 
 | 65 | #define SCTP_NUM_AUTH_CHUNK_TYPES	1 | 
 | 66 |  | 
 | 67 | #define SCTP_NUM_CHUNK_TYPES		(SCTP_NUM_BASE_CHUNK_TYPES + \ | 
 | 68 | 					 SCTP_NUM_ADDIP_CHUNK_TYPES +\ | 
 | 69 | 					 SCTP_NUM_PRSCTP_CHUNK_TYPES +\ | 
 | 70 | 					 SCTP_NUM_RECONF_CHUNK_TYPES +\ | 
 | 71 | 					 SCTP_NUM_AUTH_CHUNK_TYPES) | 
 | 72 |  | 
 | 73 | /* These are the different flavours of event.  */ | 
 | 74 | enum sctp_event { | 
 | 75 | 	SCTP_EVENT_T_CHUNK = 1, | 
 | 76 | 	SCTP_EVENT_T_TIMEOUT, | 
 | 77 | 	SCTP_EVENT_T_OTHER, | 
 | 78 | 	SCTP_EVENT_T_PRIMITIVE | 
 | 79 | }; | 
 | 80 |  | 
 | 81 | /* As a convenience for the state machine, we append SCTP_EVENT_* and | 
 | 82 |  * SCTP_ULP_* to the list of possible chunks. | 
 | 83 |  */ | 
 | 84 |  | 
 | 85 | enum sctp_event_timeout { | 
 | 86 | 	SCTP_EVENT_TIMEOUT_NONE = 0, | 
 | 87 | 	SCTP_EVENT_TIMEOUT_T1_COOKIE, | 
 | 88 | 	SCTP_EVENT_TIMEOUT_T1_INIT, | 
 | 89 | 	SCTP_EVENT_TIMEOUT_T2_SHUTDOWN, | 
 | 90 | 	SCTP_EVENT_TIMEOUT_T3_RTX, | 
 | 91 | 	SCTP_EVENT_TIMEOUT_T4_RTO, | 
 | 92 | 	SCTP_EVENT_TIMEOUT_T5_SHUTDOWN_GUARD, | 
 | 93 | 	SCTP_EVENT_TIMEOUT_HEARTBEAT, | 
 | 94 | 	SCTP_EVENT_TIMEOUT_RECONF, | 
 | 95 | 	SCTP_EVENT_TIMEOUT_SACK, | 
 | 96 | 	SCTP_EVENT_TIMEOUT_AUTOCLOSE, | 
 | 97 | }; | 
 | 98 |  | 
 | 99 | #define SCTP_EVENT_TIMEOUT_MAX		SCTP_EVENT_TIMEOUT_AUTOCLOSE | 
 | 100 | #define SCTP_NUM_TIMEOUT_TYPES		(SCTP_EVENT_TIMEOUT_MAX + 1) | 
 | 101 |  | 
 | 102 | enum sctp_event_other { | 
 | 103 | 	SCTP_EVENT_NO_PENDING_TSN = 0, | 
 | 104 | 	SCTP_EVENT_ICMP_PROTO_UNREACH, | 
 | 105 | }; | 
 | 106 |  | 
 | 107 | #define SCTP_EVENT_OTHER_MAX		SCTP_EVENT_ICMP_PROTO_UNREACH | 
 | 108 | #define SCTP_NUM_OTHER_TYPES		(SCTP_EVENT_OTHER_MAX + 1) | 
 | 109 |  | 
 | 110 | /* These are primitive requests from the ULP.  */ | 
 | 111 | enum sctp_event_primitive { | 
 | 112 | 	SCTP_PRIMITIVE_ASSOCIATE = 0, | 
 | 113 | 	SCTP_PRIMITIVE_SHUTDOWN, | 
 | 114 | 	SCTP_PRIMITIVE_ABORT, | 
 | 115 | 	SCTP_PRIMITIVE_SEND, | 
 | 116 | 	SCTP_PRIMITIVE_REQUESTHEARTBEAT, | 
 | 117 | 	SCTP_PRIMITIVE_ASCONF, | 
 | 118 | 	SCTP_PRIMITIVE_RECONF, | 
 | 119 | }; | 
 | 120 |  | 
 | 121 | #define SCTP_EVENT_PRIMITIVE_MAX	SCTP_PRIMITIVE_RECONF | 
 | 122 | #define SCTP_NUM_PRIMITIVE_TYPES	(SCTP_EVENT_PRIMITIVE_MAX + 1) | 
 | 123 |  | 
 | 124 | /* We define here a utility type for manipulating subtypes. | 
 | 125 |  * The subtype constructors all work like this: | 
 | 126 |  * | 
 | 127 |  *   union sctp_subtype foo = SCTP_ST_CHUNK(SCTP_CID_INIT); | 
 | 128 |  */ | 
 | 129 |  | 
 | 130 | union sctp_subtype { | 
 | 131 | 	enum sctp_cid chunk; | 
 | 132 | 	enum sctp_event_timeout timeout; | 
 | 133 | 	enum sctp_event_other other; | 
 | 134 | 	enum sctp_event_primitive primitive; | 
 | 135 | }; | 
 | 136 |  | 
 | 137 | #define SCTP_SUBTYPE_CONSTRUCTOR(_name, _type, _elt) \ | 
 | 138 | static inline union sctp_subtype	\ | 
 | 139 | SCTP_ST_## _name (_type _arg)		\ | 
 | 140 | { union sctp_subtype _retval; _retval._elt = _arg; return _retval; } | 
 | 141 |  | 
 | 142 | SCTP_SUBTYPE_CONSTRUCTOR(CHUNK,		enum sctp_cid,		chunk) | 
 | 143 | SCTP_SUBTYPE_CONSTRUCTOR(TIMEOUT,	enum sctp_event_timeout, timeout) | 
 | 144 | SCTP_SUBTYPE_CONSTRUCTOR(OTHER,		enum sctp_event_other,	other) | 
 | 145 | SCTP_SUBTYPE_CONSTRUCTOR(PRIMITIVE,	enum sctp_event_primitive, primitive) | 
 | 146 |  | 
 | 147 |  | 
 | 148 | #define sctp_chunk_is_data(a) (a->chunk_hdr->type == SCTP_CID_DATA || \ | 
 | 149 | 			       a->chunk_hdr->type == SCTP_CID_I_DATA) | 
 | 150 |  | 
 | 151 | /* Calculate the actual data size in a data chunk */ | 
 | 152 | #define SCTP_DATA_SNDSIZE(c) ((int)((unsigned long)(c->chunk_end) - \ | 
 | 153 | 				    (unsigned long)(c->chunk_hdr) - \ | 
 | 154 | 				    sctp_datachk_len(&c->asoc->stream))) | 
 | 155 |  | 
 | 156 | /* Internal error codes */ | 
 | 157 | enum sctp_ierror { | 
 | 158 | 	SCTP_IERROR_NO_ERROR	        = 0, | 
 | 159 | 	SCTP_IERROR_BASE		= 1000, | 
 | 160 | 	SCTP_IERROR_NO_COOKIE, | 
 | 161 | 	SCTP_IERROR_BAD_SIG, | 
 | 162 | 	SCTP_IERROR_STALE_COOKIE, | 
 | 163 | 	SCTP_IERROR_NOMEM, | 
 | 164 | 	SCTP_IERROR_MALFORMED, | 
 | 165 | 	SCTP_IERROR_BAD_TAG, | 
 | 166 | 	SCTP_IERROR_BIG_GAP, | 
 | 167 | 	SCTP_IERROR_DUP_TSN, | 
 | 168 | 	SCTP_IERROR_HIGH_TSN, | 
 | 169 | 	SCTP_IERROR_IGNORE_TSN, | 
 | 170 | 	SCTP_IERROR_NO_DATA, | 
 | 171 | 	SCTP_IERROR_BAD_STREAM, | 
 | 172 | 	SCTP_IERROR_BAD_PORTS, | 
 | 173 | 	SCTP_IERROR_AUTH_BAD_HMAC, | 
 | 174 | 	SCTP_IERROR_AUTH_BAD_KEYID, | 
 | 175 | 	SCTP_IERROR_PROTO_VIOLATION, | 
 | 176 | 	SCTP_IERROR_ERROR, | 
 | 177 | 	SCTP_IERROR_ABORT, | 
 | 178 | }; | 
 | 179 |  | 
 | 180 |  | 
 | 181 |  | 
 | 182 | /* SCTP state defines for internal state machine */ | 
 | 183 | enum sctp_state { | 
 | 184 |  | 
 | 185 | 	SCTP_STATE_CLOSED		= 0, | 
 | 186 | 	SCTP_STATE_COOKIE_WAIT		= 1, | 
 | 187 | 	SCTP_STATE_COOKIE_ECHOED	= 2, | 
 | 188 | 	SCTP_STATE_ESTABLISHED		= 3, | 
 | 189 | 	SCTP_STATE_SHUTDOWN_PENDING	= 4, | 
 | 190 | 	SCTP_STATE_SHUTDOWN_SENT	= 5, | 
 | 191 | 	SCTP_STATE_SHUTDOWN_RECEIVED	= 6, | 
 | 192 | 	SCTP_STATE_SHUTDOWN_ACK_SENT	= 7, | 
 | 193 |  | 
 | 194 | }; | 
 | 195 |  | 
 | 196 | #define SCTP_STATE_MAX			SCTP_STATE_SHUTDOWN_ACK_SENT | 
 | 197 | #define SCTP_STATE_NUM_STATES		(SCTP_STATE_MAX + 1) | 
 | 198 |  | 
 | 199 | /* These are values for sk->state. | 
 | 200 |  * For a UDP-style SCTP socket, the states are defined as follows | 
 | 201 |  * - A socket in SCTP_SS_CLOSED state indicates that it is not willing to | 
 | 202 |  *   accept new associations, but it can initiate the creation of new ones. | 
 | 203 |  * - A socket in SCTP_SS_LISTENING state indicates that it is willing to | 
 | 204 |  *   accept new  associations and can initiate the creation of new ones. | 
 | 205 |  * - A socket in SCTP_SS_ESTABLISHED state indicates that it is a peeled off | 
 | 206 |  *   socket with one association. | 
 | 207 |  * For a TCP-style SCTP socket, the states are defined as follows | 
 | 208 |  * - A socket in SCTP_SS_CLOSED state indicates that it is not willing to | 
 | 209 |  *   accept new associations, but it can initiate the creation of new ones. | 
 | 210 |  * - A socket in SCTP_SS_LISTENING state indicates that it is willing to | 
 | 211 |  *   accept new associations, but cannot initiate the creation of new ones. | 
 | 212 |  * - A socket in SCTP_SS_ESTABLISHED state indicates that it has a single  | 
 | 213 |  *   association. | 
 | 214 |  */ | 
 | 215 | enum sctp_sock_state { | 
 | 216 | 	SCTP_SS_CLOSED         = TCP_CLOSE, | 
 | 217 | 	SCTP_SS_LISTENING      = TCP_LISTEN, | 
 | 218 | 	SCTP_SS_ESTABLISHING   = TCP_SYN_SENT, | 
 | 219 | 	SCTP_SS_ESTABLISHED    = TCP_ESTABLISHED, | 
 | 220 | 	SCTP_SS_CLOSING        = TCP_CLOSE_WAIT, | 
 | 221 | }; | 
 | 222 |  | 
 | 223 | /* These functions map various type to printable names.  */ | 
 | 224 | const char *sctp_cname(const union sctp_subtype id);	/* chunk types */ | 
 | 225 | const char *sctp_oname(const union sctp_subtype id);	/* other events */ | 
 | 226 | const char *sctp_tname(const union sctp_subtype id);	/* timeouts */ | 
 | 227 | const char *sctp_pname(const union sctp_subtype id);	/* primitives */ | 
 | 228 |  | 
 | 229 | /* This is a table of printable names of sctp_state_t's.  */ | 
 | 230 | extern const char *const sctp_state_tbl[]; | 
 | 231 | extern const char *const sctp_evttype_tbl[]; | 
 | 232 | extern const char *const sctp_status_tbl[]; | 
 | 233 |  | 
 | 234 | /* Maximum chunk length considering padding requirements. */ | 
 | 235 | enum { SCTP_MAX_CHUNK_LEN = ((1<<16) - sizeof(__u32)) }; | 
 | 236 |  | 
 | 237 | /* Encourage Cookie-Echo bundling by pre-fragmenting chunks a little | 
 | 238 |  * harder (until reaching ESTABLISHED state). | 
 | 239 |  */ | 
 | 240 | enum { SCTP_ARBITRARY_COOKIE_ECHO_LEN = 200 }; | 
 | 241 |  | 
 | 242 | /* Guess at how big to make the TSN mapping array. | 
 | 243 |  * We guarantee that we can handle at least this big a gap between the | 
 | 244 |  * cumulative ACK and the highest TSN.  In practice, we can often | 
 | 245 |  * handle up to twice this value. | 
 | 246 |  * | 
 | 247 |  * NEVER make this more than 32767 (2^15-1).  The Gap Ack Blocks in a | 
 | 248 |  * SACK (see  section 3.3.4) are only 16 bits, so 2*SCTP_TSN_MAP_SIZE | 
 | 249 |  * must be less than 65535 (2^16 - 1), or we will have overflow | 
 | 250 |  * problems creating SACK's. | 
 | 251 |  */ | 
 | 252 | #define SCTP_TSN_MAP_INITIAL BITS_PER_LONG | 
 | 253 | #define SCTP_TSN_MAP_INCREMENT SCTP_TSN_MAP_INITIAL | 
 | 254 | #define SCTP_TSN_MAP_SIZE 4096 | 
 | 255 |  | 
 | 256 | /* We will not record more than this many duplicate TSNs between two | 
 | 257 |  * SACKs.  The minimum PMTU is 512.  Remove all the headers and there | 
 | 258 |  * is enough room for 117 duplicate reports.  Round down to the | 
 | 259 |  * nearest power of 2. | 
 | 260 |  */ | 
 | 261 | enum { SCTP_MAX_DUP_TSNS = 16 }; | 
 | 262 | enum { SCTP_MAX_GABS = 16 }; | 
 | 263 |  | 
 | 264 | /* Heartbeat interval - 30 secs */ | 
 | 265 | #define SCTP_DEFAULT_TIMEOUT_HEARTBEAT	(30*1000) | 
 | 266 |  | 
 | 267 | /* Delayed sack timer - 200ms */ | 
 | 268 | #define SCTP_DEFAULT_TIMEOUT_SACK	(200) | 
 | 269 |  | 
 | 270 | /* RTO.Initial              - 3  seconds | 
 | 271 |  * RTO.Min                  - 1  second | 
 | 272 |  * RTO.Max                  - 60 seconds | 
 | 273 |  * RTO.Alpha                - 1/8 | 
 | 274 |  * RTO.Beta                 - 1/4 | 
 | 275 |  */ | 
 | 276 | #define SCTP_RTO_INITIAL	(3 * 1000) | 
 | 277 | #define SCTP_RTO_MIN		(1 * 1000) | 
 | 278 | #define SCTP_RTO_MAX		(60 * 1000) | 
 | 279 |  | 
 | 280 | #define SCTP_RTO_ALPHA          3   /* 1/8 when converted to right shifts. */ | 
 | 281 | #define SCTP_RTO_BETA           2   /* 1/4 when converted to right shifts. */ | 
 | 282 |  | 
 | 283 | /* Maximum number of new data packets that can be sent in a burst.  */ | 
 | 284 | #define SCTP_DEFAULT_MAX_BURST		4 | 
 | 285 |  | 
 | 286 | #define SCTP_CLOCK_GRANULARITY	1	/* 1 jiffy */ | 
 | 287 |  | 
 | 288 | #define SCTP_DEFAULT_COOKIE_LIFE	(60 * 1000) /* 60 seconds */ | 
 | 289 |  | 
 | 290 | #define SCTP_DEFAULT_MINWINDOW	1500	/* default minimum rwnd size */ | 
 | 291 | #define SCTP_DEFAULT_MAXWINDOW	65535	/* default rwnd size */ | 
 | 292 | #define SCTP_DEFAULT_RWND_SHIFT  4	/* by default, update on 1/16 of | 
 | 293 | 					 * rcvbuf, which is 1/8 of initial | 
 | 294 | 					 * window | 
 | 295 | 					 */ | 
 | 296 | #define SCTP_DEFAULT_MAXSEGMENT 1500	/* MTU size, this is the limit | 
 | 297 |                                          * to which we will raise the P-MTU. | 
 | 298 | 					 */ | 
 | 299 | #define SCTP_DEFAULT_MINSEGMENT 512	/* MTU size ... if no mtu disc */ | 
 | 300 |  | 
 | 301 | #define SCTP_SECRET_SIZE 32		/* Number of octets in a 256 bits. */ | 
 | 302 |  | 
 | 303 | #define SCTP_SIGNATURE_SIZE 20	        /* size of a SLA-1 signature */ | 
 | 304 |  | 
 | 305 | #define SCTP_COOKIE_MULTIPLE 32 /* Pad out our cookie to make our hash | 
 | 306 | 				 * functions simpler to write. | 
 | 307 | 				 */ | 
 | 308 |  | 
 | 309 | /* These return values describe the success or failure of a number of | 
 | 310 |  * routines which form the lower interface to SCTP_outqueue. | 
 | 311 |  */ | 
 | 312 | enum sctp_xmit { | 
 | 313 | 	SCTP_XMIT_OK, | 
 | 314 | 	SCTP_XMIT_PMTU_FULL, | 
 | 315 | 	SCTP_XMIT_RWND_FULL, | 
 | 316 | 	SCTP_XMIT_DELAY, | 
 | 317 | }; | 
 | 318 |  | 
 | 319 | /* These are the commands for manipulating transports.  */ | 
 | 320 | enum sctp_transport_cmd { | 
 | 321 | 	SCTP_TRANSPORT_UP, | 
 | 322 | 	SCTP_TRANSPORT_DOWN, | 
 | 323 | 	SCTP_TRANSPORT_PF, | 
 | 324 | }; | 
 | 325 |  | 
 | 326 | /* These are the address scopes defined mainly for IPv4 addresses | 
 | 327 |  * based on draft of SCTP IPv4 scoping <draft-stewart-tsvwg-sctp-ipv4-00.txt>. | 
 | 328 |  * These scopes are hopefully generic enough to be used on scoping both | 
 | 329 |  * IPv4 and IPv6 addresses in SCTP. | 
 | 330 |  * At this point, the IPv6 scopes will be mapped to these internal scopes | 
 | 331 |  * as much as possible. | 
 | 332 |  */ | 
 | 333 | enum sctp_scope { | 
 | 334 | 	SCTP_SCOPE_GLOBAL,		/* IPv4 global addresses */ | 
 | 335 | 	SCTP_SCOPE_PRIVATE,		/* IPv4 private addresses */ | 
 | 336 | 	SCTP_SCOPE_LINK,		/* IPv4 link local address */ | 
 | 337 | 	SCTP_SCOPE_LOOPBACK,		/* IPv4 loopback address */ | 
 | 338 | 	SCTP_SCOPE_UNUSABLE,		/* IPv4 unusable addresses */ | 
 | 339 | }; | 
 | 340 |  | 
 | 341 | enum { | 
 | 342 | 	SCTP_SCOPE_POLICY_DISABLE,	/* Disable IPv4 address scoping */ | 
 | 343 | 	SCTP_SCOPE_POLICY_ENABLE,	/* Enable IPv4 address scoping */ | 
 | 344 | 	SCTP_SCOPE_POLICY_PRIVATE,	/* Follow draft but allow IPv4 private addresses */ | 
 | 345 | 	SCTP_SCOPE_POLICY_LINK,		/* Follow draft but allow IPv4 link local addresses */ | 
 | 346 | }; | 
 | 347 |  | 
 | 348 | #define SCTP_SCOPE_POLICY_MAX	SCTP_SCOPE_POLICY_LINK | 
 | 349 |  | 
 | 350 | /* Based on IPv4 scoping <draft-stewart-tsvwg-sctp-ipv4-00.txt>, | 
 | 351 |  * SCTP IPv4 unusable addresses: 0.0.0.0/8, 224.0.0.0/4, 198.18.0.0/24, | 
 | 352 |  * 192.88.99.0/24. | 
 | 353 |  * Also, RFC 8.4, non-unicast addresses are not considered valid SCTP | 
 | 354 |  * addresses. | 
 | 355 |  */ | 
 | 356 | #define IS_IPV4_UNUSABLE_ADDRESS(a)	    \ | 
 | 357 | 	((htonl(INADDR_BROADCAST) == a) ||  \ | 
 | 358 | 	 ipv4_is_multicast(a) ||	    \ | 
 | 359 | 	 ipv4_is_zeronet(a) ||		    \ | 
 | 360 | 	 ipv4_is_test_198(a) ||		    \ | 
 | 361 | 	 ipv4_is_anycast_6to4(a)) | 
 | 362 |  | 
 | 363 | /* Flags used for the bind address copy functions.  */ | 
 | 364 | #define SCTP_ADDR6_ALLOWED	0x00000001	/* IPv6 address is allowed by | 
 | 365 | 						   local sock family */ | 
 | 366 | #define SCTP_ADDR4_PEERSUPP	0x00000002	/* IPv4 address is supported by | 
 | 367 | 						   peer */ | 
 | 368 | #define SCTP_ADDR6_PEERSUPP	0x00000004	/* IPv6 address is supported by | 
 | 369 | 						   peer */ | 
 | 370 |  | 
 | 371 | /* Reasons to retransmit. */ | 
 | 372 | enum sctp_retransmit_reason { | 
 | 373 | 	SCTP_RTXR_T3_RTX, | 
 | 374 | 	SCTP_RTXR_FAST_RTX, | 
 | 375 | 	SCTP_RTXR_PMTUD, | 
 | 376 | 	SCTP_RTXR_T1_RTX, | 
 | 377 | }; | 
 | 378 |  | 
 | 379 | /* Reasons to lower cwnd. */ | 
 | 380 | enum sctp_lower_cwnd { | 
 | 381 | 	SCTP_LOWER_CWND_T3_RTX, | 
 | 382 | 	SCTP_LOWER_CWND_FAST_RTX, | 
 | 383 | 	SCTP_LOWER_CWND_ECNE, | 
 | 384 | 	SCTP_LOWER_CWND_INACTIVE, | 
 | 385 | }; | 
 | 386 |  | 
 | 387 |  | 
 | 388 | /* SCTP-AUTH Necessary constants */ | 
 | 389 |  | 
 | 390 | /* SCTP-AUTH, Section 3.3 | 
 | 391 |  * | 
 | 392 |  *  The following Table 2 shows the currently defined values for HMAC | 
 | 393 |  *  identifiers. | 
 | 394 |  * | 
 | 395 |  *  +-----------------+--------------------------+ | 
 | 396 |  *  | HMAC Identifier | Message Digest Algorithm | | 
 | 397 |  *  +-----------------+--------------------------+ | 
 | 398 |  *  | 0               | Reserved                 | | 
 | 399 |  *  | 1               | SHA-1 defined in [8]     | | 
 | 400 |  *  | 2               | Reserved                 | | 
 | 401 |  *  | 3               | SHA-256 defined in [8]   | | 
 | 402 |  *  +-----------------+--------------------------+ | 
 | 403 |  */ | 
 | 404 | enum { | 
 | 405 | 	SCTP_AUTH_HMAC_ID_RESERVED_0, | 
 | 406 | 	SCTP_AUTH_HMAC_ID_SHA1, | 
 | 407 | 	SCTP_AUTH_HMAC_ID_RESERVED_2, | 
 | 408 | #if defined (CONFIG_CRYPTO_SHA256) || defined (CONFIG_CRYPTO_SHA256_MODULE) | 
 | 409 | 	SCTP_AUTH_HMAC_ID_SHA256, | 
 | 410 | #endif | 
 | 411 | 	__SCTP_AUTH_HMAC_MAX | 
 | 412 | }; | 
 | 413 |  | 
 | 414 | #define SCTP_AUTH_HMAC_ID_MAX	__SCTP_AUTH_HMAC_MAX - 1 | 
 | 415 | #define SCTP_AUTH_NUM_HMACS 	__SCTP_AUTH_HMAC_MAX | 
 | 416 | #define SCTP_SHA1_SIG_SIZE 20 | 
 | 417 | #define SCTP_SHA256_SIG_SIZE 32 | 
 | 418 |  | 
 | 419 | /*  SCTP-AUTH, Section 3.2 | 
 | 420 |  *     The chunk types for INIT, INIT-ACK, SHUTDOWN-COMPLETE and AUTH chunks | 
 | 421 |  *     MUST NOT be listed in the CHUNKS parameter | 
 | 422 |  */ | 
 | 423 | #define SCTP_NUM_NOAUTH_CHUNKS	4 | 
 | 424 | #define SCTP_AUTH_MAX_CHUNKS	(SCTP_NUM_CHUNK_TYPES - SCTP_NUM_NOAUTH_CHUNKS) | 
 | 425 |  | 
 | 426 | /* SCTP-AUTH Section 6.1 | 
 | 427 |  * The RANDOM parameter MUST contain a 32 byte random number. | 
 | 428 |  */ | 
 | 429 | #define SCTP_AUTH_RANDOM_LENGTH 32 | 
 | 430 |  | 
 | 431 | #endif /* __sctp_constants_h__ */ |