Commit 13ac34a8 authored by Veaceslav Falico's avatar Veaceslav Falico Committed by David S. Miller

bonding: permit using arp_validate with non-ab modes

Currently it's disabled because it's sometimes hard, in typical configs, to
make it work - because of the nature how the loadbalance modes work - as
it's hard to deliver valid arp replies to correct slaves by the switch.

However we still can use arp_validation in loadbalance with several other
configs, per example with arp_validate == 2 for backup with one broadcast
domain, without the switch(es) doing any balancing - this way we'd be (a
bit more) sure that the slave is up.

So, enable it to let users decide which one works/suits them best. Also
correct the mode limitation from BOND_OPT_ARP_VALIDATE.

CC: Nikolay Aleksandrov <nikolay@redhat.com>
CC: Jay Vosburgh <fubar@us.ibm.com>
CC: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: default avatarVeaceslav Falico <vfalico@redhat.com>
Acked-by: default avatarNikolay Aleksandrov <nikolay@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 3b7d636b
...@@ -270,9 +270,9 @@ arp_ip_target ...@@ -270,9 +270,9 @@ arp_ip_target
arp_validate arp_validate
Specifies whether or not ARP probes and replies should be Specifies whether or not ARP probes and replies should be
validated in the active-backup mode. This causes the ARP validated in any mode that supports arp monitoring. This causes
monitor to examine the incoming ARP requests and replies, and the ARP monitor to examine the incoming ARP requests and replies,
only consider a slave to be up if it is receiving the and only consider a slave to be up if it is receiving the
appropriate ARP traffic. appropriate ARP traffic.
Possible values are: Possible values are:
......
...@@ -4183,10 +4183,6 @@ static int bond_check_params(struct bond_params *params) ...@@ -4183,10 +4183,6 @@ static int bond_check_params(struct bond_params *params)
} }
if (arp_validate) { if (arp_validate) {
if (bond_mode != BOND_MODE_ACTIVEBACKUP) {
pr_err("arp_validate only supported in active-backup mode\n");
return -EINVAL;
}
if (!arp_interval) { if (!arp_interval) {
pr_err("arp_validate requires arp_interval\n"); pr_err("arp_validate requires arp_interval\n");
return -EINVAL; return -EINVAL;
......
...@@ -151,7 +151,8 @@ static struct bond_option bond_opts[] = { ...@@ -151,7 +151,8 @@ static struct bond_option bond_opts[] = {
.id = BOND_OPT_ARP_VALIDATE, .id = BOND_OPT_ARP_VALIDATE,
.name = "arp_validate", .name = "arp_validate",
.desc = "validate src/dst of ARP probes", .desc = "validate src/dst of ARP probes",
.unsuppmodes = BOND_MODE_ALL_EX(BIT(BOND_MODE_ACTIVEBACKUP)), .unsuppmodes = BIT(BOND_MODE_8023AD) | BIT(BOND_MODE_TLB) |
BIT(BOND_MODE_ALB),
.values = bond_arp_validate_tbl, .values = bond_arp_validate_tbl,
.set = bond_option_arp_validate_set .set = bond_option_arp_validate_set
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment