diff options
author | sever-sever <v.gletenko@vyos.io> | 2020-09-14 07:27:48 +0000 |
---|---|---|
committer | sever-sever <v.gletenko@vyos.io> | 2020-09-14 07:27:48 +0000 |
commit | b82871584b2a087b5b690f8eace1e99b7c948cf3 (patch) | |
tree | e3b2a14c6104b8cb36a8977e0ca95ad799c5037c | |
parent | 8ae88b5ba5cbc34b9992ccdde4229d44cfe56225 (diff) | |
download | vyos-1x-b82871584b2a087b5b690f8eace1e99b7c948cf3.tar.gz vyos-1x-b82871584b2a087b5b690f8eace1e99b7c948cf3.zip |
op-mode: T2874: Add new utill for mtu-check
-rw-r--r-- | op-mode-definitions/force-mtu-host.xml | 34 | ||||
-rwxr-xr-x | src/op_mode/force_mtu_host.sh | 52 |
2 files changed, 86 insertions, 0 deletions
diff --git a/op-mode-definitions/force-mtu-host.xml b/op-mode-definitions/force-mtu-host.xml new file mode 100644 index 000000000..b92179f11 --- /dev/null +++ b/op-mode-definitions/force-mtu-host.xml @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<interfaceDefinition> + <node name="force"> + <children> + <node name="mtu"> + <properties> + <help>Show MTU max value for remote host protocol TCP</help> + </properties> + <children> + <tagNode name="host"> + <properties> + <help>IP address of the remote host</help> + <completionHelp> + <list><hostname> <x.x.x.x> <h:h:h:h:h:h:h:h></list> + </completionHelp> + </properties> + <command>${vyos_op_scripts_dir}/force_mtu_host.sh $4</command> + <children> + <tagNode name="interface"> + <properties> + <help>Source interface</help> + <completionHelp> + <script>${vyos_completion_dir}/list_interfaces.py</script> + </completionHelp> + </properties> + <command>${vyos_op_scripts_dir}/force_mtu_host.sh $4 $6</command> + </tagNode> + </children> + </tagNode> + </children> + </node> + </children> + </node> +</interfaceDefinition> diff --git a/src/op_mode/force_mtu_host.sh b/src/op_mode/force_mtu_host.sh new file mode 100755 index 000000000..02955c729 --- /dev/null +++ b/src/op_mode/force_mtu_host.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash +# +# Module: vyos-show-ram.sh +# Displays memory usage information in minimalistic format +# +# Copyright (C) 2020 VyOS maintainers and contributors +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +target=$1 +interface=$2 + +# IPv4 header 20 byte + TCP header 20 byte +ipv4_overhead=40 + +# IPv6 headter 40 byte + TCP header 20 byte +ipv6_overhead=60 + +# If no arguments +if [[ $# -eq 0 ]] ; then + echo "Target host not defined" + exit 1 +fi + +# If one argument, it's ip address. If 2, the second arg "interface" +if [[ $# -eq 1 ]] ; then + mtu=$(sudo nmap -T4 --script path-mtu -F $target | grep "PMTU" | awk {'print $NF'}) +elif [[ $# -eq 2 ]]; then + mtu=$(sudo nmap -T4 -e $interface --script path-mtu -F $target | grep "PMTU" | awk {'print $NF'}) +fi + +tcpv4_mss=$(($mtu-$ipv4_overhead)) +tcpv6_mss=$(($mtu-$ipv6_overhead)) + +echo " +Recommended maximum values (or less) for target $target: +--- +MTU: $mtu +TCP-MSS: $tcpv4_mss +TCP-MSS_IPv6: $tcpv6_mss +" + |