summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2019-08-05 11:41:39 +0200
committerChristian Poessinger <christian@poessinger.com>2019-08-05 12:27:34 +0200
commit61cf03e22bbd1cef574e1884e9814cc3cc464a90 (patch)
treead677ec4c7a24f9cc44f312b878191fbf5629364 /python
parentd4d47d8a39c7f6dc5eb5722fe7782262b1544321 (diff)
downloadvyos-1x-61cf03e22bbd1cef574e1884e9814cc3cc464a90.tar.gz
vyos-1x-61cf03e22bbd1cef574e1884e9814cc3cc464a90.zip
[bridge] T1156: support adding interface addresses
Diffstat (limited to 'python')
-rw-r--r--python/vyos/configinterface.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/python/vyos/configinterface.py b/python/vyos/configinterface.py
index 0f25c4a89..0f5b0842c 100644
--- a/python/vyos/configinterface.py
+++ b/python/vyos/configinterface.py
@@ -14,6 +14,7 @@
# License along with this library. If not, see <http://www.gnu.org/licenses/>.
import os
+import vyos.validate
def validate_mac_address(addr):
# a mac address consits out of 6 octets
@@ -111,3 +112,42 @@ def set_link_detect(intf, enable):
os.system('/usr/bin/vtysh -c "configure terminal" -c "interface {}" -c "no link-detect"'.format(intf))
pass
+
+def add_interface_address(intf, addr):
+ """
+ Configure an interface IPv4/IPv6 address
+ """
+ if addr == "dhcp":
+ os.system('/opt/vyatta/sbin/vyatta-interfaces.pl --dev="{}" --dhcp=start'.format(intf))
+ elif addr == "dhcpv6":
+ os.system('/opt/vyatta/sbin/vyatta-dhcpv6-client.pl --start -ifname "{}"'.format(intf))
+ elif vyos.validate.is_ipv4(addr):
+ if not vyos.validate.is_intf_addr_assigned(intf, addr):
+ print("Assigning {} to {}".format(addr, intf))
+ os.system('sudo ip -4 addr add "{}" broadcast + dev "{}"'.format(addr, intf))
+ elif vyos.validate.is_ipv6(addr):
+ if not vyos.validate.is_intf_addr_assigned(intf, addr):
+ print("Assigning {} to {}".format(addr, intf))
+ os.system('sudo ip -6 addr add "{}" dev "{}"'.format(addr, intf))
+ else:
+ raise ConfigError('{} is not a valid interface address'.format(addr))
+
+ pass
+
+def remove_interface_address(intf, addr):
+ """
+ Remove IPv4/IPv6 address from given interface
+ """
+
+ if addr == "dhcp":
+ os.system('/opt/vyatta/sbin/vyatta-interfaces.pl --dev="{}" --dhcp=stop'.format(intf))
+ elif addr == "dhcpv6":
+ os.system('/opt/vyatta/sbin/vyatta-dhcpv6-client.pl --stop -ifname "{}"'.format(intf))
+ elif vyos.validate.is_ipv4(addr):
+ os.system('ip -4 addr del "{}" dev "{}"'.format(addr, intf))
+ elif vyos.validate.is_ipv6(addr):
+ os.system('ip -6 addr del "{}" dev "{}"'.format(addr, intf))
+ else:
+ raise ConfigError('{} is not a valid interface address'.format(addr))
+
+ pass