Hello!
> The old way is broken, it sets the bound-device to 0 when sending
> the syn-ack.
Ben, this function is _not_ used to send syn-acks...
> +#ifdef CONFIG_NET_SENDTOSELF
> + if (ip_route_output(&rt, daddr, rt->rt_spec_dst,
> RT_TOS(skb->nh.iph->tos), sk->bound_dev_if))
> +#else
> if (ip_route_output(&rt, daddr, rt->rt_spec_dst,
> RT_TOS(skb->nh.iph->tos), 0))
> +#endif
This chunk is noop, sk here is a dummy socket internal to kernel,
where sk->bound_dev_if is identical zero. Grep code to see
what it is used for.
The same ("noopness") is true about 90% of the patch. F.e. all the messing
inside tcp with openreqs is noop.
Essentially, the only chunk which has a real meaning is that one
for fib_frontend.c. And it is simpler to do this with sysctl, compare
to rp_filter at al.
Alexey
|