#include <net/if.h>
#include "networkd.h"
+#include "networkd-netdev.h"
#include "network-internal.h"
#include "path-util.h"
#include "conf-files.h"
return -errno;
}
- if (null_or_empty_path(filename)) {
- log_debug("skipping empty file: %s", filename);
+ if (null_or_empty_fd(fileno(file))) {
+ log_debug("Skipping empty file: %s", filename);
return 0;
}
if (!network->vlans)
return log_oom();
- network->macvlans = hashmap_new(uint64_hash_func, uint64_compare_func);
+ network->macvlans = hashmap_new(string_hash_func, string_compare_func);
if (!network->macvlans)
return log_oom();
- network->vxlans = hashmap_new(uint64_hash_func, uint64_compare_func);
+ network->vxlans = hashmap_new(string_hash_func, string_compare_func);
if (!network->vxlans)
return log_oom();
network->dhcp_dns = true;
network->dhcp_hostname = true;
network->dhcp_domainname = true;
-
- r = config_parse(NULL, filename, file, "Match\0Network\0Address\0Route\0DHCPv4\0", config_item_perf_lookup,
- (void*) network_network_gperf_lookup, false, false, network);
- if (r < 0) {
- log_warning("Could not parse config file %s: %s", filename, strerror(-r));
+ network->dhcp_routes = true;
+ network->dhcp_sendhost = true;
+
+ r = config_parse(NULL, filename, file,
+ "Match\0Network\0Address\0Route\0DHCP\0DHCPv4\0",
+ config_item_perf_lookup, network_network_gperf_lookup,
+ false, false, true, network);
+ if (r < 0)
return r;
- }
LIST_PREPEND(networks, manager->networks, network);
free(network->match_name);
free(network->description);
+ free(network->dhcp_vendor_class_identifier);
while ((address = network->ntp)) {
LIST_REMOVE(addresses, network->ntp, address);
netdev_unref(network->bond);
+ netdev_unref(network->tunnel);
+
HASHMAP_FOREACH(netdev, network->vlans, i)
netdev_unref(netdev);
hashmap_free(network->vlans);
break;
case NETDEV_KIND_VLAN:
- r = hashmap_put(network->vlans, &netdev->vlanid, netdev);
+ r = hashmap_put(network->vlans, netdev->ifname, netdev);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "Can not add VLAN to network: %s", rvalue);
+ "Can not add VLAN '%s' to network: %s",
+ rvalue, strerror(-r));
return 0;
}
r = hashmap_put(network->macvlans, netdev->ifname, netdev);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "Can not add MACVLAN to network: %s", rvalue);
+ "Can not add MACVLAN '%s' to network: %s",
+ rvalue, strerror(-r));
return 0;
}
r = hashmap_put(network->vxlans, netdev->ifname, netdev);
if (r < 0) {
log_syntax(unit, LOG_ERR, filename, line, EINVAL,
- "Can not add VXLAN to network: %s", rvalue);
+ "Can not add VXLAN '%s' to network: %s",
+ rvalue, strerror(-r));
return 0;
}