diff options
author | Mohit Mehta <mohit.mehta@vyatta.com> | 2008-07-23 12:06:06 +0000 |
---|---|---|
committer | Mohit Mehta <mohit.mehta@vyatta.com> | 2008-07-23 12:06:06 +0000 |
commit | 4b246014e42b2ab0ea0736b4bb422132de3fa458 (patch) | |
tree | fda506b35e5173bfe9c6d7ea1e748709d3f63ac7 | |
parent | e95fb343a63b8cb6c1dc10fe30b5b1c3cafecc2a (diff) | |
download | vyatta-cfg-4b246014e42b2ab0ea0736b4bb422132de3fa458.tar.gz vyatta-cfg-4b246014e42b2ab0ea0736b4bb422132de3fa458.zip |
Fix Bug 3318 ENHANCEMENT REQUEST: Option to NOT Accept DHCP MTU Offers Below Specified Value
- only request for dhcp-option interface-mtu from a dhcp-server for an ethernet interface using dhcp to get IP
- do not request for interface-mtu for other interfaces that use dhcp i.e. ethernet vifs and bridges
- request for interface-mtu from dhcp-server for ethernet interfaces, only if ethernet mtu not set in CLI
-rw-r--r-- | scripts/vyatta-interfaces.pl | 20 | ||||
-rw-r--r-- | templates/interfaces/ethernet/node.tag/mtu/node.def | 4 |
2 files changed, 18 insertions, 6 deletions
diff --git a/scripts/vyatta-interfaces.pl b/scripts/vyatta-interfaces.pl index 18fbf61..676e196 100644 --- a/scripts/vyatta-interfaces.pl +++ b/scripts/vyatta-interfaces.pl @@ -184,6 +184,14 @@ sub is_domain_name_set { return $domainname; } +sub is_ethernet_mtu_set { + my $intf = shift; + my $config = new VyattaConfig; + $config->setLevel("interfaces ethernet $intf"); + my $interface_mtu = undef; + $interface_mtu = $config->returnValue("mtu"); + return $interface_mtu; +} sub dhcp_update_config { my ($conf_file, $intf) = @_; @@ -198,11 +206,15 @@ sub dhcp_update_config { $output .= "\trequest subnet-mask, broadcast-address, routers, domain-name-servers"; my $domainname = is_domain_name_set(); if (!defined($domainname)) { - $output .= ", domain-name;\n"; - } else { - $output .= ";\n"; + $output .= ", domain-name"; + } + if ($intf =~ m/^eth[0-9]+$/) { + my $interface_mtu = is_ethernet_mtu_set($intf); + if (!defined($interface_mtu)) { + $output .= ", interface-mtu"; + } } - + $output .= ";\n"; $output .= "}\n\n"; dhcp_write_file($conf_file, $output); diff --git a/templates/interfaces/ethernet/node.tag/mtu/node.def b/templates/interfaces/ethernet/node.tag/mtu/node.def index 07c102a..74c238a 100644 --- a/templates/interfaces/ethernet/node.tag/mtu/node.def +++ b/templates/interfaces/ethernet/node.tag/mtu/node.def @@ -1,5 +1,5 @@ type: u32 help: Set the Maximum Transmission Unit (MTU) for this interface syntax:expression: $VAR(@) >= 68 && $VAR(@) <= 9000; "MTU must be between 68 and 9000" -update:expression: "sudo ip link set $VAR(../@) mtu $VAR(@)"; "Error setting MTU on dev $VAR(../@)" -delete:expression: "sudo ip link set $VAR(../@) mtu 1500"; "Error deleting MTU on dev $VAR(../@)" +update:expression: "sudo ip link set $VAR(../@) mtu $VAR(@) && echo $VAR(@) > /tmp/dhclient_mtu_check_$VAR(../@)"; "Error setting MTU on dev $VAR(../@)" +delete:expression: "sudo ip link set $VAR(../@) mtu 1500 && rm -f /tmp/dhclient_mtu_check_$VAR(../@)"; "Error deleting MTU on dev $VAR(../@)" |