|
@@ -4903,6 +4903,21 @@ int addrconf_sysctl_forward(struct ctl_table *ctl, int write,
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static
|
|
|
|
+int addrconf_sysctl_mtu(struct ctl_table *ctl, int write,
|
|
|
|
+ void __user *buffer, size_t *lenp, loff_t *ppos)
|
|
|
|
+{
|
|
|
|
+ struct inet6_dev *idev = ctl->extra1;
|
|
|
|
+ int min_mtu = IPV6_MIN_MTU;
|
|
|
|
+ struct ctl_table lctl;
|
|
|
|
+
|
|
|
|
+ lctl = *ctl;
|
|
|
|
+ lctl.extra1 = &min_mtu;
|
|
|
|
+ lctl.extra2 = idev ? &idev->dev->mtu : NULL;
|
|
|
|
+
|
|
|
|
+ return proc_dointvec_minmax(&lctl, write, buffer, lenp, ppos);
|
|
|
|
+}
|
|
|
|
+
|
|
static void dev_disable_change(struct inet6_dev *idev)
|
|
static void dev_disable_change(struct inet6_dev *idev)
|
|
{
|
|
{
|
|
struct netdev_notifier_info info;
|
|
struct netdev_notifier_info info;
|
|
@@ -5054,7 +5069,7 @@ static struct addrconf_sysctl_table
|
|
.data = &ipv6_devconf.mtu6,
|
|
.data = &ipv6_devconf.mtu6,
|
|
.maxlen = sizeof(int),
|
|
.maxlen = sizeof(int),
|
|
.mode = 0644,
|
|
.mode = 0644,
|
|
- .proc_handler = proc_dointvec,
|
|
|
|
|
|
+ .proc_handler = addrconf_sysctl_mtu,
|
|
},
|
|
},
|
|
{
|
|
{
|
|
.procname = "accept_ra",
|
|
.procname = "accept_ra",
|