diff --git a/net-dhcp/network.py b/net-dhcp/network.py index 6d91bc2..dded796 100644 --- a/net-dhcp/network.py +++ b/net-dhcp/network.py @@ -97,16 +97,13 @@ def create_endpoint(): } try: - if 'MacAddress' in req_iface and req_iface['MacAddress']: - (if_container - .set('address', req_iface['MacAddress']) - .commit()) - else: + if 'MacAddress' not in req_iface or not req_iface['MacAddress']: res_iface['MacAddress'] = if_container['address'] def try_addr(type_): k = 'AddressIPv6' if type_ == 'v6' else 'Address' if k in req_iface and req_iface[k]: + # Just validate the address, Docker will add it to the interface for us a = ipaddress.ip_address(req_iface[k]) net = None for addr in bridge_addrs: @@ -119,9 +116,6 @@ def create_endpoint(): to_add = f'{a}/{net.prefixlen}' logger.info('Adding address %s to %s', to_add, if_container['ifname']) - (if_container - .add_ip(to_add) - .commit()) elif type_ == 'v4': raise NetDhcpError(400, f'DHCP{type_} is currently unsupported') try_addr('v4') @@ -193,32 +187,20 @@ def join(): }, 'StaticRoutes': [] } - nonlink = [] for route in bridge.routes: # TODO: IPv6 routes if route['type'] != rtypes['RTN_UNICAST'] or route['family'] != socket.AF_INET: continue - logging.info(route) if route['dst'] == '' and 'Gateway' not in res: res['Gateway'] = route['gateway'] continue - - dst = f'{route["dst"]}/{route["dst_len"]}' - if route['gateway']: - nonlink.append({ - 'Destination': dst, + elif route['gateway']: + res['StaticRoutes'].append({ + 'Destination': f'{route["dst"]}/{route["dst_len"]}', 'RouteType': 0, 'NextHop': route['gateway'] }) - else: - # on-link route - res['StaticRoutes'].append({ - 'Destination': dst, - 'RouteType': 1 - }) - # we need to add the on-link routes first - res['StaticRoutes'] += nonlink logger.info(res) return jsonify(res)