parisc: convert /proc/pdc/{lcd,led} to seq_file
[safe/jmp/linux-2.6] / include / linux / tcp.h
index eaa3113..7fee8a4 100644 (file)
@@ -247,31 +247,38 @@ struct tcp_options_received {
                sack_ok : 4,    /* SACK seen on SYN packet              */
                snd_wscale : 4, /* Window scaling received from sender  */
                rcv_wscale : 4; /* Window scaling to send to receiver   */
-/*     SACKs data      */
+       u8      cookie_plus:6,  /* bytes in authenticator/cookie option */
+               cookie_out_never:1,
+               cookie_in_always:1;
        u8      num_sacks;      /* Number of SACK blocks                */
-       u16     user_mss;       /* mss requested by user in ioctl */
+       u16     user_mss;       /* mss requested by user in ioctl       */
        u16     mss_clamp;      /* Maximal mss, negotiated at connection setup */
 };
 
 static inline void tcp_clear_options(struct tcp_options_received *rx_opt)
 {
-       rx_opt->tstamp_ok = rx_opt->sack_ok = rx_opt->wscale_ok = rx_opt->snd_wscale = 0;
+       rx_opt->tstamp_ok = rx_opt->sack_ok = 0;
+       rx_opt->wscale_ok = rx_opt->snd_wscale = 0;
+       rx_opt->cookie_plus = 0;
 }
 
 /* This is the max number of SACKS that we'll generate and process. It's safe
- * to increse this, although since:
+ * to increase this, although since:
  *   size = TCPOLEN_SACK_BASE_ALIGNED (4) + n * TCPOLEN_SACK_PERBLOCK (8)
  * only four options will fit in a standard TCP header */
 #define TCP_NUM_SACKS 4
 
+struct tcp_cookie_values;
+struct tcp_request_sock_ops;
+
 struct tcp_request_sock {
        struct inet_request_sock        req;
 #ifdef CONFIG_TCP_MD5SIG
        /* Only used by TCP MD5 Signature so far. */
        const struct tcp_request_sock_ops *af_specific;
 #endif
-       u32                             rcv_isn;
-       u32                             snt_isn;
+       u32                             rcv_isn;
+       u32                             snt_isn;
 };
 
 static inline struct tcp_request_sock *tcp_rsk(const struct request_sock *req)
@@ -441,6 +448,12 @@ struct tcp_sock {
 /* TCP MD5 Signature Option information */
        struct tcp_md5sig_info  *md5sig_info;
 #endif
+
+       /* When the cookie options are generated and exchanged, then this
+        * object holds a reference to them (cookie_values->kref).  Also
+        * contains related tcp_cookie_transactions fields.
+        */
+       struct tcp_cookie_values  *cookie_values;
 };
 
 static inline struct tcp_sock *tcp_sk(const struct sock *sk)
@@ -459,6 +472,10 @@ struct tcp_timewait_sock {
        u16                       tw_md5_keylen;
        u8                        tw_md5_key[TCP_MD5SIG_MAXKEYLEN];
 #endif
+       /* Few sockets in timewait have cookies; in that case, then this
+        * object holds a reference to them (tw_cookie_values->kref).
+        */
+       struct tcp_cookie_values  *tw_cookie_values;
 };
 
 static inline struct tcp_timewait_sock *tcp_twsk(const struct sock *sk)