This patch adds path of mtu discovery for sit tunnel.
To enable/disable DiscoverPathMTU is introduced.
Example configuration
file: sit.netdev
[NetDev]
Name=sit-tun
Kind=sit
MTUBytes=1480
[Tunnel]
DiscoverPathMTU=1
Local=X.X.X.X
Remote=X.X.X.X
By default pmtudisc is turned on , if DiscoverPathMTU
is missing from the config. To turn it off
DiscoverPathMTU=0 needs to be set.
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)
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,
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,
int ifindex;
NetDevState state;
+ bool tunnel_pmtudisc;
unsigned tunnel_ttl;
unsigned tunnel_tos;
struct in_addr tunnel_local;