From adce34c6bae2ad61bac3dfbd6627aeacf2eae138 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Fri, 24 Apr 2009 09:56:00 -0700 Subject: Add support for virtual-ethernet --- templates/interfaces/virtual-ethernet/link/node.def | 5 +++++ templates/interfaces/virtual-ethernet/node.def | 12 ++++++++++++ .../virtual-ethernet/node.tag/address/node.def | 13 +++++++++++++ .../virtual-ethernet/node.tag/description/node.def | 4 ++++ .../node.tag/disable-link-detect/node.def | 3 +++ .../virtual-ethernet/node.tag/disable/node.def | 16 ++++++++++++++++ .../virtual-ethernet/node.tag/link/node.def | 5 +++++ .../virtual-ethernet/node.tag/mac/node.def | 6 ++++++ .../virtual-ethernet/node.tag/vif/node.def | 20 ++++++++++++++++++++ .../node.tag/vif/node.tag/address/node.def | 12 ++++++++++++ .../node.tag/vif/node.tag/description/node.def | 4 ++++ .../vif/node.tag/disable-link-detect/node.def | 3 +++ .../node.tag/vif/node.tag/disable/node.def | 11 +++++++++++ 13 files changed, 114 insertions(+) create mode 100644 templates/interfaces/virtual-ethernet/link/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/address/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/description/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/disable-link-detect/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/disable/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/link/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/mac/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/vif/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/address/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/description/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable-link-detect/node.def create mode 100644 templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable/node.def (limited to 'templates/interfaces') diff --git a/templates/interfaces/virtual-ethernet/link/node.def b/templates/interfaces/virtual-ethernet/link/node.def new file mode 100644 index 00000000..844cb8d8 --- /dev/null +++ b/templates/interfaces/virtual-ethernet/link/node.def @@ -0,0 +1,5 @@ +type: txt +syntax:expression: exec \ + "/opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(@) --check=ethernet" +allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --show=ethernet +help: Specify the lower link device diff --git a/templates/interfaces/virtual-ethernet/node.def b/templates/interfaces/virtual-ethernet/node.def new file mode 100644 index 00000000..a6118c8a --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.def @@ -0,0 +1,12 @@ +tag: +type: txt +help: Set Virtual Ethernet device +syntax:expression: pattern $VAR(@) "^veth[0-9]+$" \ + ; "name must be (veth0-veth999)" +commit:expression: $VAR(link) != "" + ; "link device must be set for virtual ethernet $VAR(@)" +create: sudo ip link add $VAR(@) link $VAR(link/@) type macvlan || exit 1 + sudo ip link set $VAR(@) up + /opt/vyatta/sbin/vyatta-link-detect $VAR(@) on +delete: sudo ip link del link $VAR(@) link $VAR(link/@) +comp_help: Enter virtual ethernet interface name (veth0 - veth999) diff --git a/templates/interfaces/virtual-ethernet/node.tag/address/node.def b/templates/interfaces/virtual-ethernet/node.tag/address/node.def new file mode 100644 index 00000000..15ac444d --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/address/node.def @@ -0,0 +1,13 @@ +multi: +type: txt +help: Set an IP address for this interface +syntax:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr $VAR(@) --dev $VAR(../@)" \ + ; "Invalid IP address/prefix [$VAR(@)] for interface $VAR(../@)" +update:sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-update $VAR(@) --dev $VAR(../@) +delete:sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-delete $VAR(@) --dev $VAR(../@) +allowed: echo "dhcp <>" +comp_help:Possible completions: + Set the IP address and prefix length + Set the IPv6 address and prefix length + dhcp Set the IP address and prefix length via DHCP + diff --git a/templates/interfaces/virtual-ethernet/node.tag/description/node.def b/templates/interfaces/virtual-ethernet/node.tag/description/node.def new file mode 100644 index 00000000..d7becd13 --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/description/node.def @@ -0,0 +1,4 @@ +type: txt +help: Set description for this interface +update: sudo sh -c "echo $VAR(@) >/sys/class/net/$VAR(../@)/ifalias" +delete: sudo sh -c "echo '' >/sys/class/net/$VAR(../@)/ifalias" diff --git a/templates/interfaces/virtual-ethernet/node.tag/disable-link-detect/node.def b/templates/interfaces/virtual-ethernet/node.tag/disable-link-detect/node.def new file mode 100644 index 00000000..83858ec1 --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/disable-link-detect/node.def @@ -0,0 +1,3 @@ +help: Set to ignore link state changes on this interface +update:/opt/vyatta/sbin/vyatta-link-detect $VAR(../@) on +delete:/opt/vyatta/sbin/vyatta-link-detect $VAR(../@) off diff --git a/templates/interfaces/virtual-ethernet/node.tag/disable/node.def b/templates/interfaces/virtual-ethernet/node.tag/disable/node.def new file mode 100644 index 00000000..3d3ffef9 --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/disable/node.def @@ -0,0 +1,16 @@ +help: Set interface disabled +create: vif=`/opt/vyatta/sbin/vyatta-interfaces.pl --vif=$VAR(../@) --show=all` + if [ ! -z "$vif" ]; then + echo "Can not disable interface " $VAR(../@) " with vif:" $vif + exit 1 + fi + /etc/netplug/linkdown.d/dhclient $VAR(../@) + if ! sudo ip link set $VAR(../@) down 2>/dev/null; then + echo "Error disabling dev $VAR(../@)" + /etc/netplug/linkup.d/dhclient $VAR(../@) + exit 1 + fi +delete: if ! sudo ip link set $VAR(../@) up; then + echo "Error enabling dev $VAR(../@)" + exit 1 + fi diff --git a/templates/interfaces/virtual-ethernet/node.tag/link/node.def b/templates/interfaces/virtual-ethernet/node.tag/link/node.def new file mode 100644 index 00000000..f16b0ec4 --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/link/node.def @@ -0,0 +1,5 @@ +type: txt +commit:expression: exec \ + "/opt/vyatta/sbin/vyatta-interfaces.pl --dev=$VAR(@) --check=ethernet" +allowed: /opt/vyatta/sbin/vyatta-interfaces.pl --show=ethernet +help: Specify the lower link device diff --git a/templates/interfaces/virtual-ethernet/node.tag/mac/node.def b/templates/interfaces/virtual-ethernet/node.tag/mac/node.def new file mode 100644 index 00000000..e1202aca --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/mac/node.def @@ -0,0 +1,6 @@ +type: macaddr +help: Set the Media Access Control (MAC) address of this interface +syntax:expression: exec "\ + /opt/vyatta/sbin/vyatta-interfaces.pl --dev $VAR(../@) --valid-mac $VAR(@)" +update: /opt/vyatta/sbin/vyatta-interfaces.pl --dev $VAR(../@) --set-mac $VAR(@) + diff --git a/templates/interfaces/virtual-ethernet/node.tag/vif/node.def b/templates/interfaces/virtual-ethernet/node.tag/vif/node.def new file mode 100644 index 00000000..bca63071 --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/vif/node.def @@ -0,0 +1,20 @@ +tag: +type: u32 +help: Set Virtual Local Area Network (VLAN) ID +syntax:expression: $VAR(@) >= 0 && $VAR(@) <= 4094; "VLAN ID must be between 0 and 4094" +create: read flags < /sys/class/net/$VAR(../@)/flags + if [ $(( flags & 1 )) -eq 0 ] + then + echo "Can not create VLAN on disabled interface: " $VAR(../@) + exit 1 + fi + sudo ip link add link $VAR(../@) name "$VAR(../@).$VAR(@)" type vlan id $VAR(@) || exit 1 + sudo ip link set "$VAR(../@).$VAR(@)" up + /opt/vyatta/sbin/vyatta-link-detect "$VAR(../@).$VAR(@)" on +delete: sudo ip link delete dev "$VAR(../@).$VAR(@)" type vlan id $VAR(@) +comp_help: possible completions: + <0-4094> Set VLAN ID + + + + diff --git a/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/address/node.def b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/address/node.def new file mode 100644 index 00000000..4c93905f --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/address/node.def @@ -0,0 +1,12 @@ +multi: +type: txt +help: Set an IP address for this interface +syntax:expression: exec "/opt/vyatta/sbin/vyatta-interfaces.pl --valid-addr $VAR(@) --dev $VAR(../../@).$VAR(../@) "\ + ; "Invalid IP address/prefix [$VAR(@)] for interface $VAR(../../@).$VAR(../@)" +create:sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-update $VAR(@) --dev $VAR(../../@).$VAR(../@) +delete:sudo /opt/vyatta/sbin/vyatta-interfaces.pl --eth-addr-delete $VAR(@) --dev $VAR(../../@).$VAR(../@) +allowed: echo "dhcp <>" +comp_help:Possible completions: + Set the IP address and prefix length + Set the IPv6 address and prefix length + dhcp Set the IP address and prefix length via DHCP diff --git a/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/description/node.def b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/description/node.def new file mode 100644 index 00000000..40f04bcc --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/description/node.def @@ -0,0 +1,4 @@ +type: txt +help: Set description for this interface +update: sudo sh -c "echo $VAR(@) >/sys/class/net/$VAR(../../@).$VAR(../@)/ifalias" +delete: sudo sh -c "echo '' >/sys/class/net/$VAR(../../@).$VAR(../@)/ifalias" diff --git a/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable-link-detect/node.def b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable-link-detect/node.def new file mode 100644 index 00000000..897113de --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable-link-detect/node.def @@ -0,0 +1,3 @@ +help: Set to ignore link state changes on this interface +update:/opt/vyatta/sbin/vyatta-link-detect $VAR(../../@).$VAR(../@) on +delete:/opt/vyatta/sbin/vyatta-link-detect $VAR(../../@).$VAR(../@) off diff --git a/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable/node.def b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable/node.def new file mode 100644 index 00000000..78b24870 --- /dev/null +++ b/templates/interfaces/virtual-ethernet/node.tag/vif/node.tag/disable/node.def @@ -0,0 +1,11 @@ +help: Set interface disabled +update: /etc/netplug/linkdown.d/dhclient $VAR(../../@).$VAR(../@) + if ! sudo ip link set $VAR(../../@).$VAR(../@) down 2>/dev/null; then + echo "Error disabling dev $VAR(../../@).$VAR(../@)" + /etc/netplug/linkup.d/dhclient $VAR(../../@).$VAR(../@) + exit 1 + fi +delete: if ! sudo ip link set $VAR(../../@).$VAR(../@) up; then + echo "Error enabling dev $VAR(../../@).$VAR(../@)" + exit 1 + fi -- cgit v1.2.3