aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding/bond_options.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/bonding/bond_options.c')
-rw-r--r--drivers/net/bonding/bond_options.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/net/bonding/bond_options.c b/drivers/net/bonding/bond_options.c
index f8c2e4f17066..698079e94e74 100644
--- a/drivers/net/bonding/bond_options.c
+++ b/drivers/net/bonding/bond_options.c
@@ -436,3 +436,25 @@ int bond_option_arp_ip_targets_set(struct bonding *bond, __be32 *targets,
436 write_unlock_bh(&bond->lock); 436 write_unlock_bh(&bond->lock);
437 return ret; 437 return ret;
438} 438}
439
440int bond_option_arp_validate_set(struct bonding *bond, int arp_validate)
441{
442 if (bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
443 pr_err("%s: arp_validate only supported in active-backup mode.\n",
444 bond->dev->name);
445 return -EINVAL;
446 }
447 pr_info("%s: setting arp_validate to %s (%d).\n",
448 bond->dev->name, arp_validate_tbl[arp_validate].modename,
449 arp_validate);
450
451 if (bond->dev->flags & IFF_UP) {
452 if (!arp_validate)
453 bond->recv_probe = NULL;
454 else if (bond->params.arp_interval)
455 bond->recv_probe = bond_arp_rcv;
456 }
457 bond->params.arp_validate = arp_validate;
458
459 return 0;
460}