diff --git a/branches/ucs-3.2/ucs-3.2-1/base/univention-base-files/conffiles/etc/network/interfaces.d/10-default b/branches/ucs-3.2/ucs-3.2-1/base/univention-base-files/conffiles/etc/network/interfaces.d/10-default index 44bdbdb..fc25e69 100644 --- a/branches/ucs-3.2/ucs-3.2-1/base/univention-base-files/conffiles/etc/network/interfaces.d/10-default +++ b/branches/ucs-3.2/ucs-3.2-1/base/univention-base-files/conffiles/etc/network/interfaces.d/10-default @@ -69,18 +69,19 @@ def ipv6(interfaces): # Validate addresses interface_addresses = {} - for iface, name in interfaces.ipv6_interfaces: - addr = iface.ipv6_address(name) - if addr is False: - print '# ERROR: invalid IPv6 address in interfaces/%s/ipv6/%s/*' % \ - (iface.name, name) - continue - addresses = interface_addresses.setdefault(iface.name, set()) - if addr in addresses: - print '# ERROR: duplicate IPv6 address in interfaces/%s/ipv6/%s/*' % \ - (iface.name, name) - continue - addresses.add(addr) + for _name, iface in interfaces.all_interfaces: + for name in iface.ipv6_names: + addr = iface.ipv6_address(name) + if not addr: + print '# ERROR: incomplete/invalid IPv6 address in interfaces/%s/ipv6/%s/*' % \ + (iface.name, name) + continue + addresses = interface_addresses.setdefault(iface.name, set()) + if addr.ip in addresses: + print '# ERROR: duplicate IPv6 address in interfaces/%s/ipv6/%s/*' % \ + (iface.name, name) + continue + addresses.add(addr.ip) # configure interface for iface, names in groupby(interfaces.ipv6_interfaces, itemgetter(0)): @@ -88,8 +89,6 @@ def ipv6(interfaces): addresses = interface_addresses[iface.name] except KeyError: continue # validation failed - if not addresses: - continue # validation failed auto(iface.name, iface.start) print 'iface %s inet6 static' % (iface.name,) @@ -97,7 +96,7 @@ def ipv6(interfaces): for i, (iface, name) in enumerate(names): addr = iface.ipv6_address(name) try: - addresses.remove(addr) + addresses.remove(addr.ip) except KeyError: continue # invalid or duplicate print '# %s' % (name,) @@ -105,8 +104,8 @@ def ipv6(interfaces): print '\taddress %s' % (addr.ip,) print '\tnetmask %s' % (addr.prefixlen,) else: - print '\tup ip -6 addr add %s dev %s' % (addr.ip, iface.name) - print '\tdown ip -6 addr del %s dev %s' % (addr.ip, iface.name) + print '\tup ip -6 addr add %s dev %s' % (addr, iface.name) + print '\tdown ip -6 addr del %s dev %s' % (addr, iface.name) # check if gateway is local on this interface if gateway: if addr.prefixlen == addr.max_prefixlen and \