aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/impl_eni.py
diff options
context:
space:
mode:
authorTomoki Sekiyama <tomoki.sekiyama@hds.com>2015-08-17 21:37:08 +0000
committerTomoki Sekiyama <tomoki.sekiyama@hds.com>2015-08-17 17:47:11 -0400
commiteb39ca3268c805d5d57bdb224ab16c5bfb19857e (patch)
tree626f02d07ccd0497cc8064335bb4dbedb65fd574 /os_net_config/impl_eni.py
parent0b130b6b3b4a9e0768e99b1496d2852f2ca47bb7 (diff)
Support multiple addresses assignment with eni
Currently only the first IPv4/v6 address is assigned to a NIC even if multiple addresses are specified in config file. With this change, eni implementation can configure multiple IPv4/v6 addresses for a NIC. Also this fixes IPv6 netmask format, which currently causes an error on ifup. Change-Id: I0a38d376bece8af297bddede594962fd3a193d09
Diffstat (limited to 'os_net_config/impl_eni.py')
-rw-r--r--os_net_config/impl_eni.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/os_net_config/impl_eni.py b/os_net_config/impl_eni.py
index 7eb69f3..68d91ef 100644
--- a/os_net_config/impl_eni.py
+++ b/os_net_config/impl_eni.py
@@ -44,22 +44,27 @@ class ENINetConfig(os_net_config.NetConfig):
self.bridges = {}
logger.info('ENI net config provider created.')
- def _add_common(self, interface, static_addr=None):
+ def _add_common(self, interface, static_addr=None, ip_version=4):
ovs_extra = []
data = ""
address_data = ""
if static_addr:
address_data += " address %s\n" % static_addr.ip
- address_data += " netmask %s\n" % static_addr.netmask
+ if ip_version == 6:
+ address_data += " netmask %s\n" % static_addr.prefixlen
+ else:
+ address_data += " netmask %s\n" % static_addr.netmask
else:
v4_addresses = interface.v4_addresses()
if v4_addresses:
- data += self._add_common(interface, v4_addresses[0])
+ for v4_address in v4_addresses:
+ data += self._add_common(interface, v4_address)
v6_addresses = interface.v6_addresses()
if v6_addresses:
- data += self._add_common(interface, v6_addresses[0])
+ for v6_address in v6_addresses:
+ data += self._add_common(interface, v6_address, 6)
if data:
return data