syncookies.c (9b09342f5cfa5b4b3447de17de284111bfdeab26) syncookies.c (ceef9ab6be7234f9e49f79769e0da88d1dccfcc7)
1/*
2 * Syncookies implementation for the Linux kernel
3 *
4 * Copyright (C) 1997 Andi Kleen
5 * Based on ideas by D.J.Bernstein and Eric Schenk.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License

--- 371 unchanged lines hidden (view full) ---

380 if (IS_ERR(rt)) {
381 reqsk_free(req);
382 goto out;
383 }
384
385 /* Try to redo what tcp_v4_send_synack did. */
386 req->rsk_window_clamp = tp->window_clamp ? :dst_metric(&rt->dst, RTAX_WINDOW);
387
1/*
2 * Syncookies implementation for the Linux kernel
3 *
4 * Copyright (C) 1997 Andi Kleen
5 * Based on ideas by D.J.Bernstein and Eric Schenk.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License

--- 371 unchanged lines hidden (view full) ---

380 if (IS_ERR(rt)) {
381 reqsk_free(req);
382 goto out;
383 }
384
385 /* Try to redo what tcp_v4_send_synack did. */
386 req->rsk_window_clamp = tp->window_clamp ? :dst_metric(&rt->dst, RTAX_WINDOW);
387
388 tcp_select_initial_window(tcp_full_space(sk), req->mss,
388 tcp_select_initial_window(sk, tcp_full_space(sk), req->mss,
389 &req->rsk_rcv_wnd, &req->rsk_window_clamp,
390 ireq->wscale_ok, &rcv_wscale,
391 dst_metric(&rt->dst, RTAX_INITRWND));
392
393 ireq->rcv_wscale = rcv_wscale;
394 ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), &rt->dst);
395
396 ret = tcp_get_cookie_sock(sk, skb, req, &rt->dst, tsoff);
397 /* ip_queue_xmit() depends on our flow being setup
398 * Normal sockets get it right from inet_csk_route_child_sock()
399 */
400 if (ret)
401 inet_sk(ret)->cork.fl.u.ip4 = fl4;
402out: return ret;
403}
389 &req->rsk_rcv_wnd, &req->rsk_window_clamp,
390 ireq->wscale_ok, &rcv_wscale,
391 dst_metric(&rt->dst, RTAX_INITRWND));
392
393 ireq->rcv_wscale = rcv_wscale;
394 ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), &rt->dst);
395
396 ret = tcp_get_cookie_sock(sk, skb, req, &rt->dst, tsoff);
397 /* ip_queue_xmit() depends on our flow being setup
398 * Normal sockets get it right from inet_csk_route_child_sock()
399 */
400 if (ret)
401 inet_sk(ret)->cork.fl.u.ip4 = fl4;
402out: return ret;
403}