syncookies.c (95a0c7c2d6cfde3fb5fdb713428ed0df4d6bdd58) syncookies.c (ceef9ab6be7234f9e49f79769e0da88d1dccfcc7)
1/*
2 * IPv6 Syncookies implementation for the Linux kernel
3 *
4 * Authors:
5 * Glenn Griffin <ggriffin.kernel@gmail.com>
6 *
7 * Based on IPv4 implementation by Andi Kleen
8 * linux/net/ipv4/syncookies.c

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

239 security_req_classify_flow(req, flowi6_to_flowi(&fl6));
240
241 dst = ip6_dst_lookup_flow(sk, &fl6, final_p);
242 if (IS_ERR(dst))
243 goto out_free;
244 }
245
246 req->rsk_window_clamp = tp->window_clamp ? :dst_metric(dst, RTAX_WINDOW);
1/*
2 * IPv6 Syncookies implementation for the Linux kernel
3 *
4 * Authors:
5 * Glenn Griffin <ggriffin.kernel@gmail.com>
6 *
7 * Based on IPv4 implementation by Andi Kleen
8 * linux/net/ipv4/syncookies.c

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

239 security_req_classify_flow(req, flowi6_to_flowi(&fl6));
240
241 dst = ip6_dst_lookup_flow(sk, &fl6, final_p);
242 if (IS_ERR(dst))
243 goto out_free;
244 }
245
246 req->rsk_window_clamp = tp->window_clamp ? :dst_metric(dst, RTAX_WINDOW);
247 tcp_select_initial_window(tcp_full_space(sk), req->mss,
247 tcp_select_initial_window(sk, tcp_full_space(sk), req->mss,
248 &req->rsk_rcv_wnd, &req->rsk_window_clamp,
249 ireq->wscale_ok, &rcv_wscale,
250 dst_metric(dst, RTAX_INITRWND));
251
252 ireq->rcv_wscale = rcv_wscale;
253 ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), dst);
254
255 ret = tcp_get_cookie_sock(sk, skb, req, dst, tsoff);
256out:
257 return ret;
258out_free:
259 reqsk_free(req);
260 return NULL;
261}
248 &req->rsk_rcv_wnd, &req->rsk_window_clamp,
249 ireq->wscale_ok, &rcv_wscale,
250 dst_metric(dst, RTAX_INITRWND));
251
252 ireq->rcv_wscale = rcv_wscale;
253 ireq->ecn_ok = cookie_ecn_ok(&tcp_opt, sock_net(sk), dst);
254
255 ret = tcp_get_cookie_sock(sk, skb, req, dst, tsoff);
256out:
257 return ret;
258out_free:
259 reqsk_free(req);
260 return NULL;
261}