network: use structured initializers
This commit is contained in:
parent
1a75764a32
commit
17f9c355d5
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue