From: Julien Fortin Date: Mon, 18 Jun 2018 14:51:51 +0000 (+0200) Subject: addons: addressvirtual: new attribute: address-virtual-ipv6-addrgen [on|off] X-Git-Tag: 1.2.2-1~107 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=7b711dc521589b5076dff332f27f00b2f02c1463;p=mirror_ifupdown2.git addons: addressvirtual: new attribute: address-virtual-ipv6-addrgen [on|off] [14:53:46] root:~ # ifquery -a auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp auto vlan1903 iface vlan1903 alias LAB-CUST-VMS vlan-id 1903 vlan-raw-device bridge address 2a06:c01:1:1903::3/64 address 185.98.123.3/24 address-virtual 00:00:5e:00:01:a3 2a06:c01:1:1903::1/64 fe80::1/64 185.98.123.1/24 vrf public auto public iface public vrf-table auto auto bridge iface bridge bridge-ports swp1 [14:53:47] root:~ # ifup -a [14:53:50] root:~ # ip addr show vlan1903-v0 46: vlan1903-v0@vlan1903: mtu 1500 qdisc noqueue master public state UP group default link/ether 00:00:5e:00:01:a3 brd ff:ff:ff:ff:ff:ff inet 185.98.123.1/24 scope global vlan1903-v0 valid_lft forever preferred_lft forever inet6 2a06:c01:1:1903::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::200:5eff:fe00:1a3/64 scope link valid_lft forever preferred_lft forever inet6 fe80::1/64 scope link valid_lft forever preferred_lft forever [14:53:52] root:~ # [14:53:54] root:~ # [14:53:54] root:~ # nano /etc/network/interfaces [14:53:57] root:~ # ifquery vlan1903 auto vlan1903 iface vlan1903 alias LAB-CUST-VMS vlan-id 1903 vlan-raw-device bridge address 2a06:c01:1:1903::3/64 address 185.98.123.3/24 address-virtual 00:00:5e:00:01:a3 2a06:c01:1:1903::1/64 fe80::1/64 185.98.123.1/24 address-virtual-ipv6-addrgen off vrf public [14:54:05] root:~ # ifdown -a -X eth0 [14:54:08] root:~ # ifup -a -v ... ... info: executing /bin/ip -force -batch - [link set dev vlan1903-v0 master public link set dev vlan1903-v0 addrgenmode none link set dev vlan1903-v0 down link set dev vlan1903-v0 address 00:00:5e:00:01:a3 link set dev vlan1903-v0 up addr add 2a06:c01:1:1903::1/64 dev vlan1903-v0 addr add fe80::1/64 dev vlan1903-v0 addr add 185.98.123.1/24 dev vlan1903-v0 route del 2a06:c01:1:1903::/64 table 1001 dev vlan1903-v0 route del fe80::/64 table 1001 dev vlan1903-v0 route add 2a06:c01:1:1903::/64 table 1001 dev vlan1903-v0 proto kernel metric 9999 route add fe80::/64 table 1001 dev vlan1903-v0 proto kernel metric 9999 ] ... ... [14:54:14] root:~ # ip addr show vlan1903-v0 50: vlan1903-v0@vlan1903: mtu 1500 qdisc noqueue master public state UP group default link/ether 00:00:5e:00:01:a3 brd ff:ff:ff:ff:ff:ff inet 185.98.123.1/24 scope global vlan1903-v0 valid_lft forever preferred_lft forever inet6 2a06:c01:1:1903::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::1/64 scope link valid_lft forever preferred_lft forever [14:54:16] root:~ # Reviewed-by: Roopa Prabhu Signed-off-by: Julien Fortin --- diff --git a/ifupdown2/addons/addressvirtual.py b/ifupdown2/addons/addressvirtual.py index 01b7ed4..bf6531d 100644 --- a/ifupdown2/addons/addressvirtual.py +++ b/ifupdown2/addons/addressvirtual.py @@ -11,6 +11,7 @@ from ipaddr import IPNetwork, IPv6Network try: from ifupdown2.ifupdown.iface import * + from ifupdown2.ifupdown.utils import utils from ifupdown2.ifupdown.netlink import netlink from ifupdown2.ifupdownaddons.LinkUtils import LinkUtils @@ -21,6 +22,7 @@ try: import ifupdown2.ifupdown.ifupdownconfig as ifupdownconfig except ImportError: from ifupdown.iface import * + from ifupdown.utils import utils from ifupdown.netlink import netlink from ifupdownaddons.LinkUtils import LinkUtils @@ -42,8 +44,18 @@ class addressvirtual(moduleBase): { 'help' : 'bridge router virtual mac and ips', 'multivalue' : True, 'validvals' : ['',], - 'example' : ['address-virtual 00:11:22:33:44:01 11.0.1.1/24 11.0.1.2/24']} - }} + 'example': ['address-virtual 00:11:22:33:44:01 11.0.1.1/24 11.0.1.2/24'] + }, + 'address-virtual-ipv6-addrgen': { + 'help': 'enable disable ipv6 link addrgenmode', + 'validvals': ['on', 'off'], + 'default': 'on', + 'example': [ + 'address-virtual-ipv6-addrge on', + 'address-virtual-ipv6-addrge off' + ] + } + }} def __init__(self, *args, **kargs): @@ -178,6 +190,14 @@ class addressvirtual(moduleBase): maclist.append(macip[0]) return maclist + def get_addressvirtual_ipv6_addrgen_user_conf(self, ifaceobj): + ipv6_addrgen = ifaceobj.get_attr_value_first('address-virtual-ipv6-addrgen') + + if ipv6_addrgen: + return True, utils.get_boolean_from_string(ipv6_addrgen) + + return False, None + def _apply_address_config(self, ifaceobj, address_virtual_list): purge_existing = False if ifupdownflags.flags.PERFMODE else True @@ -186,6 +206,8 @@ class addressvirtual(moduleBase): if ifaceobj.lowerifaces and address_virtual_list: update_mtu = True + should_configure_ipv6_addrgen, ipv6_addrgen_user_value = self.get_addressvirtual_ipv6_addrgen_user_conf(ifaceobj) + hwaddress = [] self.ipcmd.batch_start() av_idx = 0 @@ -217,6 +239,9 @@ class addressvirtual(moduleBase): if (ifaceobj.link_privflags & ifaceLinkPrivFlags.VRF_SLAVE): self._handle_vrf_slaves(macvlan_ifacename, ifaceobj) + if should_configure_ipv6_addrgen: + self.ipcmd.ipv6_addrgen(macvlan_ifacename, ipv6_addrgen_user_value) + ips = av_attrs[1:] if mac != 'None': mac = mac.lower()