bonding: send IPv6 neighbor advertisement on failover
[safe/jmp/linux-2.6] / drivers / net / bonding / bond_sysfs.c
index e400d7d..8788e3e 100644 (file)
@@ -983,6 +983,47 @@ out:
        return ret;
 }
 static DEVICE_ATTR(num_grat_arp, S_IRUGO | S_IWUSR, bonding_show_n_grat_arp, bonding_store_n_grat_arp);
+
+/*
+ * Show and set the number of unsolicted NA's to send after a failover event.
+ */
+static ssize_t bonding_show_n_unsol_na(struct device *d,
+                                      struct device_attribute *attr,
+                                      char *buf)
+{
+       struct bonding *bond = to_bond(d);
+
+       return sprintf(buf, "%d\n", bond->params.num_unsol_na);
+}
+
+static ssize_t bonding_store_n_unsol_na(struct device *d,
+                                       struct device_attribute *attr,
+                                       const char *buf, size_t count)
+{
+       int new_value, ret = count;
+       struct bonding *bond = to_bond(d);
+
+       if (sscanf(buf, "%d", &new_value) != 1) {
+               printk(KERN_ERR DRV_NAME
+                      ": %s: no num_unsol_na value specified.\n",
+                      bond->dev->name);
+               ret = -EINVAL;
+               goto out;
+       }
+       if (new_value < 0 || new_value > 255) {
+               printk(KERN_ERR DRV_NAME
+                      ": %s: Invalid num_unsol_na value %d not in range 0-255; rejected.\n",
+                      bond->dev->name, new_value);
+               ret = -EINVAL;
+               goto out;
+       } else {
+               bond->params.num_unsol_na = new_value;
+       }
+out:
+       return ret;
+}
+static DEVICE_ATTR(num_unsol_na, S_IRUGO | S_IWUSR, bonding_show_n_unsol_na, bonding_store_n_unsol_na);
+
 /*
  * Show and set the MII monitor interval.  There are two tricky bits
  * here.  First, if MII monitoring is activated, then we must disable
@@ -1420,6 +1461,7 @@ static struct attribute *per_bond_attrs[] = {
        &dev_attr_lacp_rate.attr,
        &dev_attr_xmit_hash_policy.attr,
        &dev_attr_num_grat_arp.attr,
+       &dev_attr_num_unsol_na.attr,
        &dev_attr_miimon.attr,
        &dev_attr_primary.attr,
        &dev_attr_use_carrier.attr,