From 17f9c355d578e355cceb57786ca13288501729fd Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 12 Nov 2018 14:55:52 +0900 Subject: [PATCH] network: use structured initializers --- src/network/netdev/netdev.c | 18 ++-- src/network/networkd-address-pool.c | 12 ++- src/network/networkd-address.c | 12 ++- src/network/networkd-ipv6-proxy-ndp.c | 9 +- src/network/networkd-link.c | 17 ++-- src/network/networkd-network.c | 129 ++++++++++++-------------- src/network/networkd-route.c | 18 ++-- 7 files changed, 111 insertions(+), 104 deletions(-) diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index f9a2246d08..4c683874eb 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -356,12 +356,14 @@ static int netdev_enslave(NetDev *netdev, Link *link, sd_netlink_message_handler /* the netdev is not yet read, save this request for when it is */ netdev_join_callback *cb; - cb = new0(netdev_join_callback, 1); + cb = new(netdev_join_callback, 1); if (!cb) return log_oom(); - cb->callback = callback; - cb->link = link_ref(link); + *cb = (netdev_join_callback) { + .callback = callback, + .link = link_ref(link), + }; LIST_PREPEND(callbacks, netdev->callbacks, cb); @@ -651,13 +653,15 @@ int netdev_load_one(Manager *manager, const char *filename) { return 0; } - netdev_raw = new0(NetDev, 1); + netdev_raw = new(NetDev, 1); if (!netdev_raw) return log_oom(); - netdev_raw->n_ref = 1; - netdev_raw->kind = _NETDEV_KIND_INVALID; - netdev_raw->state = _NETDEV_STATE_INVALID; /* an invalid state means done() of the implementation won't be called on destruction */ + *netdev_raw = (NetDev) { + .n_ref = 1, + .kind = _NETDEV_KIND_INVALID, + .state = _NETDEV_STATE_INVALID, /* an invalid state means done() of the implementation won't be called on destruction */ + }; dropin_dirname = strjoina(basename(filename), ".d"); r = config_parse_many(filename, network_dirs, dropin_dirname, diff --git a/src/network/networkd-address-pool.c b/src/network/networkd-address-pool.c index 2e35f77093..1650515064 100644 --- a/src/network/networkd-address-pool.c +++ b/src/network/networkd-address-pool.c @@ -19,14 +19,16 @@ int address_pool_new( assert(ret); assert(u); - p = new0(AddressPool, 1); + p = new(AddressPool, 1); if (!p) return -ENOMEM; - p->manager = m; - p->family = family; - p->prefixlen = prefixlen; - p->in_addr = *u; + *p = (AddressPool) { + .manager = m, + .family = family, + .prefixlen = prefixlen, + .in_addr = *u, + }; LIST_PREPEND(address_pools, m->address_pools, p); diff --git a/src/network/networkd-address.c b/src/network/networkd-address.c index 1f722aca52..66e00493d6 100644 --- a/src/network/networkd-address.c +++ b/src/network/networkd-address.c @@ -22,14 +22,16 @@ int address_new(Address **ret) { _cleanup_(address_freep) Address *address = NULL; - address = new0(Address, 1); + address = new(Address, 1); if (!address) return -ENOMEM; - address->family = AF_UNSPEC; - address->scope = RT_SCOPE_UNIVERSE; - address->cinfo.ifa_prefered = CACHE_INFO_INFINITY_LIFE_TIME; - address->cinfo.ifa_valid = CACHE_INFO_INFINITY_LIFE_TIME; + *address = (Address) { + .family = AF_UNSPEC, + .scope = RT_SCOPE_UNIVERSE, + .cinfo.ifa_prefered = CACHE_INFO_INFINITY_LIFE_TIME, + .cinfo.ifa_valid = CACHE_INFO_INFINITY_LIFE_TIME, + }; *ret = TAKE_PTR(address); diff --git a/src/network/networkd-ipv6-proxy-ndp.c b/src/network/networkd-ipv6-proxy-ndp.c index 6286b37deb..8d58406c34 100644 --- a/src/network/networkd-ipv6-proxy-ndp.c +++ b/src/network/networkd-ipv6-proxy-ndp.c @@ -57,17 +57,18 @@ int ipv6_proxy_ndp_address_new_static(Network *network, IPv6ProxyNDPAddress **re assert(ret); /* allocate space for IPv6ProxyNDPAddress entry */ - ipv6_proxy_ndp_address = new0(IPv6ProxyNDPAddress, 1); + ipv6_proxy_ndp_address = new(IPv6ProxyNDPAddress, 1); if (!ipv6_proxy_ndp_address) return -ENOMEM; - ipv6_proxy_ndp_address->network = network; + *ipv6_proxy_ndp_address = (IPv6ProxyNDPAddress) { + .network = network, + }; LIST_PREPEND(ipv6_proxy_ndp_addresses, network->ipv6_proxy_ndp_addresses, ipv6_proxy_ndp_address); network->n_ipv6_proxy_ndp_addresses++; - *ret = ipv6_proxy_ndp_address; - ipv6_proxy_ndp_address = NULL; + *ret = TAKE_PTR(ipv6_proxy_ndp_address); return 0; } diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c index 1b233507e7..1ccaf0e15b 100644 --- a/src/network/networkd-link.c +++ b/src/network/networkd-link.c @@ -449,16 +449,19 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) { if (r < 0) return r; - link = new0(Link, 1); + link = new(Link, 1); if (!link) return -ENOMEM; - link->n_ref = 1; - link->manager = manager; - link->state = LINK_STATE_PENDING; - link->rtnl_extended_attrs = true; - link->ifindex = ifindex; - link->iftype = iftype; + *link = (Link) { + .n_ref = 1, + .manager = manager, + .state = LINK_STATE_PENDING, + .rtnl_extended_attrs = true, + .ifindex = ifindex, + .iftype = iftype, + }; + link->ifname = strdup(ifname); if (!link->ifname) return -ENOMEM; diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index 8fc9cc6340..85d0c1f54e 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -127,19 +127,71 @@ int network_load_one(Manager *manager, const char *filename) { return 0; } - network = new0(Network, 1); + network = new(Network, 1); if (!network) return log_oom(); - network->manager = manager; + *network = (Network) { + .manager = manager, - LIST_HEAD_INIT(network->static_addresses); - LIST_HEAD_INIT(network->static_routes); - LIST_HEAD_INIT(network->static_fdb_entries); - LIST_HEAD_INIT(network->ipv6_proxy_ndp_addresses); - LIST_HEAD_INIT(network->address_labels); - LIST_HEAD_INIT(network->static_prefixes); - LIST_HEAD_INIT(network->rules); + .required_for_online = true, + .dhcp = ADDRESS_FAMILY_NO, + .dhcp_use_ntp = true, + .dhcp_use_dns = true, + .dhcp_use_hostname = true, + .dhcp_use_routes = true, + /* NOTE: this var might be overwriten by network_apply_anonymize_if_set */ + .dhcp_send_hostname = true, + /* To enable/disable RFC7844 Anonymity Profiles */ + .dhcp_anonymize = false, + .dhcp_route_metric = DHCP_ROUTE_METRIC, + /* NOTE: this var might be overwrite by network_apply_anonymize_if_set */ + .dhcp_client_identifier = DHCP_CLIENT_ID_DUID, + .dhcp_route_table = RT_TABLE_MAIN, + .dhcp_route_table_set = false, + /* NOTE: from man: UseMTU=... Defaults to false*/ + .dhcp_use_mtu = false, + /* NOTE: from man: UseTimezone=... Defaults to "no".*/ + .dhcp_use_timezone = false, + .rapid_commit = true, + + .dhcp_server_emit_dns = true, + .dhcp_server_emit_ntp = true, + .dhcp_server_emit_router = true, + .dhcp_server_emit_timezone = true, + + .router_emit_dns = true, + .router_emit_domains = true, + + .use_bpdu = -1, + .hairpin = -1, + .fast_leave = -1, + .allow_port_to_be_root = -1, + .unicast_flood = -1, + .priority = LINK_BRIDGE_PORT_PRIORITY_INVALID, + + .lldp_mode = LLDP_MODE_ROUTERS_ONLY, + + .llmnr = RESOLVE_SUPPORT_YES, + .mdns = RESOLVE_SUPPORT_NO, + .dnssec_mode = _DNSSEC_MODE_INVALID, + .dns_over_tls_mode = _DNS_OVER_TLS_MODE_INVALID, + + .link_local = ADDRESS_FAMILY_IPV6, + + .ipv6_privacy_extensions = IPV6_PRIVACY_EXTENSIONS_NO, + .ipv6_accept_ra = -1, + .ipv6_dad_transmits = -1, + .ipv6_hop_limit = -1, + .ipv6_proxy_ndp = -1, + .duid.type = _DUID_TYPE_INVALID, + .proxy_arp = -1, + .arp = -1, + .multicast = -1, + .allmulticast = -1, + .ipv6_accept_ra_use_dns = true, + .ipv6_accept_ra_route_table = RT_TABLE_MAIN, + }; network->stacked_netdevs = hashmap_new(&string_hash_ops); if (!network->stacked_netdevs) @@ -183,65 +235,6 @@ int network_load_one(Manager *manager, const char *filename) { *d = '\0'; - network->required_for_online = true; - network->dhcp = ADDRESS_FAMILY_NO; - network->dhcp_use_ntp = true; - network->dhcp_use_dns = true; - network->dhcp_use_hostname = true; - network->dhcp_use_routes = true; - /* NOTE: this var might be overwriten by network_apply_anonymize_if_set */ - network->dhcp_send_hostname = true; - /* To enable/disable RFC7844 Anonymity Profiles */ - network->dhcp_anonymize = false; - network->dhcp_route_metric = DHCP_ROUTE_METRIC; - /* NOTE: this var might be overwrite by network_apply_anonymize_if_set */ - network->dhcp_client_identifier = DHCP_CLIENT_ID_DUID; - network->dhcp_route_table = RT_TABLE_MAIN; - network->dhcp_route_table_set = false; - /* NOTE: from man: UseMTU=... Defaults to false*/ - network->dhcp_use_mtu = false; - /* NOTE: from man: UseTimezone=... Defaults to "no".*/ - network->dhcp_use_timezone = false; - network->rapid_commit = true; - - network->dhcp_server_emit_dns = true; - network->dhcp_server_emit_ntp = true; - network->dhcp_server_emit_router = true; - network->dhcp_server_emit_timezone = true; - - network->router_emit_dns = true; - network->router_emit_domains = true; - - network->use_bpdu = -1; - network->hairpin = -1; - network->fast_leave = -1; - network->allow_port_to_be_root = -1; - network->unicast_flood = -1; - network->priority = LINK_BRIDGE_PORT_PRIORITY_INVALID; - - network->lldp_mode = LLDP_MODE_ROUTERS_ONLY; - - network->llmnr = RESOLVE_SUPPORT_YES; - network->mdns = RESOLVE_SUPPORT_NO; - network->dnssec_mode = _DNSSEC_MODE_INVALID; - network->dns_over_tls_mode = _DNS_OVER_TLS_MODE_INVALID; - - network->link_local = ADDRESS_FAMILY_IPV6; - - network->ipv6_privacy_extensions = IPV6_PRIVACY_EXTENSIONS_NO; - network->ipv6_accept_ra = -1; - network->ipv6_dad_transmits = -1; - network->ipv6_hop_limit = -1; - network->ipv6_proxy_ndp = -1; - network->duid.type = _DUID_TYPE_INVALID; - network->proxy_arp = -1; - network->arp = -1; - network->multicast = -1; - network->allmulticast = -1; - network->ipv6_accept_ra_use_dns = true; - network->ipv6_accept_ra_route_table = RT_TABLE_MAIN; - network->ipv6_mtu = 0; - dropin_dirname = strjoina(network->name, ".network.d"); r = config_parse_many(filename, network_dirs, dropin_dirname, diff --git a/src/network/networkd-route.c b/src/network/networkd-route.c index e8cde66bef..63126b4d13 100644 --- a/src/network/networkd-route.c +++ b/src/network/networkd-route.c @@ -46,17 +46,19 @@ static unsigned routes_max(void) { int route_new(Route **ret) { _cleanup_(route_freep) Route *route = NULL; - route = new0(Route, 1); + route = new(Route, 1); if (!route) return -ENOMEM; - route->family = AF_UNSPEC; - route->scope = RT_SCOPE_UNIVERSE; - route->protocol = RTPROT_UNSPEC; - route->type = RTN_UNICAST; - route->table = RT_TABLE_MAIN; - route->lifetime = USEC_INFINITY; - route->quickack = -1; + *route = (Route) { + .family = AF_UNSPEC, + .scope = RT_SCOPE_UNIVERSE, + .protocol = RTPROT_UNSPEC, + .type = RTN_UNICAST, + .table = RT_TABLE_MAIN, + .lifetime = USEC_INFINITY, + .quickack = -1, + }; *ret = TAKE_PTR(route);