diff options
author | Susant Sahani <susant@redhat.com> | 2014-05-22 11:59:19 +0530 |
---|---|---|
committer | Tom Gundersen <teg@jklm.no> | 2014-06-02 16:16:02 +0200 |
commit | a9f434cf00d1d36d9a013b9739efe69653dd7279 (patch) | |
tree | 9b420807b78cac20ef55398cb95105a63ec698de | |
parent | 8bb088c5d44e566eb101e3f093d690aeb2a82285 (diff) |
networkd: sit-tunnel add support for pmtudisc
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.
-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; |