LIST_HEAD_INIT(network->static_addresses);
LIST_HEAD_INIT(network->static_routes);
+ LIST_HEAD_INIT(network->static_fdb_entries);
network->stacked_netdevs = hashmap_new(&string_hash_ops);
if (!network->stacked_netdevs)
if (!network->routes_by_section)
return log_oom();
+ network->fdb_entries_by_section = hashmap_new(NULL);
+ if (!network->fdb_entries_by_section)
+ return log_oom();
+
network->filename = strdup(filename);
if (!network->filename)
return log_oom();
"Route\0"
"DHCP\0"
"DHCPv4\0"
- "BridgePort\0",
+ "Bridge\0"
+ "BridgeFDB\0",
config_item_perf_lookup, network_network_gperf_lookup,
false, false, true, network);
if (r < 0)
NetDev *netdev;
Route *route;
Address *address;
+ FdbEntry *fdb_entry;
Iterator i;
if (!network)
while ((address = network->static_addresses))
address_free(address);
+ while ((fdb_entry = network->static_fdb_entries))
+ fdb_entry_free(fdb_entry);
+
hashmap_free(network->addresses_by_section);
hashmap_free(network->routes_by_section);
+ hashmap_free(network->fdb_entries_by_section);
if (network->manager && network->manager->networks)
LIST_REMOVE(networks, network->manager->networks, network);
udev_device_get_property_value(device, "ID_NET_DRIVER"),
udev_device_get_devtype(device),
ifname)) {
- const char *attr;
- uint8_t name_assign_type = NET_NAME_UNKNOWN;
-
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 unstable ifname",
+ 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);