summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@vyatta.com>2011-02-06 09:32:22 +0100
committerStephen Hemminger <stephen.hemminger@vyatta.com>2011-03-11 14:27:27 -0800
commita4a42dc4209865b04b8ee41f03d1be870d5a794b (patch)
tree20b4e94869a86cba3b0beef6d8c1a59d0bdfe8c0
parent10d8bfab020bcabfcf96fe26f2e34f5dc05ee8b6 (diff)
downloadvyatta-cfg-quagga-a4a42dc4209865b04b8ee41f03d1be870d5a794b.tar.gz
vyatta-cfg-quagga-a4a42dc4209865b04b8ee41f03d1be870d5a794b.zip
Don't set speed duplex twice
Bug 6778 Both the nodes for speed and duplex both update the device. But only the change only needs to be done once. Changing the values twice causes link bounce and takes some time to resolve.
-rw-r--r--templates/interfaces/ethernet/node.def4
-rw-r--r--templates/interfaces/ethernet/node.tag/duplex/node.def7
-rw-r--r--templates/interfaces/ethernet/node.tag/speed/node.def7
3 files changed, 14 insertions, 4 deletions
diff --git a/templates/interfaces/ethernet/node.def b/templates/interfaces/ethernet/node.def
index 5f196f59..ea33efb8 100644
--- a/templates/interfaces/ethernet/node.def
+++ b/templates/interfaces/ethernet/node.def
@@ -12,7 +12,11 @@ syntax:expression: exec \
echo \"interface ethernet $VAR(@): does not exist\";
exit 1; \
fi"
+
+begin: rm -f /tmp/speed-duplex.$VAR(@)
+
create: ip link set "$VAR(@)" up
/opt/vyatta/sbin/vyatta-link-detect $VAR(@) on
+
delete: [ -d /sys/class/net/$VAR(../@) ] || exit 0
ip link set $VAR(@) down
diff --git a/templates/interfaces/ethernet/node.tag/duplex/node.def b/templates/interfaces/ethernet/node.tag/duplex/node.def
index 023a8a08..0eee484e 100644
--- a/templates/interfaces/ethernet/node.tag/duplex/node.def
+++ b/templates/interfaces/ethernet/node.tag/duplex/node.def
@@ -8,8 +8,11 @@ commit:expression: exec " \
/opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../@) \
--check-speed $VAR(../speed/@) $VAR(@)"
-update: /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../@) \
- --speed-duplex $VAR(../speed/@) $VAR(@)
+update: if [ ! -f /tmp/speed-duplex.$VAR(../@) ]; then
+ /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../@) \
+ --speed-duplex $VAR(../speed/@) $VAR(@)
+ touch /tmp/speed-duplex.$VAR(../@)
+ fi
val_help: auto; Auto negotiation (default)
val_help: half; Half duplex
diff --git a/templates/interfaces/ethernet/node.tag/speed/node.def b/templates/interfaces/ethernet/node.tag/speed/node.def
index fad248af..2c069cc1 100644
--- a/templates/interfaces/ethernet/node.tag/speed/node.def
+++ b/templates/interfaces/ethernet/node.tag/speed/node.def
@@ -8,8 +8,11 @@ commit:expression: exec "\
/opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../@) \
--check-speed $VAR(@) $VAR(../duplex/@)"
-update: /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../@) \
- --speed-duplex $VAR(@) $VAR(../duplex/@)
+update: if [ ! -f /tmp/speed-duplex.$VAR(../@) ]; then
+ /opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(../@) \
+ --speed-duplex $VAR(@) $VAR(../duplex/@)
+ touch /tmp/speed-duplex.$VAR(../@)
+ fi
val_help: auto; Auto negotiation (default)
val_help: 10; 10 Mbit/sec