]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/net/sctp/constants.h
Merge branches 'release', 'misc' and 'misc-2.6.25' into release
[linux-2.6-omap-h63xx.git] / include / net / sctp / constants.h
index 5999e5684bbfc5136f36964fb3ebe2c0e669f9b1..fefcba67bd1edc7b8c863472755afe95c925c8d2 100644 (file)
 #ifndef __sctp_constants_h__
 #define __sctp_constants_h__
 
-#include <linux/tcp.h>  /* For TCP states used in sctp_sock_state_t */
 #include <linux/sctp.h>
 #include <linux/ipv6.h> /* For ipv6hdr. */
 #include <net/sctp/user.h>
+#include <net/tcp_states.h>  /* For TCP states used in sctp_sock_state_t */
 
 /* Value used for stream negotiation. */
 enum { SCTP_MAX_STREAM = 0xffff };
@@ -64,12 +64,18 @@ enum { SCTP_DEFAULT_INSTREAMS = SCTP_MAX_STREAM };
 #define SCTP_CID_MAX                   SCTP_CID_ASCONF_ACK
 
 #define SCTP_NUM_BASE_CHUNK_TYPES      (SCTP_CID_BASE_MAX + 1)
-#define SCTP_NUM_CHUNK_TYPES           (SCTP_NUM_BASE_CHUNKTYPES + 2)
 
 #define SCTP_NUM_ADDIP_CHUNK_TYPES     2
 
 #define SCTP_NUM_PRSCTP_CHUNK_TYPES    1
 
+#define SCTP_NUM_AUTH_CHUNK_TYPES      1
+
+#define SCTP_NUM_CHUNK_TYPES           (SCTP_NUM_BASE_CHUNK_TYPES + \
+                                        SCTP_NUM_ADDIP_CHUNK_TYPES +\
+                                        SCTP_NUM_PRSCTP_CHUNK_TYPES +\
+                                        SCTP_NUM_AUTH_CHUNK_TYPES)
+
 /* These are the different flavours of event.  */
 typedef enum {
 
@@ -177,7 +183,11 @@ typedef enum {
        SCTP_IERROR_NO_DATA,
        SCTP_IERROR_BAD_STREAM,
        SCTP_IERROR_BAD_PORTS,
-
+       SCTP_IERROR_AUTH_BAD_HMAC,
+       SCTP_IERROR_AUTH_BAD_KEYID,
+       SCTP_IERROR_PROTO_VIOLATION,
+       SCTP_IERROR_ERROR,
+       SCTP_IERROR_ABORT,
 } sctp_ierror_t;
 
 
@@ -264,10 +274,10 @@ enum { SCTP_MAX_DUP_TSNS = 16 };
 enum { SCTP_MAX_GABS = 16 };
 
 /* Heartbeat interval - 30 secs */
-#define SCTP_DEFAULT_TIMEOUT_HEARTBEAT (30 * HZ)
+#define SCTP_DEFAULT_TIMEOUT_HEARTBEAT (30*1000)
 
 /* Delayed sack timer - 200ms */
-#define SCTP_DEFAULT_TIMEOUT_SACK      ((200 * HZ) / 1000)
+#define SCTP_DEFAULT_TIMEOUT_SACK      (200)
 
 /* RTO.Initial              - 3  seconds
  * RTO.Min                  - 1  second
@@ -275,23 +285,22 @@ enum { SCTP_MAX_GABS = 16 };
  * RTO.Alpha                - 1/8
  * RTO.Beta                 - 1/4
  */
-#define SCTP_RTO_INITIAL       (3 * HZ)
-#define SCTP_RTO_MIN           (1 * HZ)
-#define SCTP_RTO_MAX           (60 * HZ)
+#define SCTP_RTO_INITIAL       (3 * 1000)
+#define SCTP_RTO_MIN           (1 * 1000)
+#define SCTP_RTO_MAX           (60 * 1000)
 
 #define SCTP_RTO_ALPHA          3   /* 1/8 when converted to right shifts. */
 #define SCTP_RTO_BETA           2   /* 1/4 when converted to right shifts. */
 
 /* Maximum number of new data packets that can be sent in a burst.  */
-#define SCTP_MAX_BURST         4
+#define SCTP_DEFAULT_MAX_BURST         4
 
 #define SCTP_CLOCK_GRANULARITY 1       /* 1 jiffy */
 
 #define SCTP_DEF_MAX_INIT 6
 #define SCTP_DEF_MAX_SEND 10
 
-#define SCTP_DEFAULT_COOKIE_LIFE_SEC   60 /* seconds */
-#define SCTP_DEFAULT_COOKIE_LIFE_USEC  0  /* microseconds */
+#define SCTP_DEFAULT_COOKIE_LIFE       (60 * 1000) /* 60 seconds */
 
 #define SCTP_DEFAULT_MINWINDOW 1500    /* default minimum rwnd size */
 #define SCTP_DEFAULT_MAXWINDOW 65535   /* default rwnd size */
@@ -312,9 +321,9 @@ enum { SCTP_MAX_GABS = 16 };
                                 */
 
 #if defined (CONFIG_SCTP_HMAC_MD5)
-#define SCTP_COOKIE_HMAC_ALG "md5"
+#define SCTP_COOKIE_HMAC_ALG "hmac(md5)"
 #elif defined (CONFIG_SCTP_HMAC_SHA1)
-#define SCTP_COOKIE_HMAC_ALG "sha1"
+#define SCTP_COOKIE_HMAC_ALG "hmac(sha1)"
 #else
 #define SCTP_COOKIE_HMAC_ALG NULL
 #endif
@@ -356,36 +365,12 @@ typedef enum {
  * Also, RFC 8.4, non-unicast addresses are not considered valid SCTP
  * addresses.
  */
-#define IS_IPV4_UNUSABLE_ADDRESS(a) \
-       ((INADDR_BROADCAST == *a) || \
-       (MULTICAST(*a)) || \
-       (((unsigned char *)(a))[0] == 0) || \
-       ((((unsigned char *)(a))[0] == 198) && \
-       (((unsigned char *)(a))[1] == 18) && \
-       (((unsigned char *)(a))[2] == 0)) || \
-       ((((unsigned char *)(a))[0] == 192) && \
-       (((unsigned char *)(a))[1] == 88) && \
-       (((unsigned char *)(a))[2] == 99)))
-
-/* IPv4 Link-local addresses: 169.254.0.0/16.  */
-#define IS_IPV4_LINK_ADDRESS(a) \
-       ((((unsigned char *)(a))[0] == 169) && \
-       (((unsigned char *)(a))[1] == 254))
-
-/* RFC 1918 "Address Allocation for Private Internets" defines the IPv4
- * private address space as the following:
- *
- * 10.0.0.0 - 10.255.255.255 (10/8 prefix)
- * 172.16.0.0.0 - 172.31.255.255 (172.16/12 prefix)
- * 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
- */
-#define IS_IPV4_PRIVATE_ADDRESS(a) \
-       ((((unsigned char *)(a))[0] == 10) || \
-       ((((unsigned char *)(a))[0] == 172) && \
-       (((unsigned char *)(a))[1] >= 16) && \
-       (((unsigned char *)(a))[1] < 32)) || \
-       ((((unsigned char *)(a))[0] == 192) && \
-       (((unsigned char *)(a))[1] == 168)))
+#define IS_IPV4_UNUSABLE_ADDRESS(a)        \
+       ((htonl(INADDR_BROADCAST) == a) ||  \
+        ipv4_is_multicast(a) ||            \
+        ipv4_is_zeronet(a) ||              \
+        ipv4_is_test_198(a) ||             \
+        ipv4_is_anycast_6to4(a))
 
 /* Flags used for the bind address copy functions.  */
 #define SCTP_ADDR6_ALLOWED     0x00000001      /* IPv6 address is allowed by
@@ -400,6 +385,7 @@ typedef enum {
        SCTP_RTXR_T3_RTX,
        SCTP_RTXR_FAST_RTX,
        SCTP_RTXR_PMTUD,
+       SCTP_RTXR_T1_RTX,
 } sctp_retransmit_reason_t;
 
 /* Reasons to lower cwnd. */
@@ -410,4 +396,48 @@ typedef enum {
        SCTP_LOWER_CWND_INACTIVE,
 } sctp_lower_cwnd_t;
 
+
+/* SCTP-AUTH Necessary constants */
+
+/* SCTP-AUTH, Section 3.3
+ *
+ *  The following Table 2 shows the currently defined values for HMAC
+ *  identifiers.
+ *
+ *  +-----------------+--------------------------+
+ *  | HMAC Identifier | Message Digest Algorithm |
+ *  +-----------------+--------------------------+
+ *  | 0               | Reserved                 |
+ *  | 1               | SHA-1 defined in [8]     |
+ *  | 2               | Reserved                 |
+ *  | 3               | SHA-256 defined in [8]   |
+ *  +-----------------+--------------------------+
+ */
+enum {
+       SCTP_AUTH_HMAC_ID_RESERVED_0,
+       SCTP_AUTH_HMAC_ID_SHA1,
+       SCTP_AUTH_HMAC_ID_RESERVED_2,
+#if defined (CONFIG_CRYPTO_SHA256) || defined (CONFIG_CRYPTO_SHA256_MODULE)
+       SCTP_AUTH_HMAC_ID_SHA256,
+#endif
+       __SCTP_AUTH_HMAC_MAX
+};
+
+#define SCTP_AUTH_HMAC_ID_MAX  __SCTP_AUTH_HMAC_MAX - 1
+#define SCTP_AUTH_NUM_HMACS    __SCTP_AUTH_HMAC_MAX
+#define SCTP_SHA1_SIG_SIZE 20
+#define SCTP_SHA256_SIG_SIZE 32
+
+/*  SCTP-AUTH, Section 3.2
+ *     The chunk types for INIT, INIT-ACK, SHUTDOWN-COMPLETE and AUTH chunks
+ *     MUST NOT be listed in the CHUNKS parameter
+ */
+#define SCTP_NUM_NOAUTH_CHUNKS 4
+#define SCTP_AUTH_MAX_CHUNKS   (SCTP_NUM_CHUNK_TYPES - SCTP_NUM_NOAUTH_CHUNKS)
+
+/* SCTP-AUTH Section 6.1
+ * The RANDOM parameter MUST contain a 32 byte random number.
+ */
+#define SCTP_AUTH_RANDOM_LENGTH 32
+
 #endif /* __sctp_constants_h__ */