Quentin Armitage 3777ed688f ipvs: fix bind to link-local mcast IPv6 address in backup
When using HEAD from
https://git.kernel.org/cgit/utils/kernel/ipvsadm/ipvsadm.git/,
the command:
ipvsadm --start-daemon backup --mcast-interface eth0.60 \
    --mcast-group ff02::1:81
fails with the error message:
Argument list too long

whereas both:
ipvsadm --start-daemon master --mcast-interface eth0.60 \
    --mcast-group ff02::1:81
and:
ipvsadm --start-daemon backup --mcast-interface eth0.60 \
    --mcast-group 224.0.0.81
are successful.

The error message "Argument list too long" isn't helpful. The error occurs
because an IPv6 address is given in backup mode.

The error is in make_receive_sock() in net/netfilter/ipvs/ip_vs_sync.c,
since it fails to set the interface on the address or the socket before
calling inet6_bind() (via sock->ops->bind), where the test
'if (!sk->sk_bound_dev_if)' failed.

Setting sock->sk->sk_bound_dev_if on the socket before calling
inet6_bind() resolves the issue.

Fixes: d33288172e72 ("ipvs: add more mcast parameters for the sync daemon")
Signed-off-by: Quentin Armitage <quentin@armitage.org.uk>
Acked-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>
2016-07-07 20:21:32 +02:00
..
2016-04-13 10:41:10 +02:00
2016-05-27 15:26:11 -07:00
2016-05-23 13:51:10 -07:00
2016-05-11 19:36:28 -04:00
2016-06-15 22:15:21 -07:00
2016-06-22 16:32:23 -04:00
2015-10-23 03:05:19 -07:00
2016-05-29 22:33:25 -07:00
2016-06-18 21:34:09 -07:00
2016-06-07 15:30:21 -07:00
2016-06-10 23:22:55 -07:00
2016-05-26 10:33:33 -07:00
2016-06-09 23:41:03 -07:00
2016-05-08 23:46:14 -04:00