Skip to content

Commit dca63b5

Browse files
authored
Merge pull request systemd#17474 from yuwata/network-drop-link-deserialization-logic
network: drop link deserialization logic
2 parents 0d5eb02 + 61eb77c commit dca63b5

File tree

12 files changed

+86
-434
lines changed

12 files changed

+86
-434
lines changed

src/network/networkd-address.c

Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -537,7 +537,7 @@ static bool link_is_static_address_configured(const Link *link, const Address *a
537537
return false;
538538
}
539539

540-
static bool link_address_is_dynamic(const Link *link, const Address *address) {
540+
bool link_address_is_dynamic(const Link *link, const Address *address) {
541541
Route *route;
542542

543543
assert(link);
@@ -1257,60 +1257,6 @@ int manager_rtnl_process_address(sd_netlink *rtnl, sd_netlink_message *message,
12571257
return 1;
12581258
}
12591259

1260-
int link_serialize_addresses(Link *link, FILE *f) {
1261-
bool space = false;
1262-
Address *a;
1263-
1264-
assert(link);
1265-
1266-
fputs("ADDRESSES=", f);
1267-
SET_FOREACH(a, link->addresses) {
1268-
_cleanup_free_ char *address_str = NULL;
1269-
1270-
if (in_addr_to_string(a->family, &a->in_addr, &address_str) < 0)
1271-
continue;
1272-
1273-
fprintf(f, "%s%s/%u", space ? " " : "", address_str, a->prefixlen);
1274-
space = true;
1275-
}
1276-
fputc('\n', f);
1277-
1278-
return 0;
1279-
}
1280-
1281-
int link_deserialize_addresses(Link *link, const char *addresses) {
1282-
int r;
1283-
1284-
assert(link);
1285-
1286-
for (const char *p = addresses;; ) {
1287-
_cleanup_(address_freep) Address *tmp = NULL;
1288-
_cleanup_free_ char *address_str = NULL;
1289-
1290-
r = extract_first_word(&p, &address_str, NULL, 0);
1291-
if (r < 0)
1292-
return log_link_debug_errno(link, r, "Failed to parse ADDRESSES=: %m");
1293-
if (r == 0)
1294-
return 0;
1295-
1296-
r = address_new(&tmp);
1297-
if (r < 0)
1298-
return log_oom();
1299-
1300-
r = in_addr_prefix_from_string_auto(address_str, &tmp->family, &tmp->in_addr, &tmp->prefixlen);
1301-
if (r < 0) {
1302-
log_link_debug_errno(link, r, "Failed to parse address, ignoring: %s", address_str);
1303-
continue;
1304-
}
1305-
1306-
r = address_add(link, tmp, NULL);
1307-
if (r < 0)
1308-
log_link_debug_errno(link, r, "Failed to add address %s, ignoring: %m", address_str);
1309-
}
1310-
1311-
return 0;
1312-
}
1313-
13141260
static void static_address_on_acd(sd_ipv4acd *acd, int event, void *userdata) {
13151261
_cleanup_free_ char *pretty = NULL;
13161262
Address *address;

src/network/networkd-address.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ DEFINE_NETWORK_SECTION_FUNCTIONS(Address, address_free);
6262
int link_set_addresses(Link *link);
6363
int link_drop_addresses(Link *link);
6464
int link_drop_foreign_addresses(Link *link);
65-
int link_serialize_addresses(Link *link, FILE *f);
66-
int link_deserialize_addresses(Link *link, const char *addresses);
65+
bool link_address_is_dynamic(const Link *link, const Address *address);
6766

6867
void ipv4_dad_unref(Link *link);
6968
int ipv4_dad_stop(Link *link);

src/network/networkd-dhcp4.c

Lines changed: 62 additions & 132 deletions
Large diffs are not rendered by default.

src/network/networkd-dhcp4.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ typedef enum DHCPClientIdentifier {
2020
int dhcp4_configure(Link *link);
2121
int dhcp4_update_mac(Link *link);
2222

23-
int link_deserialize_dhcp4(Link *link, const char *dhcp4_address);
24-
2523
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_client_identifier);
2624
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_acl_ip_address);
2725
CONFIG_PARSER_PROTOTYPE(config_parse_dhcp_max_attempts);

src/network/networkd-ipv4ll.c

Lines changed: 9 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -142,25 +142,6 @@ static void ipv4ll_handler(sd_ipv4ll *ll, int event, void *userdata) {
142142
}
143143
}
144144

145-
static int ipv4ll_init(Link *link) {
146-
int r;
147-
148-
assert(link);
149-
150-
if (link->ipv4ll)
151-
return 0;
152-
153-
r = sd_ipv4ll_new(&link->ipv4ll);
154-
if (r < 0)
155-
return r;
156-
157-
r = sd_ipv4ll_attach_event(link->ipv4ll, link->manager->event, 0);
158-
if (r < 0)
159-
return r;
160-
161-
return 0;
162-
}
163-
164145
int ipv4ll_configure(Link *link) {
165146
uint64_t seed;
166147
int r;
@@ -170,9 +151,15 @@ int ipv4ll_configure(Link *link) {
170151
if (!link_ipv4ll_enabled(link, ADDRESS_FAMILY_IPV4 | ADDRESS_FAMILY_FALLBACK_IPV4))
171152
return 0;
172153

173-
r = ipv4ll_init(link);
174-
if (r < 0)
175-
return r;
154+
if (!link->ipv4ll) {
155+
r = sd_ipv4ll_new(&link->ipv4ll);
156+
if (r < 0)
157+
return r;
158+
159+
r = sd_ipv4ll_attach_event(link->ipv4ll, link->manager->event, 0);
160+
if (r < 0)
161+
return r;
162+
}
176163

177164
if (link->sd_device &&
178165
net_get_unique_predictable_data(link->sd_device, true, &seed) >= 0) {
@@ -224,52 +211,6 @@ int ipv4ll_update_mac(Link *link) {
224211
return 0;
225212
}
226213

227-
int link_serialize_ipv4ll(Link *link, FILE *f) {
228-
struct in_addr address;
229-
int r;
230-
231-
assert(link);
232-
233-
if (!link->ipv4ll)
234-
return 0;
235-
236-
r = sd_ipv4ll_get_address(link->ipv4ll, &address);
237-
if (r == -ENOENT)
238-
return 0;
239-
if (r < 0)
240-
return r;
241-
242-
fputs("IPV4LL_ADDRESS=", f);
243-
serialize_in_addrs(f, &address, 1, false, NULL);
244-
fputc('\n', f);
245-
246-
return 0;
247-
}
248-
249-
int link_deserialize_ipv4ll(Link *link, const char *ipv4ll_address) {
250-
union in_addr_union address;
251-
int r;
252-
253-
assert(link);
254-
255-
if (isempty(ipv4ll_address))
256-
return 0;
257-
258-
r = in_addr_from_string(AF_INET, ipv4ll_address, &address);
259-
if (r < 0)
260-
return log_link_debug_errno(link, r, "Failed to parse IPv4LL address: %s", ipv4ll_address);
261-
262-
r = ipv4ll_init(link);
263-
if (r < 0)
264-
return log_link_debug_errno(link, r, "Failed to initialize IPv4LL client: %m");
265-
266-
r = sd_ipv4ll_set_address(link->ipv4ll, &address.in);
267-
if (r < 0)
268-
return log_link_debug_errno(link, r, "Failed to set initial IPv4LL address %s: %m", ipv4ll_address);
269-
270-
return 0;
271-
}
272-
273214
int config_parse_ipv4ll(
274215
const char* unit,
275216
const char *filename,

src/network/networkd-ipv4ll.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,5 @@ typedef struct Link Link;
99

1010
int ipv4ll_configure(Link *link);
1111
int ipv4ll_update_mac(Link *link);
12-
int link_serialize_ipv4ll(Link *link, FILE *f);
13-
int link_deserialize_ipv4ll(Link *link, const char *ipv4ll_address);
1412

1513
CONFIG_PARSER_PROTOTYPE(config_parse_ipv4ll);

src/network/networkd-link.c

Lines changed: 0 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -2415,69 +2415,6 @@ int link_initialized(Link *link, sd_device *device) {
24152415
return 0;
24162416
}
24172417

2418-
static int link_load(Link *link) {
2419-
_cleanup_free_ char *network_file = NULL,
2420-
*addresses = NULL,
2421-
*routes = NULL,
2422-
*dhcp4_address = NULL,
2423-
*ipv4ll_address = NULL;
2424-
int r;
2425-
2426-
assert(link);
2427-
2428-
r = parse_env_file(NULL, link->state_file,
2429-
"NETWORK_FILE", &network_file,
2430-
"ADDRESSES", &addresses,
2431-
"ROUTES", &routes,
2432-
"DHCP4_ADDRESS", &dhcp4_address,
2433-
"IPV4LL_ADDRESS", &ipv4ll_address);
2434-
if (r < 0 && r != -ENOENT)
2435-
return log_link_error_errno(link, r, "Failed to read %s: %m", link->state_file);
2436-
2437-
if (network_file) {
2438-
Network *network;
2439-
char *suffix;
2440-
2441-
/* drop suffix */
2442-
suffix = strrchr(network_file, '.');
2443-
if (!suffix) {
2444-
log_link_debug(link, "Failed to get network name from %s", network_file);
2445-
goto network_file_fail;
2446-
}
2447-
*suffix = '\0';
2448-
2449-
r = network_get_by_name(link->manager, basename(network_file), &network);
2450-
if (r < 0) {
2451-
log_link_debug_errno(link, r, "Failed to get network %s: %m", basename(network_file));
2452-
goto network_file_fail;
2453-
}
2454-
2455-
r = network_apply(network, link);
2456-
if (r < 0)
2457-
return log_link_error_errno(link, r, "Failed to apply network %s: %m", basename(network_file));
2458-
}
2459-
2460-
network_file_fail:
2461-
2462-
r = link_deserialize_addresses(link, addresses);
2463-
if (r < 0)
2464-
log_link_warning_errno(link, r, "Failed to load addresses from %s, ignoring: %m", link->state_file);
2465-
2466-
r = link_deserialize_routes(link, routes);
2467-
if (r < 0)
2468-
log_link_warning_errno(link, r, "Failed to load routes from %s, ignoring: %m", link->state_file);
2469-
2470-
r = link_deserialize_dhcp4(link, dhcp4_address);
2471-
if (r < 0)
2472-
log_link_warning_errno(link, r, "Failed to load DHCPv4 address from %s, ignoring: %m", link->state_file);
2473-
2474-
r = link_deserialize_ipv4ll(link, ipv4ll_address);
2475-
if (r < 0)
2476-
log_link_warning_errno(link, r, "Failed to load IPv4LL address from %s, ignoring: %m", link->state_file);
2477-
2478-
return 0;
2479-
}
2480-
24812418
int link_add(Manager *m, sd_netlink_message *message, Link **ret) {
24822419
_cleanup_(sd_device_unrefp) sd_device *device = NULL;
24832420
char ifindex_str[2 + DECIMAL_STR_MAX(int)];
@@ -2497,10 +2434,6 @@ int link_add(Manager *m, sd_netlink_message *message, Link **ret) {
24972434

24982435
log_link_debug(link, "Link %d added", link->ifindex);
24992436

2500-
r = link_load(link);
2501-
if (r < 0)
2502-
return r;
2503-
25042437
if (path_is_read_only_fs("/sys") <= 0) {
25052438
/* udev should be around */
25062439
sprintf(ifindex_str, "n%d", link->ifindex);
@@ -3146,18 +3079,6 @@ int link_save(Link *link) {
31463079
fputs_with_space(f, n, NULL, &space);
31473080
fputc('\n', f);
31483081
}
3149-
3150-
/************************************************************/
3151-
3152-
r = link_serialize_addresses(link, f);
3153-
if (r < 0)
3154-
goto fail;
3155-
3156-
/************************************************************/
3157-
3158-
r = link_serialize_routes(link, f);
3159-
if (r < 0)
3160-
goto fail;
31613082
}
31623083

31633084
print_link_hashmap(f, "CARRIER_BOUND_TO=", link->bound_to_links);
@@ -3174,10 +3095,6 @@ int link_save(Link *link) {
31743095
} else
31753096
(void) unlink(link->lease_file);
31763097

3177-
r = link_serialize_ipv4ll(link, f);
3178-
if (r < 0)
3179-
goto fail;
3180-
31813098
r = link_serialize_dhcp6_client(link, f);
31823099
if (r < 0)
31833100
goto fail;

0 commit comments

Comments
 (0)