summaryrefslogtreecommitdiff
path: root/interface-ip.c
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2015-06-24 13:02:37 +0200
committerSteven Barth <steven@midlink.org>2015-06-24 13:02:37 +0200
commit5b29ffda0099c3bcb8d17a728e1e89dc21a2e68d (patch)
treeddfdd742a3623aae056f7d69f9d59b5c94376965 /interface-ip.c
parent5cf30b59baa03db2448570c78e7e92873555d2ec (diff)
downloadnetifd-5b29ffda0099c3bcb8d17a728e1e89dc21a2e68d.tar.gz
Add mtu6 option to override IPv6 MTU
Signed-off-by: Steven Barth <steven@midlink.org>
Diffstat (limited to 'interface-ip.c')
-rw-r--r--interface-ip.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/interface-ip.c b/interface-ip.c
index aec3892..7f8a451 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -767,10 +767,11 @@ interface_set_prefix_address(struct device_prefix_assignment *assignment,
route.metric = iface->metric;
system_add_route(l3_downlink, &route);
- if (uplink && uplink->l3_dev.dev) {
- int mtu = system_update_ipv6_mtu(
- uplink->l3_dev.dev, 0);
- if (mtu > 0)
+ if (uplink && uplink->l3_dev.dev && !(l3_downlink->settings.flags & DEV_OPT_MTU6)) {
+ int mtu = system_update_ipv6_mtu(uplink->l3_dev.dev, 0);
+ int mtu_old = system_update_ipv6_mtu(l3_downlink, 0);
+
+ if (mtu > 0 && mtu_old > mtu)
system_update_ipv6_mtu(l3_downlink, mtu);
}