X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fnetwork%2Fnetworkd-network.c;h=075596af6bc7f318d22cd94c753d9d2d1e058041;hb=85bd849f09aceb7f972a0697494ea22b2247a5d7;hp=6cfae75029036a0eab20df87a3731ef5384ef6c8;hpb=e1853b00ef7cb56cafd908327dd44b3ab48b402c;p=elogind.git diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 6cfae7502..075596af6 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -90,7 +90,14 @@ static int network_load_one(Manager *manager, const char *filename) { network->llmnr = LLMNR_SUPPORT_YES; r = config_parse(NULL, filename, file, - "Match\0Network\0Address\0Route\0DHCP\0DHCPv4\0BridgePort\0", + "Match\0" + "Link\0" + "Network\0" + "Address\0" + "Route\0" + "DHCP\0" + "DHCPv4\0" + "BridgePort\0", config_item_perf_lookup, network_network_gperf_lookup, false, false, true, network); if (r < 0) @@ -163,6 +170,8 @@ void network_free(Network *network) { free(network->description); free(network->dhcp_vendor_class_identifier); + free(network->mac); + strv_free(network->ntp); strv_free(network->dns); strv_free(network->domains); @@ -217,8 +226,22 @@ int network_get(Manager *manager, struct udev_device *device, udev_device_get_property_value(device, "ID_NET_DRIVER"), udev_device_get_devtype(device), ifname)) { - log_debug("%-*s: found matching network '%s'", IFNAMSIZ, ifname, - network->filename); + if (network->match_name) { + const char *attr; + uint8_t name_assign_type = NET_NAME_UNKNOWN; + + attr = udev_device_get_sysattr_value(device, "name_assign_type"); + if (attr) + (void)safe_atou8(attr, &name_assign_type); + + if (name_assign_type == NET_NAME_ENUM) + log_warning("%-*s: found matching network '%s', based on potentially unpredictable ifname", + IFNAMSIZ, ifname, network->filename); + else + log_debug("%-*s: found matching network '%s'", IFNAMSIZ, ifname, network->filename); + } else + log_debug("%-*s: found matching network '%s'", IFNAMSIZ, ifname, network->filename); + *ret = network; return 0; }