From: Yu Watanabe Date: Tue, 7 Nov 2023 18:49:12 +0000 (+0900) Subject: network-generator: relax requirement for peer address, route destination, and gateway X-Git-Tag: v255-rc2~92^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=13a462b9d5dc9ccbbabdf8a37fd4b97c2e048d43;p=thirdparty%2Fsystemd.git network-generator: relax requirement for peer address, route destination, and gateway No functional changes, as the caller already sets them. --- diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c index 9bc7aa19eb6..3a067004dd8 100644 --- a/src/network/generator/network-generator.c +++ b/src/network/generator/network-generator.c @@ -119,7 +119,7 @@ static int address_new(Network *network, int family, unsigned char prefixlen, .family = family, .prefixlen = prefixlen, .address = *addr, - .peer = *peer, + .peer = peer ? *peer : IN_ADDR_NULL, }; LIST_PREPEND(addresses, network->addresses, address); @@ -146,6 +146,8 @@ static int route_new(Network *network, int family, unsigned char prefixlen, Route *route; assert(network); + assert(IN_SET(family, AF_INET, AF_INET6)); + assert(dest || gateway); route = new(Route, 1); if (!route) @@ -155,7 +157,7 @@ static int route_new(Network *network, int family, unsigned char prefixlen, .family = family, .prefixlen = prefixlen, .dest = dest ? *dest : IN_ADDR_NULL, - .gateway = *gateway, + .gateway = gateway ? *gateway : IN_ADDR_NULL, }; LIST_PREPEND(routes, network->routes, route); @@ -426,7 +428,8 @@ static int network_set_route(Context *context, const char *ifname, int family, u Network *network; int r; - if (!in_addr_is_set(family, gateway)) + if (!(dest && in_addr_is_set(family, dest)) && + !(gateway && in_addr_is_set(family, gateway))) return 0; network = network_get(context, ifname); @@ -1150,8 +1153,9 @@ static int route_dump(Route *route, FILE *f) { if (in_addr_is_set(route->family, &route->dest)) fprintf(f, "Destination=%s\n", IN_ADDR_PREFIX_TO_STRING(route->family, &route->dest, route->prefixlen)); - fprintf(f, "Gateway=%s\n", - IN_ADDR_TO_STRING(route->family, &route->gateway)); + if (in_addr_is_set(route->family, &route->gateway)) + fprintf(f, "Gateway=%s\n", + IN_ADDR_TO_STRING(route->family, &route->gateway)); return 0; }