diff options
Diffstat (limited to 'scripts/vyatta-address')
-rw-r--r-- | scripts/vyatta-address | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/scripts/vyatta-address b/scripts/vyatta-address new file mode 100644 index 00000000..2e521c26 --- /dev/null +++ b/scripts/vyatta-address @@ -0,0 +1,45 @@ +#! /bin/bash +# +# Wrapper around ip link command that handles IPv4, IPv6 and DHCP +# This is done in shell rather than perl to avoid the overhead of recompilation + +if [ $# -ne 3 ]; then + echo "Usage: $0 {add|delete} interface address" + exit 1 +fi + +case $1 in + add) + if [[ "$3" = "dhcp" ]] + then + exec /opt/vyatta/sbin/vyatta-interfaces.pl --dev="$2" --dhcp=start + elif [[ "$3" = "dhcpv6" ]] + then + exec /opt/vyatta/sbin/vyatta-dhcpv6-client.pl --start -ifname "$2" + elif [[ "$3" =~ ":" ]] + then # Ipv6 address + exec ip -6 addr add "$3" dev "$2" + else + exec ip addr add "$3" broadcast + dev "$2" + fi ;; + + delete) + if [ ! -d "/sys/class/net/$2" ] + then # device is already gone + exit 0 + elif [[ "$3" = "dhcp" ]] + then + exec /opt/vyatta/sbin/vyatta-interfaces.pl --dev="$2" --dhcp=stop + elif [[ "$3" = "dhcpv6" ]] + then + exec /opt/vyatta/sbin/vyatta-dhcpv6-client.pl --stop --ifname $ifname + elif [[ "$3" =~ ":" ]] + then + exec ip -6 addr del "$3" dev "$2" + else + exec ip addr del "$3" dev "$2" + fi ;; + *) + echo "Unknown option $1" + exit 1 ;; +esac |