1190207Srpaulo/* @(#) $Header: /tcpdump/master/tcpdump/sctpConstants.h,v 1.4 2003-06-03 23:49:23 guy Exp $ (LBL) */ 298524Sfenner 398524Sfenner/* SCTP reference Implementation Copyright (C) 1999 Cisco And Motorola 498524Sfenner * 598524Sfenner * Redistribution and use in source and binary forms, with or without 698524Sfenner * modification, are permitted provided that the following conditions 798524Sfenner * are met: 898524Sfenner * 998524Sfenner * 1. Redistributions of source code must retain the above copyright 1098524Sfenner * notice, this list of conditions and the following disclaimer. 1198524Sfenner * 1298524Sfenner * 2. Redistributions in binary form must reproduce the above copyright 1398524Sfenner * notice, this list of conditions and the following disclaimer in the 1498524Sfenner * documentation and/or other materials provided with the distribution. 1598524Sfenner * 1698524Sfenner * 3. Neither the name of Cisco nor of Motorola may be used 1798524Sfenner * to endorse or promote products derived from this software without 1898524Sfenner * specific prior written permission. 1998524Sfenner * 2098524Sfenner * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 2198524Sfenner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2298524Sfenner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2398524Sfenner * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 2498524Sfenner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2598524Sfenner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2698524Sfenner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2798524Sfenner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2898524Sfenner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2998524Sfenner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3098524Sfenner * SUCH DAMAGE. 3198524Sfenner * 3298524Sfenner * This file is part of the SCTP reference Implementation 3398524Sfenner * 34127668Sbms * 3598524Sfenner * Please send any bug reports or fixes you make to one of the following email 3698524Sfenner * addresses: 37127668Sbms * 3898524Sfenner * rstewar1@email.mot.com 3998524Sfenner * kmorneau@cisco.com 4098524Sfenner * qxie1@email.mot.com 41127668Sbms * 4298524Sfenner * Any bugs reported given to us we will try to fix... any fixes shared will 4398524Sfenner * be incorperated into the next SCTP release. 4498524Sfenner */ 4598524Sfenner 4698524Sfenner 4798524Sfenner#ifndef __sctpConstants_h__ 4898524Sfenner#define __sctpConstants_h__ 4998524Sfenner 5098524Sfenner 5198524Sfenner /* If you wish to use MD5 instead of SLA uncomment the line 5298524Sfenner * below. Why you would like to do this: 5398524Sfenner * a) There may be IPR on SHA-1, or so the FIP-180-1 page says, 5498524Sfenner * b) MD5 is 3 times faster (has coded here). 5598524Sfenner * 5698524Sfenner * The disadvantage is, it is thought that MD5 has been 5798524Sfenner * cracked... see RFC2104. 5898524Sfenner */ 5998524Sfenner/*#define USE_MD5 1*/ 6098524Sfenner 61127668Sbms/* the SCTP protocol signature 6298524Sfenner * this includes the version number 6398524Sfenner * encoded in the last 4 bits of the 6498524Sfenner * signature. 6598524Sfenner */ 6698524Sfenner#define PROTO_SIGNATURE_A 0x30000000 6798524Sfenner 6898524Sfenner#define SCTP_VERSION_NUMBER 0x3 6998524Sfenner 7098524Sfenner#define MAX_TSN 0xffffffff 7198524Sfenner#define MAX_SEQ 0xffff 7298524Sfenner 7398524Sfenner/* option: 7498524Sfenner * If you comment out the following you will 7598524Sfenner * receive the old behavior of obeying cwnd for 7698524Sfenner * the fast retransmit algorithm. With this defined 7798524Sfenner * a FR happens right away with-out waiting for the 7898524Sfenner * flightsize to drop below the cwnd value (which 7998524Sfenner * is reduced by the FR to 1/2 the inflight packets). 8098524Sfenner */ 8198524Sfenner#define SCTP_IGNORE_CWND_ON_FR 1 8298524Sfenner/* default max I can burst out after a fast retransmit */ 8398524Sfenner#define SCTP_DEF_MAX_BURST 4 8498524Sfenner 85127668Sbms/* Packet transmit states in the sent 8698524Sfenner * field in the SCTP_transmitOnQueue struct 8798524Sfenner */ 8898524Sfenner#define SCTP_DATAGRAM_UNSENT 0 8998524Sfenner#define SCTP_DATAGRAM_SENT 1 9098524Sfenner#define SCTP_DATAGRAM_RESEND1 2 /* not used */ 9198524Sfenner#define SCTP_DATAGRAM_RESEND2 3 /* not used */ 9298524Sfenner#define SCTP_DATAGRAM_RESEND3 4 /* not used */ 9398524Sfenner#define SCTP_DATAGRAM_RESEND 5 9498524Sfenner#define SCTP_DATAGRAM_ACKED 10010 9598524Sfenner#define SCTP_DATAGRAM_INBOUND 10011 9698524Sfenner#define SCTP_READY_TO_TRANSMIT 10012 9798524Sfenner#define SCTP_DATAGRAM_MARKED 20010 9898524Sfenner 9998524Sfenner#define MAX_FSID 64 /* debug 5 ints used for cc dynamic tracking */ 10098524Sfenner 10198524Sfenner/* The valid defines for all message 10298524Sfenner * types know to SCTP. 0 is reserved 10398524Sfenner */ 10498524Sfenner#define SCTP_MSGTYPE_MASK 0xff 10598524Sfenner 10698524Sfenner#define SCTP_DATA 0x00 10798524Sfenner#define SCTP_INITIATION 0x01 10898524Sfenner#define SCTP_INITIATION_ACK 0x02 109127668Sbms#define SCTP_SELECTIVE_ACK 0x03 110127668Sbms#define SCTP_HEARTBEAT_REQUEST 0x04 11198524Sfenner#define SCTP_HEARTBEAT_ACK 0x05 11298524Sfenner#define SCTP_ABORT_ASSOCIATION 0x06 11398524Sfenner#define SCTP_SHUTDOWN 0x07 11498524Sfenner#define SCTP_SHUTDOWN_ACK 0x08 11598524Sfenner#define SCTP_OPERATION_ERR 0x09 11698524Sfenner#define SCTP_COOKIE_ECHO 0x0a 11798524Sfenner#define SCTP_COOKIE_ACK 0x0b 11898524Sfenner#define SCTP_ECN_ECHO 0x0c 11998524Sfenner#define SCTP_ECN_CWR 0x0d 12098524Sfenner#define SCTP_SHUTDOWN_COMPLETE 0x0e 12198524Sfenner#define SCTP_FORWARD_CUM_TSN 0xc0 12298524Sfenner#define SCTP_RELIABLE_CNTL 0xc1 12398524Sfenner#define SCTP_RELIABLE_CNTL_ACK 0xc2 12498524Sfenner 12598524Sfenner/* ABORT and SHUTDOWN COMPLETE FLAG */ 12698524Sfenner#define SCTP_HAD_NO_TCB 0x01 12798524Sfenner 12898524Sfenner/* Data Chuck Specific Flags */ 12998524Sfenner#define SCTP_DATA_FRAG_MASK 0x03 13098524Sfenner#define SCTP_DATA_MIDDLE_FRAG 0x00 13198524Sfenner#define SCTP_DATA_LAST_FRAG 0x01 13298524Sfenner#define SCTP_DATA_FIRST_FRAG 0x02 13398524Sfenner#define SCTP_DATA_NOT_FRAG 0x03 13498524Sfenner#define SCTP_DATA_UNORDERED 0x04 13598524Sfenner 13698524Sfenner#define SCTP_CRC_ENABLE_BIT 0x01 /* lower bit of reserved */ 13798524Sfenner 13898524Sfenner#define isSCTPControl(a) (a->chunkID != SCTP_DATA) 13998524Sfenner#define isSCTPData(a) (a->chunkID == SCTP_DATA) 14098524Sfenner 14198524Sfenner/* sctp parameter types for init/init-ack */ 14298524Sfenner 14398524Sfenner#define SCTP_IPV4_PARAM_TYPE 0x0005 14498524Sfenner#define SCTP_IPV6_PARAM_TYPE 0x0006 14598524Sfenner#define SCTP_RESPONDER_COOKIE 0x0007 14698524Sfenner#define SCTP_UNRECOG_PARAM 0x0008 14798524Sfenner#define SCTP_COOKIE_PRESERVE 0x0009 14898524Sfenner#define SCTP_HOSTNAME_VIA_DNS 0x000b 14998524Sfenner#define SCTP_RESTRICT_ADDR_TO 0x000c 15098524Sfenner 15198524Sfenner#define SCTP_ECN_I_CAN_DO_ECN 0x8000 15298524Sfenner#define SCTP_OPERATION_SUCCEED 0x4001 15398524Sfenner#define SCTP_ERROR_NOT_EXECUTED 0x4002 15498524Sfenner 15598524Sfenner#define SCTP_UNRELIABLE_STRM 0xc000 15698524Sfenner#define SCTP_ADD_IP_ADDRESS 0xc001 15798524Sfenner#define SCTP_DEL_IP_ADDRESS 0xc002 15898524Sfenner#define SCTP_STRM_FLOW_LIMIT 0xc003 15998524Sfenner#define SCTP_PARTIAL_CSUM 0xc004 16098524Sfenner#define SCTP_ERROR_CAUSE_TLV 0xc005 16198524Sfenner#define SCTP_MIT_STACK_NAME 0xc006 16298524Sfenner#define SCTP_SETADDRESS_PRIMARY 0xc007 16398524Sfenner 16498524Sfenner/* bits for TOS field */ 16598524Sfenner#define SCTP_ECT_BIT 0x02 16698524Sfenner#define SCTP_CE_BIT 0x01 16798524Sfenner 16898524Sfenner/* error codes */ 16998524Sfenner#define SCTP_OP_ERROR_NO_ERROR 0x0000 17098524Sfenner#define SCTP_OP_ERROR_INV_STRM 0x0001 17198524Sfenner#define SCTP_OP_ERROR_MISS_PARAM 0x0002 17298524Sfenner#define SCTP_OP_ERROR_STALE_COOKIE 0x0003 17398524Sfenner#define SCTP_OP_ERROR_NO_RESOURCE 0x0004 17498524Sfenner#define SCTP_OP_ERROR_DNS_FAILED 0x0005 17598524Sfenner#define SCTP_OP_ERROR_UNK_CHUNK 0x0006 17698524Sfenner#define SCTP_OP_ERROR_INV_PARAM 0x0007 17798524Sfenner#define SCTP_OP_ERROR_UNK_PARAM 0x0008 17898524Sfenner#define SCTP_OP_ERROR_NO_USERD 0x0009 17998524Sfenner#define SCTP_OP_ERROR_COOKIE_SHUT 0x000a 18098524Sfenner#define SCTP_OP_ERROR_DELETE_LAST 0x000b 18198524Sfenner#define SCTP_OP_ERROR_RESOURCE_SHORT 0x000c 18298524Sfenner 18398524Sfenner#define SCTP_MAX_ERROR_CAUSE 12 18498524Sfenner 18598524Sfenner/* empty error causes i.e. nothing but the cause 18698524Sfenner * are SCTP_OP_ERROR_NO_RESOURCE, SCTP_OP_ERROR_INV_PARAM, 18798524Sfenner * SCTP_OP_ERROR_COOKIE_SHUT. 18898524Sfenner */ 18998524Sfenner 19098524Sfenner/* parameter for Heart Beat */ 19198524Sfenner#define HEART_BEAT_PARAM 0x0001 19298524Sfenner 19398524Sfenner 19498524Sfenner 19598524Sfenner/* send options for SCTP 19698524Sfenner */ 19798524Sfenner#define SCTP_ORDERED_DELIVERY 0x01 19898524Sfenner#define SCTP_NON_ORDERED_DELIVERY 0x02 19998524Sfenner#define SCTP_DO_CRC16 0x08 20098524Sfenner#define SCTP_MY_ADDRESS_ONLY 0x10 20198524Sfenner 20298524Sfenner/* below turns off above */ 20398524Sfenner#define SCTP_FLEXIBLE_ADDRESS 0x20 20498524Sfenner#define SCTP_NO_HEARTBEAT 0x40 20598524Sfenner 20698524Sfenner/* mask to get sticky */ 20798524Sfenner#define SCTP_STICKY_OPTIONS_MASK 0x0c 20898524Sfenner 20998524Sfenner/* MTU discovery flags */ 21098524Sfenner#define SCTP_DONT_FRAGMENT 0x0100 21198524Sfenner#define SCTP_FRAGMENT_OK 0x0200 21298524Sfenner 21398524Sfenner 21498524Sfenner/* SCTP state defines for internal state machine */ 21598524Sfenner#define SCTP_STATE_EMPTY 0x0000 21698524Sfenner#define SCTP_STATE_INUSE 0x0001 21798524Sfenner#define SCTP_STATE_COOKIE_WAIT 0x0002 21898524Sfenner#define SCTP_STATE_COOKIE_SENT 0x0004 21998524Sfenner#define SCTP_STATE_OPEN 0x0008 22098524Sfenner#define SCTP_STATE_SHUTDOWN 0x0010 22198524Sfenner#define SCTP_STATE_SHUTDOWN_RECV 0x0020 22298524Sfenner#define SCTP_STATE_SHUTDOWN_ACK_SENT 0x0040 22398524Sfenner#define SCTP_STATE_SHUTDOWN_PEND 0x0080 22498524Sfenner#define SCTP_STATE_MASK 0x007f 22598524Sfenner/* SCTP reachability state for each address */ 22698524Sfenner#define SCTP_ADDR_NOT_REACHABLE 1 22798524Sfenner#define SCTP_ADDR_REACHABLE 2 22898524Sfenner#define SCTP_ADDR_NOHB 4 22998524Sfenner#define SCTP_ADDR_BEING_DELETED 8 23098524Sfenner 23198524Sfenner/* How long a cookie lives */ 23298524Sfenner#define SCTP_DEFAULT_COOKIE_LIFE 60 /* seconds */ 23398524Sfenner 23498524Sfenner/* resource limit of streams */ 23598524Sfenner#define MAX_SCTP_STREAMS 2048 23698524Sfenner 23798524Sfenner 23898524Sfenner/* guess at how big to make the TSN mapping array */ 23998524Sfenner#define SCTP_STARTING_MAPARRAY 10000 24098524Sfenner 24198524Sfenner/* Here we define the timer types used 242127668Sbms * by the implementation has 24398524Sfenner * arguments in the set/get timer type calls. 24498524Sfenner */ 24598524Sfenner#define SCTP_TIMER_INIT 0 24698524Sfenner#define SCTP_TIMER_RECV 1 24798524Sfenner#define SCTP_TIMER_SEND 2 24898524Sfenner#define SCTP_TIMER_SHUTDOWN 3 24998524Sfenner#define SCTP_TIMER_HEARTBEAT 4 25098524Sfenner#define SCTP_TIMER_PMTU 5 251127668Sbms/* number of timer types in the base SCTP 25298524Sfenner * structure used in the set/get and has 25398524Sfenner * the base default. 25498524Sfenner */ 25598524Sfenner#define SCTP_NUM_TMRS 6 25698524Sfenner 25798524Sfenner 25898524Sfenner 25998524Sfenner#define SCTP_IPV4_ADDRESS 2 26098524Sfenner#define SCTP_IPV6_ADDRESS 4 26198524Sfenner 26298524Sfenner/* timer types */ 26398524Sfenner#define SctpTimerTypeNone 0 26498524Sfenner#define SctpTimerTypeSend 1 26598524Sfenner#define SctpTimerTypeInit 2 26698524Sfenner#define SctpTimerTypeRecv 3 26798524Sfenner#define SctpTimerTypeShutdown 4 26898524Sfenner#define SctpTimerTypeHeartbeat 5 26998524Sfenner#define SctpTimerTypeCookie 6 27098524Sfenner#define SctpTimerTypeNewCookie 7 27198524Sfenner#define SctpTimerTypePathMtuRaise 8 27298524Sfenner#define SctpTimerTypeShutdownAck 9 27398524Sfenner#define SctpTimerTypeRelReq 10 27498524Sfenner 27598524Sfenner/* Here are the timer directives given to the 27698524Sfenner * user provided function 27798524Sfenner */ 27898524Sfenner#define SCTP_TIMER_START 1 27998524Sfenner#define SCTP_TIMER_STOP 2 28098524Sfenner 28198524Sfenner/* running flag states in timer structure */ 28298524Sfenner#define SCTP_TIMER_IDLE 0x0 28398524Sfenner#define SCTP_TIMER_EXPIRED 0x1 28498524Sfenner#define SCTP_TIMER_RUNNING 0x2 28598524Sfenner 28698524Sfenner 28798524Sfenner/* number of simultaneous timers running */ 28898524Sfenner#define SCTP_MAX_NET_TIMERS 6 /* base of where net timers start */ 28998524Sfenner#define SCTP_NUMBER_TIMERS 12 /* allows up to 6 destinations */ 29098524Sfenner 29198524Sfenner 29298524Sfenner/* Of course we really don't collect stale cookies, being 29398524Sfenner * folks of decerning taste. However we do count them, if 29498524Sfenner * we get to many before the association comes up.. we 29598524Sfenner * give up. Below is the constant that dictates when 29698524Sfenner * we give it up...this is a implemenation dependant 29798524Sfenner * treatment. In ours we do not ask for a extension of 29898524Sfenner * time, but just retry this many times... 29998524Sfenner */ 30098524Sfenner#define SCTP_MAX_STALE_COOKIES_I_COLLECT 10 30198524Sfenner 30298524Sfenner/* max number of TSN's dup'd that I will hold */ 30398524Sfenner#define SCTP_MAX_DUP_TSNS 20 30498524Sfenner 30598524Sfenner/* Here we define the types used when 30698524Sfenner * setting the retry ammounts. 30798524Sfenner */ 30898524Sfenner/* constants for type of set */ 30998524Sfenner#define SCTP_MAXATTEMPT_INIT 2 31098524Sfenner#define SCTP_MAXATTEMPT_SEND 3 31198524Sfenner 31298524Sfenner/* Here we define the default timers and the 31398524Sfenner * default number of attemts we make for 31498524Sfenner * each respective side (send/init). 31598524Sfenner */ 31698524Sfenner 31798524Sfenner/* init timer def = 3sec */ 31898524Sfenner#define SCTP_INIT_SEC 3 31998524Sfenner#define SCTP_INIT_NSEC 0 32098524Sfenner 32198524Sfenner/* send timer def = 3 seconds */ 32298524Sfenner#define SCTP_SEND_SEC 1 32398524Sfenner#define SCTP_SEND_NSEC 0 32498524Sfenner 32598524Sfenner/* recv timer def = 200ms (in nsec) */ 32698524Sfenner#define SCTP_RECV_SEC 0 32798524Sfenner#define SCTP_RECV_NSEC 200000000 32898524Sfenner 32998524Sfenner/* 30 seconds + RTO */ 33098524Sfenner#define SCTP_HB_SEC 30 33198524Sfenner#define SCTP_HB_NSEC 0 33298524Sfenner 33398524Sfenner 33498524Sfenner/* 300 ms */ 33598524Sfenner#define SCTP_SHUTDOWN_SEC 0 33698524Sfenner#define SCTP_SHUTDOWN_NSEC 300000000 33798524Sfenner 33898524Sfenner#define SCTP_RTO_UPPER_BOUND 60000000 /* 60 sec in micro-second's */ 33998524Sfenner#define SCTP_RTO_UPPER_BOUND_SEC 60 /* for the init timer */ 34098524Sfenner#define SCTP_RTO_LOWER_BOUND 1000000 /* 1 sec in micro-sec's */ 34198524Sfenner 34298524Sfenner#define SCTP_DEF_MAX_INIT 8 34398524Sfenner#define SCTP_DEF_MAX_SEND 10 34498524Sfenner 34598524Sfenner#define SCTP_DEF_PMTU_RAISE 600 /* 10 Minutes between raise attempts */ 34698524Sfenner#define SCTP_DEF_PMTU_MIN 600 34798524Sfenner 34898524Sfenner#define SCTP_MSEC_IN_A_SEC 1000 34998524Sfenner#define SCTP_USEC_IN_A_SEC 1000000 35098524Sfenner#define SCTP_NSEC_IN_A_SEC 1000000000 35198524Sfenner 35298524Sfenner 35398524Sfenner/* Events that SCTP will look for, these 35498524Sfenner * are or'd together to declare what SCTP 355127668Sbms * wants. Each select mask/poll list should be 35698524Sfenner * set for the fd, if the bit is on. 35798524Sfenner */ 35898524Sfenner#define SCTP_EVENT_READ 0x000001 35998524Sfenner#define SCTP_EVENT_WRITE 0x000002 36098524Sfenner#define SCTP_EVENT_EXCEPT 0x000004 36198524Sfenner 36298524Sfenner/* The following constant is a value for this 36398524Sfenner * particular implemenation. It is quite arbitrary and 364127668Sbms * is used to limit how much data will be queued up to 36598524Sfenner * a sender, waiting for cwnd to be larger than flightSize. 36698524Sfenner * All implementations will need this protection is some 36798524Sfenner * way due to buffer size constraints. 36898524Sfenner */ 36998524Sfenner 37098524Sfenner#define SCTP_MAX_OUTSTANDING_DG 10000 37198524Sfenner 37298524Sfenner 37398524Sfenner 374127668Sbms/* This constant (SCTP_MAX_READBUFFER) define 37598524Sfenner * how big the read/write buffer is 376127668Sbms * when we enter the fd event notification 37798524Sfenner * the buffer is put on the stack, so the bigger 37898524Sfenner * it is the more stack you chew up, however it 37998524Sfenner * has got to be big enough to handle the bigest 38098524Sfenner * message this O/S will send you. In solaris 38198524Sfenner * with sockets (not TLI) we end up at a value 38298524Sfenner * of 64k. In TLI we could do partial reads to 38398524Sfenner * get it all in with less hassel.. but we 38498524Sfenner * write to sockets for generality. 38598524Sfenner */ 38698524Sfenner#define SCTP_MAX_READBUFFER 65536 38798524Sfenner#define SCTP_ADDRMAX 60 38898524Sfenner 38998524Sfenner/* amount peer is obligated to have in rwnd or 39098524Sfenner * I will abort 39198524Sfenner */ 39298524Sfenner#define SCTP_MIN_RWND 1500 39398524Sfenner 39498524Sfenner#define SCTP_WINDOW_MIN 1500 /* smallest rwnd can be */ 395127668Sbms#define SCTP_WINDOW_MAX 1048576 /* biggest I can grow rwnd to 39698524Sfenner * My playing around suggests a 39798524Sfenner * value greater than 64k does not 39898524Sfenner * do much, I guess via the kernel 39998524Sfenner * limitations on the stream/socket. 40098524Sfenner */ 40198524Sfenner 40298524Sfenner#define SCTP_MAX_BUNDLE_UP 256 /* max number of chunks I can bundle */ 40398524Sfenner 40498524Sfenner/* I can handle a 1meg re-assembly */ 40598524Sfenner#define SCTP_DEFAULT_MAXMSGREASM 1048576 40698524Sfenner 40798524Sfenner 40898524Sfenner#define SCTP_DEFAULT_MAXWINDOW 32768 /* default rwnd size */ 40998524Sfenner#define SCTP_DEFAULT_MAXSEGMENT 1500 /* MTU size, this is the default 41098524Sfenner * to which we set the smallestMTU 41198524Sfenner * size to. This governs what is the 41298524Sfenner * largest size we will use, of course 41398524Sfenner * PMTU will raise this up to 414127668Sbms * the largest interface MTU or the 41598524Sfenner * ceiling below if there is no 41698524Sfenner * SIOCGIFMTU. 41798524Sfenner */ 41898524Sfenner#ifdef LYNX 41998524Sfenner#define DEFAULT_MTU_CEILING 1500 /* Since Lynx O/S is brain dead 42098524Sfenner * in the way it handles the 42198524Sfenner * raw IP socket, insisting 42298524Sfenner * on makeing its own IP 42398524Sfenner * header, we limit the growth 42498524Sfenner * to that of the e-net size 42598524Sfenner */ 42698524Sfenner#else 42798524Sfenner#define DEFAULT_MTU_CEILING 2048 /* If no SIOCGIFMTU, highest value 42898524Sfenner * to raise the PMTU to, i.e. 42998524Sfenner * don't try to raise above this 43098524Sfenner * value. Tune this per your 43198524Sfenner * largest MTU interface if your 43298524Sfenner * system does not support the 43398524Sfenner * SIOCGIFMTU ioctl. 43498524Sfenner */ 43598524Sfenner#endif 43698524Sfenner#define SCTP_DEFAULT_MINSEGMENT 512 /* MTU size ... if no mtu disc */ 43798524Sfenner#define SCTP_HOW_MANY_SECRETS 2 /* how many secrets I keep */ 43898524Sfenner/* This is how long a secret lives, NOT how long a cookie lives */ 43998524Sfenner#define SCTP_HOW_LONG_COOKIE_LIVE 3600 /* how many seconds the current secret will live */ 44098524Sfenner 44198524Sfenner#define SCTP_NUMBER_OF_SECRETS 8 /* or 8 * 4 = 32 octets */ 44298524Sfenner#define SCTP_SECRET_SIZE 32 /* number of octets in a 256 bits */ 44398524Sfenner 44498524Sfenner#ifdef USE_MD5 44598524Sfenner#define SCTP_SIGNATURE_SIZE 16 /* size of a MD5 signature */ 44698524Sfenner#else 44798524Sfenner#define SCTP_SIGNATURE_SIZE 20 /* size of a SLA-1 signature */ 44898524Sfenner#endif 44998524Sfenner/* Here are the notification constants 45098524Sfenner * that the code and upper layer will get 45198524Sfenner */ 45298524Sfenner 45398524Sfenner/* association is up */ 45498524Sfenner#define SCTP_NOTIFY_ASSOC_UP 1 45598524Sfenner 45698524Sfenner/* association is down */ 45798524Sfenner#define SCTP_NOTIFY_ASSOC_DOWN 2 45898524Sfenner 45998524Sfenner/* interface on a association is down 46098524Sfenner * and out of consideration for selection. 46198524Sfenner */ 46298524Sfenner#define SCTP_NOTIFY_INTF_DOWN 3 46398524Sfenner 46498524Sfenner/* interface on a association is up 46598524Sfenner * and now back in consideration for selection. 46698524Sfenner */ 46798524Sfenner#define SCTP_NOTIFY_INTF_UP 4 46898524Sfenner 46998524Sfenner/* The given datagram cannot be delivered 47098524Sfenner * to the peer, this will probably be followed 47198524Sfenner * by a SCTP_NOTFIY_ASSOC_DOWN. 47298524Sfenner */ 47398524Sfenner#define SCTP_NOTIFY_DG_FAIL 5 47498524Sfenner 47598524Sfenner/* Sent dg on non-open stream extreme code error! 47698524Sfenner */ 47798524Sfenner#define SCTP_NOTIFY_STRDATA_ERR 6 47898524Sfenner 47998524Sfenner#define SCTP_NOTIFY_ASSOC_ABORTED 7 48098524Sfenner 48198524Sfenner/* The stream ones are not used yet, but could 48298524Sfenner * be when a association opens. 48398524Sfenner */ 48498524Sfenner#define SCTP_NOTIFY_PEER_OPENED_STR 8 48598524Sfenner#define SCTP_NOTIFY_STREAM_OPENED_OK 9 48698524Sfenner 48798524Sfenner/* association sees a restart event */ 48898524Sfenner#define SCTP_NOTIFY_ASSOC_RESTART 10 48998524Sfenner 49098524Sfenner/* a user requested HB returned */ 49198524Sfenner#define SCTP_NOTIFY_HB_RESP 11 49298524Sfenner 49398524Sfenner/* a result from a REL-REQ */ 49498524Sfenner#define SCTP_NOTIFY_RELREQ_RESULT_OK 12 49598524Sfenner#define SCTP_NOTIFY_RELREQ_RESULT_FAILED 13 49698524Sfenner 49798524Sfenner/* clock variance is 10ms or 10,000 us's */ 49898524Sfenner#define SCTP_CLOCK_GRAINULARITY 10000 49998524Sfenner 50098524Sfenner#define IP_HDR_SIZE 40 /* we use the size of a IP6 header here 50198524Sfenner * this detracts a small amount for ipv4 50298524Sfenner * but it simplifies the ipv6 addition 50398524Sfenner */ 50498524Sfenner 50598524Sfenner#define SCTP_NUM_FDS 3 50698524Sfenner 50798524Sfenner/* raw IP filedescriptor */ 50898524Sfenner#define SCTP_FD_IP 0 50998524Sfenner/* raw ICMP filedescriptor */ 51098524Sfenner#define SCTP_FD_ICMP 1 51198524Sfenner/* processes contact me for requests here */ 51298524Sfenner#define SCTP_REQUEST 2 51398524Sfenner 51498524Sfenner 51598524Sfenner#define SCTP_DEAMON_PORT 9899 51698524Sfenner 51798524Sfenner/* Deamon registration message types/responses */ 51898524Sfenner#define DEAMON_REGISTER 0x01 51998524Sfenner#define DEAMON_REGISTER_ACK 0x02 52098524Sfenner#define DEAMON_DEREGISTER 0x03 52198524Sfenner#define DEAMON_DEREGISTER_ACK 0x04 52298524Sfenner#define DEAMON_CHECKADDR_LIST 0x05 52398524Sfenner 52498524Sfenner#define DEAMON_MAGIC_VER_LEN 0xff 52598524Sfenner 52698524Sfenner/* max times I will attempt to send a message to deamon */ 52798524Sfenner#define SCTP_MAX_ATTEMPTS_AT_DEAMON 5 52898524Sfenner#define SCTP_TIMEOUT_IN_POLL_FOR_DEAMON 1500 /* 1.5 seconds */ 52998524Sfenner 53098524Sfenner/* modular comparison */ 53198524Sfenner/* True if a > b (mod = M) */ 53298524Sfenner#define compare_with_wrap(a, b, M) ((a > b) && ((a - b) < (M >> 1))) || \ 53398524Sfenner ((b > a) && ((b - a) > (M >> 1))) 53498524Sfenner 53598524Sfenner#ifndef TIMEVAL_TO_TIMESPEC 53698524Sfenner#define TIMEVAL_TO_TIMESPEC(tv, ts) \ 53798524Sfenner{ \ 53898524Sfenner (ts)->tv_sec = (tv)->tv_sec; \ 53998524Sfenner (ts)->tv_nsec = (tv)->tv_usec * 1000; \ 540127668Sbms} 54198524Sfenner#endif 54298524Sfenner 54398524Sfenner/* pegs */ 54498524Sfenner#define SCTP_NUMBER_OF_PEGS 21 54598524Sfenner/* peg index's */ 54698524Sfenner#define SCTP_PEG_SACKS_SEEN 0 54798524Sfenner#define SCTP_PEG_SACKS_SENT 1 54898524Sfenner#define SCTP_PEG_TSNS_SENT 2 54998524Sfenner#define SCTP_PEG_TSNS_RCVD 3 55098524Sfenner#define SCTP_DATAGRAMS_SENT 4 55198524Sfenner#define SCTP_DATAGRAMS_RCVD 5 55298524Sfenner#define SCTP_RETRANTSN_SENT 6 55398524Sfenner#define SCTP_DUPTSN_RECVD 7 55498524Sfenner#define SCTP_HBR_RECV 8 55598524Sfenner#define SCTP_HBA_RECV 9 55698524Sfenner#define SCTP_HB_SENT 10 55798524Sfenner#define SCTP_DATA_DG_SENT 11 55898524Sfenner#define SCTP_DATA_DG_RECV 12 55998524Sfenner#define SCTP_TMIT_TIMER 13 56098524Sfenner#define SCTP_RECV_TIMER 14 56198524Sfenner#define SCTP_HB_TIMER 15 56298524Sfenner#define SCTP_FAST_RETRAN 16 56398524Sfenner#define SCTP_PEG_TSNS_READ 17 56498524Sfenner#define SCTP_NONE_LFT_TO 18 56598524Sfenner#define SCTP_NONE_LFT_RWND 19 56698524Sfenner#define SCTP_NONE_LFT_CWND 20 56798524Sfenner 56898524Sfenner 56998524Sfenner 57098524Sfenner#endif 57198524Sfenner 572