From: Yu Watanabe Date: Thu, 28 Feb 2019 07:18:57 +0000 (+0900) Subject: network: use ltype to determine netdev kind in config_parse_stacked_netdev() X-Git-Tag: v242-rc1~150^2~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=95dba435427f989717e02ead93fe0a3199efd2b0;p=thirdparty%2Fsystemd.git network: use ltype to determine netdev kind in config_parse_stacked_netdev() --- diff --git a/src/network/networkd-network-gperf.gperf b/src/network/networkd-network-gperf.gperf index 51123d12ef0..43ee17fe355 100644 --- a/src/network/networkd-network-gperf.gperf +++ b/src/network/networkd-network-gperf.gperf @@ -40,11 +40,11 @@ Link.RequiredForOnline, config_parse_bool, Network.Description, config_parse_string, 0, offsetof(Network, description) Network.Bridge, config_parse_ifname, 0, offsetof(Network, bridge_name) Network.Bond, config_parse_ifname, 0, offsetof(Network, bond_name) -Network.VLAN, config_parse_stacked_netdev, 0, offsetof(Network, stacked_netdev_names) -Network.MACVLAN, config_parse_stacked_netdev, 0, offsetof(Network, stacked_netdev_names) -Network.MACVTAP, config_parse_stacked_netdev, 0, offsetof(Network, stacked_netdev_names) -Network.IPVLAN, config_parse_stacked_netdev, 0, offsetof(Network, stacked_netdev_names) -Network.VXLAN, config_parse_stacked_netdev, 0, offsetof(Network, stacked_netdev_names) +Network.VLAN, config_parse_stacked_netdev, NETDEV_KIND_VLAN, offsetof(Network, stacked_netdev_names) +Network.MACVLAN, config_parse_stacked_netdev, NETDEV_KIND_MACVLAN, offsetof(Network, stacked_netdev_names) +Network.MACVTAP, config_parse_stacked_netdev, NETDEV_KIND_MACVTAP, offsetof(Network, stacked_netdev_names) +Network.IPVLAN, config_parse_stacked_netdev, NETDEV_KIND_IPVLAN, offsetof(Network, stacked_netdev_names) +Network.VXLAN, config_parse_stacked_netdev, NETDEV_KIND_VXLAN, offsetof(Network, stacked_netdev_names) Network.Tunnel, config_parse_stacked_netdev, _NETDEV_KIND_TUNNEL, offsetof(Network, stacked_netdev_names) Network.VRF, config_parse_ifname, 0, offsetof(Network, vrf_name) Network.DHCP, config_parse_dhcp, 0, offsetof(Network, dhcp) diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 5f12df907af..1e5684144dc 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -732,35 +732,18 @@ int config_parse_stacked_netdev(const char *unit, const char *rvalue, void *data, void *userdata) { - _cleanup_free_ char *kind_string = NULL, *name = NULL; + _cleanup_free_ char *name = NULL; + NetDevKind kind = ltype; Hashmap **h = data; - NetDevKind kind; - char *p; int r; assert(filename); assert(lvalue); assert(rvalue); assert(data); - - if (ltype == _NETDEV_KIND_TUNNEL) - kind = _NETDEV_KIND_TUNNEL; - else { - kind_string = strdup(lvalue); - if (!kind_string) - return log_oom(); - - /* the keys are CamelCase versions of the kind */ - for (p = kind_string; *p; p++) - *p = tolower(*p); - - kind = netdev_kind_from_string(kind_string); - if (kind < 0 || IN_SET(kind, NETDEV_KIND_BRIDGE, NETDEV_KIND_BOND, NETDEV_KIND_VRF)) { - log_syntax(unit, LOG_ERR, filename, line, 0, - "Invalid NetDev kind: %s", lvalue); - return 0; - } - } + assert(IN_SET(kind, + NETDEV_KIND_VLAN, NETDEV_KIND_MACVLAN, NETDEV_KIND_MACVTAP, + NETDEV_KIND_IPVLAN, NETDEV_KIND_VXLAN, _NETDEV_KIND_TUNNEL)); if (!ifname_valid(rvalue)) { log_syntax(unit, LOG_ERR, filename, line, 0,