TCPCT part 1b: generate Responder Cookie secret
[firefly-linux-kernel-4.4.55.git] / include / net / tcp.h
index 56b76027b85eeb4c7e4de930750e9584f6326489..4a99a8e391212b98572500ea03658a3635e3acef 100644 (file)
@@ -62,9 +62,6 @@ extern void tcp_time_wait(struct sock *sk, int state, int timeo);
 /* Minimal accepted MSS. It is (60+60+8) - (20+20). */
 #define TCP_MIN_MSS            88U
 
-/* Minimal RCV_MSS. */
-#define TCP_MIN_RCVMSS         536U
-
 /* The least MTU to use for probing */
 #define TCP_BASE_MSS           512
 
@@ -359,8 +356,7 @@ TCP_ECN_create_request(struct request_sock *req, struct tcphdr *th)
                inet_rsk(req)->ecn_ok = 1;
 }
 
-enum tcp_tw_status
-{
+enum tcp_tw_status {
        TCP_TW_SUCCESS = 0,
        TCP_TW_RST = 1,
        TCP_TW_ACK = 2,
@@ -394,13 +390,13 @@ extern int                        tcp_getsockopt(struct sock *sk, int level,
                                               int __user *optlen);
 extern int                     tcp_setsockopt(struct sock *sk, int level, 
                                               int optname, char __user *optval, 
-                                              int optlen);
+                                              unsigned int optlen);
 extern int                     compat_tcp_getsockopt(struct sock *sk,
                                        int level, int optname,
                                        char __user *optval, int __user *optlen);
 extern int                     compat_tcp_setsockopt(struct sock *sk,
                                        int level, int optname,
-                                       char __user *optval, int optlen);
+                                       char __user *optval, unsigned int optlen);
 extern void                    tcp_set_keepalive(struct sock *sk, int val);
 extern int                     tcp_recvmsg(struct kiocb *iocb, struct sock *sk,
                                            struct msghdr *msg,
@@ -409,7 +405,8 @@ extern int                  tcp_recvmsg(struct kiocb *iocb, struct sock *sk,
 
 extern void                    tcp_parse_options(struct sk_buff *skb,
                                                  struct tcp_options_received *opt_rx,
-                                                 int estab);
+                                                 int estab,
+                                                 struct dst_entry *dst);
 
 extern u8                      *tcp_parse_md5sig_option(struct tcphdr *th);
 
@@ -443,7 +440,8 @@ extern int                  tcp_connect(struct sock *sk);
 
 extern struct sk_buff *                tcp_make_synack(struct sock *sk,
                                                struct dst_entry *dst,
-                                               struct request_sock *req);
+                                               struct request_sock *req,
+                                               struct request_values *rvp);
 
 extern int                     tcp_disconnect(struct sock *sk, int flags);
 
@@ -1480,6 +1478,14 @@ struct tcp_request_sock_ops {
 #endif
 };
 
+/* Using SHA1 for now, define some constants.
+ */
+#define COOKIE_DIGEST_WORDS (SHA_DIGEST_WORDS)
+#define COOKIE_MESSAGE_WORDS (SHA_MESSAGE_BYTES / 4)
+#define COOKIE_WORKSPACE_WORDS (COOKIE_DIGEST_WORDS + COOKIE_MESSAGE_WORDS)
+
+extern int tcp_cookie_generator(u32 *bakery);
+
 extern void tcp_v4_init(void);
 extern void tcp_init(void);