diff options
-rw-r--r-- | src/network/networkd-netdev-gperf.gperf | 1 | ||||
-rw-r--r-- | src/network/networkd-netdev.c | 1 | ||||
-rw-r--r-- | src/network/networkd-tunnel.c | 8 | ||||
-rw-r--r-- | src/network/networkd.h | 1 |
4 files changed, 11 insertions, 0 deletions
diff --git a/src/network/networkd-netdev-gperf.gperf b/src/network/networkd-netdev-gperf.gperf index f39c922fd2..dff0ae6a16 100644 --- a/src/network/networkd-netdev-gperf.gperf +++ b/src/network/networkd-netdev-gperf.gperf @@ -29,4 +29,5 @@ Tunnel.Local, config_parse_tunnel_address, 0, Tunnel.Remote, config_parse_tunnel_address, 0, offsetof(NetDev, tunnel_remote) Tunnel.TOS, config_parse_unsigned, 0, offsetof(NetDev, tunnel_tos) Tunnel.TTL, config_parse_unsigned, 0, offsetof(NetDev, tunnel_ttl) +Tunnel.DiscoverPathMTU, config_parse_bool, 0, offsetof(NetDev, tunnel_pmtudisc) Peer.Name, config_parse_ifname, 0, offsetof(NetDev, ifname_peer) diff --git a/src/network/networkd-netdev.c b/src/network/networkd-netdev.c index 1036daf157..4439374a67 100644 --- a/src/network/networkd-netdev.c +++ b/src/network/networkd-netdev.c @@ -545,6 +545,7 @@ static int netdev_load_one(Manager *manager, const char *filename) { netdev->kind = _NETDEV_KIND_INVALID; netdev->macvlan_mode = _NETDEV_MACVLAN_MODE_INVALID; netdev->vlanid = VLANID_MAX + 1; + netdev->tunnel_pmtudisc = true; r = config_parse(NULL, filename, file, "Match\0NetDev\0VLAN\0MACVLAN\0Tunnel\0Peer\0", config_item_perf_lookup, (void*) network_netdev_gperf_lookup, diff --git a/src/network/networkd-tunnel.c b/src/network/networkd-tunnel.c index 9b4cb4f959..1a06a17c7b 100644 --- a/src/network/networkd-tunnel.c +++ b/src/network/networkd-tunnel.c @@ -207,6 +207,14 @@ static int netdev_fill_sit_rtnl_message(Link *link, sd_rtnl_message *m) { return r; } + r = sd_rtnl_message_append_u8(m, IFLA_IPTUN_PMTUDISC, netdev->tunnel_pmtudisc); + if (r < 0) { + log_error_netdev(netdev, + "Could not append IFLA_IPTUN_PMTUDISC attribute: %s", + strerror(-r)); + return r; + } + r = sd_rtnl_message_close_container(m); if (r < 0) { log_error_netdev(netdev, diff --git a/src/network/networkd.h b/src/network/networkd.h index e504854761..6f69c9a487 100644 --- a/src/network/networkd.h +++ b/src/network/networkd.h @@ -109,6 +109,7 @@ struct NetDev { int ifindex; NetDevState state; + bool tunnel_pmtudisc; unsigned tunnel_ttl; unsigned tunnel_tos; struct in_addr tunnel_local; |