]> git.ipfire.org Git - people/ms/network.git/commitdiff
ip-tunnel: Support setting MTU on tunnels
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 23 Jun 2019 11:57:17 +0000 (11:57 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 23 Jun 2019 11:57:17 +0000 (11:57 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/hooks/zones/ip-tunnel

index c4a4fb40206478adbb8dd47ac9023c3bdd61228b..3c885cbde0f1bb657dfa9c1f93e595bda9ad28e0 100644 (file)
@@ -26,6 +26,7 @@ SUPPORTED_IP_TUNNEL_MODES="gre sit vti"
 HOOK_SETTINGS=(
        "MARK"
        "MODE"
+       "MTU"
        "PEER"
        "LOCAL_ADDRESS"
 )
@@ -33,6 +34,9 @@ HOOK_SETTINGS=(
 # Default mode of the tunnel
 DEFAULT_MODE="gre"
 
+# Default MTU
+DEFAULT_MTU="1480"
+
 hook_check_settings() {
        assert isset MODE && assert isoneof MODE ${SUPPORTED_IP_TUNNEL_MODES}
 
@@ -67,6 +71,16 @@ hook_parse_cmdline() {
                                fi
                                ;;
 
+                       --mtu=*)
+                               MTU="$(cli_get_val "${1}")"
+
+                               # Validate MTU
+                               if ! mtu_is_valid "ipv6" "${MTU}"; then
+                                       error "Invalid MTU: ${MTU}"
+                                       return ${EXIT_ERROR}
+                               fi
+                               ;;
+
                        --peer=*)
                                PEER="$(cli_get_val "${1}")"
                                ;;
@@ -116,6 +130,7 @@ hook_up() {
        if ! device_exists "${zone}"; then
                ip_tunnel_add "${zone}" \
                        --mode="${MODE}" \
+                       --mtu="${MTU}" \
                        --remote-address="${PEER}" \
                        --local-address="${LOCAL_ADDRESS}" \
                        --ikey="${MARK}" \