Fix CreateEndpoint

pull/8/head
Jack O'Sullivan 5 years ago
parent a7eb94c9fa
commit 60df595be3

@ -79,7 +79,7 @@ def create_endpoint():
req_iface = req['Interface']
bridge = net_bridge(req['NetworkID'])
bridge_nets = iface_nets(bridge)
bridge_addrs = iface_addrs(bridge)
if_host, if_container = veth_pair(req['EndpointID'])
logger.info(f'creating veth pair {if_host} <=> {if_container}')
@ -107,16 +107,21 @@ def create_endpoint():
k = 'AddressIPv6' if type_ == 'v6' else 'Address'
if k in req_iface and req_iface[k]:
a = ipaddress.ip_address(req_iface[k])
net = next(filter(lambda n: a in n, bridge_nets), None)
net = None
for addr in bridge_addrs:
if a == addr.ip:
raise NetDhcpError(400, f'Address {a} is already in use on bridge {bridge.ifname}')
if a in addr.network:
net = addr.network
if not net:
raise NetDhcpError(400, f'No suitable network found for {type_} address {a} on bridge {bridge.ifname}')
to_add = f'{a}/{net.prefixlen}'
logger.info(f'Adding address {a}/{net.prefixlen} to {if_container}')
logger.info(f'Adding address {a}/{net.prefixlen} to {if_container.ifname}')
(if_container
.add_ip(to_add)
.commit())
else:
elif type == 'v4':
raise NetDhcpError(400, f'DHCP{type_} is currently unsupported')
try_addr('v4')
try_addr('v6')

Loading…
Cancel
Save