sd-dhcp-client: drop unused legacy code (#42128)
This commit is contained in:
@@ -11,15 +11,6 @@
|
||||
#include "dhcp-client-id-internal.h"
|
||||
#include "dhcp-message.h"
|
||||
#include "dhcp-option.h"
|
||||
#include "list.h"
|
||||
|
||||
struct sd_dhcp_raw_option {
|
||||
LIST_FIELDS(struct sd_dhcp_raw_option, options);
|
||||
|
||||
uint8_t tag;
|
||||
uint8_t length;
|
||||
void *data;
|
||||
};
|
||||
|
||||
struct sd_dhcp_lease {
|
||||
unsigned n_ref;
|
||||
@@ -36,15 +27,12 @@ struct sd_dhcp_lease {
|
||||
/* each 0 if unset */
|
||||
be32_t address;
|
||||
be32_t server_address;
|
||||
be32_t next_server;
|
||||
be32_t subnet_mask;
|
||||
be32_t broadcast;
|
||||
|
||||
struct in_addr *router;
|
||||
size_t router_size;
|
||||
|
||||
bool rapid_commit;
|
||||
|
||||
DHCPServerData servers[_SD_DHCP_LEASE_SERVER_TYPE_MAX];
|
||||
|
||||
sd_dns_resolver *dnr;
|
||||
@@ -59,16 +47,9 @@ struct sd_dhcp_lease {
|
||||
|
||||
char *domainname;
|
||||
char **search_domains;
|
||||
char *hostname; /* SD_DHCP_OPTION_HOST_NAME (12) */
|
||||
char *fqdn; /* SD_DHCP_OPTION_FQDN (81) */
|
||||
char *root_path;
|
||||
char *hostname;
|
||||
char *captive_portal;
|
||||
|
||||
sd_dhcp_client_id client_id;
|
||||
|
||||
void *vendor_specific;
|
||||
size_t vendor_specific_len;
|
||||
|
||||
char *timezone;
|
||||
|
||||
uint8_t sixrd_ipv4masklen;
|
||||
@@ -76,18 +57,10 @@ struct sd_dhcp_lease {
|
||||
struct in6_addr sixrd_prefix;
|
||||
struct in_addr *sixrd_br_addresses;
|
||||
size_t sixrd_n_br_addresses;
|
||||
|
||||
LIST_HEAD(struct sd_dhcp_raw_option, private_options);
|
||||
};
|
||||
|
||||
int dhcp_lease_new(sd_dhcp_lease **ret);
|
||||
|
||||
int dhcp_lease_parse_options(uint8_t code, uint8_t len, const void *option, void *userdata);
|
||||
int dhcp_lease_parse_search_domains(const uint8_t *option, size_t len, char ***domains);
|
||||
int dhcp_lease_insert_private_option(sd_dhcp_lease *lease, uint8_t tag, const void *data, uint8_t len);
|
||||
|
||||
void dhcp_lease_set_timestamp(sd_dhcp_lease *lease, const triple_timestamp *timestamp);
|
||||
int dhcp_lease_set_default_subnet_mask(sd_dhcp_lease *lease);
|
||||
int dhcp_lease_set_client_id(sd_dhcp_lease *lease, const sd_dhcp_client_id *client_id);
|
||||
|
||||
int dhcp_client_parse_message(sd_dhcp_client *client, const struct iovec *iov, sd_dhcp_lease **ret);
|
||||
|
||||
@@ -115,7 +115,3 @@ int dhcp_packet_append_ip_headers(
|
||||
packet->udp = udp;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum, uint16_t port) {
|
||||
return udp_packet_verify(&IOVEC_MAKE(packet, len), port, checksum, /* ret_payload= */ NULL);
|
||||
}
|
||||
|
||||
@@ -31,5 +31,3 @@ int dhcp_packet_append_ip_headers(
|
||||
uint16_t destination,
|
||||
uint16_t len,
|
||||
int ip_service_type);
|
||||
|
||||
int dhcp_packet_verify_headers(DHCPPacket *packet, size_t len, bool checksum, uint16_t port);
|
||||
|
||||
@@ -122,9 +122,6 @@ executables += [
|
||||
'sources' : files('test-ndisc-send.c'),
|
||||
'type' : 'manual',
|
||||
},
|
||||
network_test_template + {
|
||||
'sources' : files('test-sd-dhcp-lease.c'),
|
||||
},
|
||||
network_test_template + {
|
||||
'sources' : files('test-tlv-util.c'),
|
||||
},
|
||||
|
||||
@@ -1,18 +1,14 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <arpa/inet.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "sd-dhcp-lease.h"
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "dhcp-route.h"
|
||||
#include "dns-resolver-internal.h"
|
||||
#include "extract-word.h"
|
||||
#include "hexdecoct.h"
|
||||
#include "in-addr-util.h"
|
||||
#include "network-internal.h"
|
||||
#include "parse-util.h"
|
||||
#include "string-util.h"
|
||||
#include "strv.h"
|
||||
|
||||
@@ -216,112 +212,3 @@ int deserialize_dnr(sd_dns_resolver **ret, const char *string) {
|
||||
*ret = TAKE_PTR(dnr);
|
||||
return n;
|
||||
}
|
||||
|
||||
void serialize_dhcp_routes(FILE *f, const char *key, sd_dhcp_route **routes, size_t size) {
|
||||
assert(f);
|
||||
assert(key);
|
||||
assert(routes);
|
||||
assert(size);
|
||||
|
||||
fprintf(f, "%s=", key);
|
||||
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
struct in_addr dest, gw;
|
||||
uint8_t length;
|
||||
|
||||
assert_se(sd_dhcp_route_get_destination(routes[i], &dest) >= 0);
|
||||
assert_se(sd_dhcp_route_get_gateway(routes[i], &gw) >= 0);
|
||||
assert_se(sd_dhcp_route_get_destination_prefix_length(routes[i], &length) >= 0);
|
||||
|
||||
fprintf(f, "%s,%s%s",
|
||||
IN4_ADDR_PREFIX_TO_STRING(&dest, length),
|
||||
IN4_ADDR_TO_STRING(&gw),
|
||||
i < size - 1 ? " ": "");
|
||||
}
|
||||
|
||||
fputs("\n", f);
|
||||
}
|
||||
|
||||
int deserialize_dhcp_routes(struct sd_dhcp_route **ret, size_t *ret_size, const char *string) {
|
||||
_cleanup_free_ struct sd_dhcp_route *routes = NULL;
|
||||
size_t size = 0;
|
||||
|
||||
assert(ret);
|
||||
assert(ret_size);
|
||||
assert(string);
|
||||
|
||||
/* WORD FORMAT: dst_ip/dst_prefixlen,gw_ip */
|
||||
for (;;) {
|
||||
_cleanup_free_ char *word = NULL;
|
||||
char *tok, *tok_end;
|
||||
unsigned n;
|
||||
int r;
|
||||
|
||||
r = extract_first_word(&string, &word, NULL, 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
if (r == 0)
|
||||
break;
|
||||
|
||||
struct sd_dhcp_route route = {};
|
||||
|
||||
tok = word;
|
||||
|
||||
/* get the subnet */
|
||||
tok_end = strchr(tok, '/');
|
||||
if (!tok_end)
|
||||
continue;
|
||||
*tok_end = '\0';
|
||||
|
||||
r = inet_aton(tok, &route.dst_addr);
|
||||
if (r == 0)
|
||||
continue;
|
||||
|
||||
tok = tok_end + 1;
|
||||
|
||||
/* get the prefixlen */
|
||||
tok_end = strchr(tok, ',');
|
||||
if (!tok_end)
|
||||
continue;
|
||||
|
||||
*tok_end = '\0';
|
||||
|
||||
r = safe_atou(tok, &n);
|
||||
if (r < 0 || n > 32)
|
||||
continue;
|
||||
|
||||
route.dst_prefixlen = (uint8_t) n;
|
||||
tok = tok_end + 1;
|
||||
|
||||
/* get the gateway */
|
||||
r = inet_aton(tok, &route.gw_addr);
|
||||
if (r == 0)
|
||||
continue;
|
||||
|
||||
if (!GREEDY_REALLOC(routes, size + 1))
|
||||
return -ENOMEM;
|
||||
|
||||
routes[size++] = route;
|
||||
}
|
||||
|
||||
*ret_size = size;
|
||||
*ret = TAKE_PTR(routes);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int serialize_dhcp_option(FILE *f, const char *key, const void *data, size_t size) {
|
||||
_cleanup_free_ char *hex_buf = NULL;
|
||||
|
||||
assert(f);
|
||||
assert(key);
|
||||
assert(data);
|
||||
|
||||
hex_buf = hexmem(data, size);
|
||||
if (!hex_buf)
|
||||
return -ENOMEM;
|
||||
|
||||
fprintf(f, "%s=%s\n", key, hex_buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -16,16 +16,3 @@ int deserialize_in6_addrs(struct in6_addr **ret, const char *string);
|
||||
|
||||
int serialize_dnr(FILE *f, const sd_dns_resolver *dnr, size_t n_dnr, bool *with_leading_space);
|
||||
int deserialize_dnr(sd_dns_resolver **ret, const char *string);
|
||||
|
||||
/* don't include "dhcp-lease-internal.h" as it causes conflicts between netinet/ip.h and linux/ip.h */
|
||||
struct sd_dhcp_route;
|
||||
struct sd_dhcp_lease;
|
||||
|
||||
void serialize_dhcp_routes(FILE *f, const char *key, struct sd_dhcp_route **routes, size_t size);
|
||||
int deserialize_dhcp_routes(struct sd_dhcp_route **ret, size_t *ret_size, const char *string);
|
||||
|
||||
/* It is not necessary to add deserialize_dhcp_option(). Use unhexmem() instead. */
|
||||
int serialize_dhcp_option(FILE *f, const char *key, const void *data, size_t size);
|
||||
|
||||
int dhcp_lease_save(sd_dhcp_lease *lease, const char *lease_file);
|
||||
int dhcp_lease_load(sd_dhcp_lease **ret, const char *lease_file);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,82 +0,0 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "dhcp-lease-internal.h"
|
||||
#include "strv.h"
|
||||
#include "tests.h"
|
||||
|
||||
/* According to RFC1035 section 4.1.4, a domain name in a message can be either:
|
||||
* - a sequence of labels ending in a zero octet
|
||||
* - a pointer
|
||||
* - a sequence of labels ending with a pointer
|
||||
*/
|
||||
TEST(dhcp_lease_parse_search_domains_basic) {
|
||||
int r;
|
||||
_cleanup_strv_free_ char **domains = NULL;
|
||||
static const uint8_t optionbuf[] = {
|
||||
0x03, 'F', 'O', 'O', 0x03, 'B', 'A', 'R', 0x00,
|
||||
0x04, 'A', 'B', 'C', 'D', 0x03, 'E', 'F', 'G', 0x00,
|
||||
};
|
||||
|
||||
r = dhcp_lease_parse_search_domains(optionbuf, sizeof(optionbuf), &domains);
|
||||
assert_se(r == 2);
|
||||
assert_se(streq(domains[0], "FOO.BAR"));
|
||||
assert_se(streq(domains[1], "ABCD.EFG"));
|
||||
}
|
||||
|
||||
TEST(dhcp_lease_parse_search_domains_ptr) {
|
||||
int r;
|
||||
_cleanup_strv_free_ char **domains = NULL;
|
||||
static const uint8_t optionbuf[] = {
|
||||
0x03, 'F', 'O', 'O', 0x00, 0xC0, 0x00,
|
||||
};
|
||||
|
||||
r = dhcp_lease_parse_search_domains(optionbuf, sizeof(optionbuf), &domains);
|
||||
assert_se(r == 2);
|
||||
assert_se(streq(domains[0], "FOO"));
|
||||
assert_se(streq(domains[1], "FOO"));
|
||||
}
|
||||
|
||||
TEST(dhcp_lease_parse_search_domains_labels_and_ptr) {
|
||||
int r;
|
||||
_cleanup_strv_free_ char **domains = NULL;
|
||||
static const uint8_t optionbuf[] = {
|
||||
0x03, 'F', 'O', 'O', 0x03, 'B', 'A', 'R', 0x00,
|
||||
0x03, 'A', 'B', 'C', 0xC0, 0x04,
|
||||
};
|
||||
|
||||
r = dhcp_lease_parse_search_domains(optionbuf, sizeof(optionbuf), &domains);
|
||||
assert_se(r == 2);
|
||||
assert_se(streq(domains[0], "FOO.BAR"));
|
||||
assert_se(streq(domains[1], "ABC.BAR"));
|
||||
}
|
||||
|
||||
/* Tests for exceptions. */
|
||||
|
||||
TEST(dhcp_lease_parse_search_domains_no_data) {
|
||||
_cleanup_strv_free_ char **domains = NULL;
|
||||
static const uint8_t optionbuf[3] = {0, 0, 0};
|
||||
|
||||
assert_se(dhcp_lease_parse_search_domains(NULL, 0, &domains) == -EBADMSG);
|
||||
assert_se(dhcp_lease_parse_search_domains(optionbuf, 0, &domains) == -EBADMSG);
|
||||
}
|
||||
|
||||
TEST(dhcp_lease_parse_search_domains_loops) {
|
||||
_cleanup_strv_free_ char **domains = NULL;
|
||||
static const uint8_t optionbuf[] = {
|
||||
0x03, 'F', 'O', 'O', 0x00, 0x03, 'B', 'A', 'R', 0xC0, 0x06,
|
||||
};
|
||||
|
||||
assert_se(dhcp_lease_parse_search_domains(optionbuf, sizeof(optionbuf), &domains) == -EBADMSG);
|
||||
}
|
||||
|
||||
TEST(dhcp_lease_parse_search_domains_wrong_len) {
|
||||
_cleanup_strv_free_ char **domains = NULL;
|
||||
static const uint8_t optionbuf[] = {
|
||||
0x03, 'F', 'O', 'O', 0x03, 'B', 'A', 'R', 0x00,
|
||||
0x04, 'A', 'B', 'C', 'D', 0x03, 'E', 'F', 'G', 0x00,
|
||||
};
|
||||
|
||||
assert_se(dhcp_lease_parse_search_domains(optionbuf, sizeof(optionbuf) - 5, &domains) == -EBADMSG);
|
||||
}
|
||||
|
||||
DEFINE_TEST_MAIN(LOG_INFO);
|
||||
@@ -1,6 +1,5 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include "sd-dhcp-lease.h"
|
||||
#include "sd-hwdb.h"
|
||||
#include "sd-netlink.h"
|
||||
|
||||
@@ -212,7 +211,6 @@ int dump_gateways(sd_netlink *rtnl, sd_hwdb *hwdb, Table *table, int ifindex) {
|
||||
int dump_addresses(
|
||||
sd_netlink *rtnl,
|
||||
sd_dhcp_message *message,
|
||||
sd_dhcp_lease *lease,
|
||||
Table *table,
|
||||
int ifindex) {
|
||||
|
||||
@@ -233,9 +231,6 @@ int dump_addresses(
|
||||
if (dhcp_message_get_option_address(message, SD_DHCP_OPTION_SERVER_IDENTIFIER, &server_address) < 0)
|
||||
/* The message should be BOOTP, let's fallback to the siaddr field. */
|
||||
server_address.s_addr = message->header.siaddr;
|
||||
} else if (lease) {
|
||||
(void) sd_dhcp_lease_get_address(lease, &dhcp4_address);
|
||||
(void) sd_dhcp_lease_get_server_identifier(lease, &server_address);
|
||||
}
|
||||
|
||||
FOREACH_ARRAY(local, local_addrs, n) {
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
int dump_list(Table *table, const char *key, char * const *l);
|
||||
int ieee_oui(sd_hwdb *hwdb, const struct ether_addr *mac, char **ret);
|
||||
int dump_gateways(sd_netlink *rtnl, sd_hwdb *hwdb, Table *table, int ifindex);
|
||||
int dump_addresses(sd_netlink *rtnl, sd_dhcp_message *message, sd_dhcp_lease *lease, Table *table, int ifindex);
|
||||
int dump_addresses(sd_netlink *rtnl, sd_dhcp_message *message, Table *table, int ifindex);
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
#include "sd-device.h"
|
||||
#include "sd-dhcp-client-id.h"
|
||||
#include "sd-dhcp-lease.h"
|
||||
#include "sd-dhcp-protocol.h"
|
||||
#include "sd-hwdb.h"
|
||||
#include "sd-netlink.h"
|
||||
@@ -24,7 +23,6 @@
|
||||
#include "json-util.h"
|
||||
#include "macvlan-util.h"
|
||||
#include "netif-util.h"
|
||||
#include "network-internal.h"
|
||||
#include "networkctl.h"
|
||||
#include "networkctl-description.h"
|
||||
#include "networkctl-dump-util.h"
|
||||
@@ -242,7 +240,6 @@ static int link_status_one(
|
||||
const char *driver = NULL, *path = NULL, *vendor = NULL, *model = NULL, *link = NULL,
|
||||
*on_color_operational, *off_color_operational, *on_color_setup, *off_color_setup, *on_color_online;
|
||||
_cleanup_free_ int *carrier_bound_to = NULL, *carrier_bound_by = NULL;
|
||||
_cleanup_(sd_dhcp_lease_unrefp) sd_dhcp_lease *lease = NULL;
|
||||
_cleanup_(table_unrefp) Table *table = NULL;
|
||||
int r;
|
||||
|
||||
@@ -294,11 +291,6 @@ static int link_status_one(
|
||||
if (r == -ENOMEM)
|
||||
return log_oom();
|
||||
|
||||
char lease_file[STRLEN("/run/systemd/netif/leases/") + DECIMAL_STR_MAX(int)];
|
||||
xsprintf(lease_file, "/run/systemd/netif/leases/%i", info->ifindex);
|
||||
|
||||
(void) dhcp_lease_load(&lease, lease_file);
|
||||
|
||||
r = format_config_files(&network_dropins, network);
|
||||
if (r < 0)
|
||||
return r;
|
||||
@@ -780,7 +772,7 @@ static int link_status_one(
|
||||
return r;
|
||||
}
|
||||
|
||||
r = dump_addresses(rtnl, info->dhcp_message, lease, table, info->ifindex);
|
||||
r = dump_addresses(rtnl, info->dhcp_message, table, info->ifindex);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -849,17 +841,6 @@ static int link_status_one(
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
} else if (lease) {
|
||||
const char *tz;
|
||||
|
||||
r = sd_dhcp_lease_get_timezone(lease, &tz);
|
||||
if (r >= 0) {
|
||||
r = table_add_many(table,
|
||||
TABLE_FIELD, "Time Zone",
|
||||
TABLE_STRING, tz);
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
}
|
||||
}
|
||||
|
||||
if (sd_dhcp_client_id_is_set(&info->dhcp_client_id)) {
|
||||
|
||||
@@ -94,7 +94,7 @@ int system_status(sd_netlink *rtnl, sd_hwdb *hwdb) {
|
||||
if (r < 0)
|
||||
return table_log_add_error(r);
|
||||
|
||||
r = dump_addresses(rtnl, /* message= */ NULL, /* lease= */ NULL, table, /* ifindex= */ 0);
|
||||
r = dump_addresses(rtnl, /* message= */ NULL, table, /* ifindex= */ 0);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#include "sd-dhcp-client.h"
|
||||
#include "sd-dhcp6-client.h"
|
||||
|
||||
#include "dhcp-lease-internal.h"
|
||||
#include "dhcp-lease-internal.h" /* IWYU pragma: keep */
|
||||
#include "dhcp-server-lease-internal.h"
|
||||
#include "dhcp6-lease-internal.h"
|
||||
#include "extract-word.h"
|
||||
@@ -1354,11 +1354,9 @@ static int dhcp_client_lease_append_json(Link *link, sd_json_variant **v) {
|
||||
return r;
|
||||
|
||||
_cleanup_(sd_json_variant_unrefp) sd_json_variant *m = NULL;
|
||||
if (link->dhcp_lease->message) {
|
||||
r = dhcp_message_build_json(link->dhcp_lease->message, &m);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
r = dhcp_message_build_json(link->dhcp_lease->message, &m);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = sd_json_buildo(
|
||||
&w,
|
||||
@@ -1428,19 +1426,6 @@ static int dhcp_client_private_options_append_json(Link *link, sd_json_variant *
|
||||
if (!link->dhcp_lease)
|
||||
return 0;
|
||||
|
||||
if (!link->dhcp_lease->message) {
|
||||
LIST_FOREACH(options, option, link->dhcp_lease->private_options) {
|
||||
r = sd_json_variant_append_arraybo(
|
||||
&array,
|
||||
SD_JSON_BUILD_PAIR_UNSIGNED("Option", option->tag),
|
||||
SD_JSON_BUILD_PAIR_HEX("PrivateOptionData", option->data, option->length));
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
return json_variant_set_field_non_null(v, "PrivateOptions", array);
|
||||
}
|
||||
|
||||
for (uint8_t i = SD_DHCP_OPTION_PRIVATE_BASE; i <= SD_DHCP_OPTION_PRIVATE_LAST; i++) {
|
||||
_cleanup_(iovec_done) struct iovec iov = {};
|
||||
r = dhcp_message_get_option_alloc(link->dhcp_lease->message, i, &iov);
|
||||
|
||||
@@ -288,7 +288,6 @@ static Link* link_free(Link *link) {
|
||||
free(link->previous_ssid);
|
||||
free(link->driver);
|
||||
|
||||
unlink_and_free(link->lease_file);
|
||||
unlink_and_free(link->state_file);
|
||||
|
||||
sd_device_unref(link->dev);
|
||||
@@ -2713,7 +2712,7 @@ static Link *link_drop_or_unref(Link *link) {
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Link*, link_drop_or_unref);
|
||||
|
||||
static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
|
||||
_cleanup_free_ char *ifname = NULL, *kind = NULL, *state_file = NULL, *lease_file = NULL;
|
||||
_cleanup_free_ char *ifname = NULL, *kind = NULL, *state_file = NULL;
|
||||
_cleanup_(link_drop_or_unrefp) Link *link = NULL;
|
||||
unsigned short iftype;
|
||||
int r, ifindex;
|
||||
@@ -2751,9 +2750,6 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
|
||||
/* Do not update state files when running in test mode. */
|
||||
if (asprintf(&state_file, "/run/systemd/netif/links/%d", ifindex) < 0)
|
||||
return log_oom_debug();
|
||||
|
||||
if (asprintf(&lease_file, "/run/systemd/netif/leases/%d", ifindex) < 0)
|
||||
return log_oom_debug();
|
||||
}
|
||||
|
||||
link = new(Link, 1);
|
||||
@@ -2775,7 +2771,6 @@ static int link_new(Manager *manager, sd_netlink_message *message, Link **ret) {
|
||||
.ipv6ll_address_gen_mode = _IPV6_LINK_LOCAL_ADDRESS_GEN_MODE_INVALID,
|
||||
|
||||
.state_file = TAKE_PTR(state_file),
|
||||
.lease_file = TAKE_PTR(lease_file),
|
||||
|
||||
.n_dns = UINT_MAX,
|
||||
.dns_default_route = -1,
|
||||
|
||||
@@ -117,7 +117,6 @@ typedef struct Link {
|
||||
|
||||
sd_dhcp_client *dhcp_client;
|
||||
sd_dhcp_lease *dhcp_lease;
|
||||
char *lease_file;
|
||||
unsigned dhcp4_messages;
|
||||
bool dhcp4_configured;
|
||||
char *dhcp4_6rd_tunnel_name;
|
||||
|
||||
@@ -959,15 +959,6 @@ static int link_save(Link *link) {
|
||||
print_link_hashmap(f, "CARRIER_BOUND_TO=", link->bound_to_links);
|
||||
print_link_hashmap(f, "CARRIER_BOUND_BY=", link->bound_by_links);
|
||||
|
||||
if (link->dhcp_lease) {
|
||||
r = dhcp_lease_save(link->dhcp_lease, link->lease_file);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
fprintf(f, "DHCP_LEASE=%s\n", link->lease_file);
|
||||
} else
|
||||
(void) unlink(link->lease_file);
|
||||
|
||||
r = link_serialize_dhcp6_client(link, f);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
|
||||
#include <arpa/inet.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "dhcp-route.h"
|
||||
#include "hashmap.h"
|
||||
#include "hostname-setup.h"
|
||||
#include "network-internal.h"
|
||||
@@ -42,51 +39,6 @@ TEST(deserialize_in_addr) {
|
||||
ASSERT_TRUE(in6_addr_equal(&f.in6, &addresses6[2]));
|
||||
}
|
||||
|
||||
TEST(deserialize_dhcp_routes) {
|
||||
_cleanup_free_ struct sd_dhcp_route *routes = NULL;
|
||||
size_t size;
|
||||
|
||||
ASSERT_OK(deserialize_dhcp_routes(&routes, &size, ""));
|
||||
ASSERT_EQ(size, 0U);
|
||||
ASSERT_NULL(routes);
|
||||
|
||||
ASSERT_OK(deserialize_dhcp_routes(&routes, &size, "192.168.0.0/16,192.168.0.1 10.1.2.0/24,10.1.2.1 0.0.0.0/0,10.0.1.1"));
|
||||
ASSERT_EQ(size, 3U);
|
||||
ASSERT_NOT_NULL(routes);
|
||||
|
||||
ASSERT_EQ(routes[0].dst_addr.s_addr, inet_addr("192.168.0.0"));
|
||||
ASSERT_EQ(routes[0].gw_addr.s_addr, inet_addr("192.168.0.1"));
|
||||
ASSERT_EQ(routes[0].dst_prefixlen, 16U);
|
||||
|
||||
ASSERT_EQ(routes[1].dst_addr.s_addr, inet_addr("10.1.2.0"));
|
||||
ASSERT_EQ(routes[1].gw_addr.s_addr, inet_addr("10.1.2.1"));
|
||||
ASSERT_EQ(routes[1].dst_prefixlen, 24U);
|
||||
|
||||
ASSERT_EQ(routes[2].dst_addr.s_addr, inet_addr("0.0.0.0"));
|
||||
ASSERT_EQ(routes[2].gw_addr.s_addr, inet_addr("10.0.1.1"));
|
||||
ASSERT_EQ(routes[2].dst_prefixlen, 0U);
|
||||
|
||||
routes = mfree(routes);
|
||||
|
||||
ASSERT_OK(deserialize_dhcp_routes(&routes, &size, "192.168.0.0/16,192.168.0.1 10.1.2.0#24,10.1.2.1 0.0.0.0/0,10.0.1.1"));
|
||||
ASSERT_EQ(size, 2U);
|
||||
ASSERT_NOT_NULL(routes);
|
||||
|
||||
ASSERT_EQ(routes[0].dst_addr.s_addr, inet_addr("192.168.0.0"));
|
||||
ASSERT_EQ(routes[0].gw_addr.s_addr, inet_addr("192.168.0.1"));
|
||||
ASSERT_EQ(routes[0].dst_prefixlen, 16U);
|
||||
|
||||
ASSERT_EQ(routes[1].dst_addr.s_addr, inet_addr("0.0.0.0"));
|
||||
ASSERT_EQ(routes[1].gw_addr.s_addr, inet_addr("10.0.1.1"));
|
||||
ASSERT_EQ(routes[1].dst_prefixlen, 0U);
|
||||
|
||||
routes = mfree(routes);
|
||||
|
||||
ASSERT_OK(deserialize_dhcp_routes(&routes, &size, "192.168.0.0/55,192.168.0.1 10.1.2.0#24,10.1.2.1 0.0.0.0/0,10.0.1.X"));
|
||||
ASSERT_EQ(size, 0U);
|
||||
ASSERT_NULL(routes);
|
||||
}
|
||||
|
||||
static void test_route_tables_one(Manager *manager, const char *name, uint32_t number) {
|
||||
_cleanup_free_ char *str = NULL, *expected = NULL, *num_str = NULL;
|
||||
uint32_t t;
|
||||
|
||||
@@ -56,26 +56,19 @@ int sd_dhcp_lease_get_broadcast(sd_dhcp_lease *lease, struct in_addr *addr);
|
||||
int sd_dhcp_lease_get_netmask(sd_dhcp_lease *lease, struct in_addr *addr);
|
||||
int sd_dhcp_lease_get_prefix(sd_dhcp_lease *lease, struct in_addr *ret_prefix, uint8_t *ret_prefixlen);
|
||||
int sd_dhcp_lease_get_router(sd_dhcp_lease *lease, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_next_server(sd_dhcp_lease *lease, struct in_addr *addr);
|
||||
int sd_dhcp_lease_get_server_identifier(sd_dhcp_lease *lease, struct in_addr *addr);
|
||||
int sd_dhcp_lease_get_servers(sd_dhcp_lease *lease, sd_dhcp_lease_server_type_t what, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_dns(sd_dhcp_lease *lease, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_ntp(sd_dhcp_lease *lease, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_sip(sd_dhcp_lease *lease, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_pop3(sd_dhcp_lease *lease, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_smtp(sd_dhcp_lease *lease, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_lpr(sd_dhcp_lease *lease, const struct in_addr **addr);
|
||||
int sd_dhcp_lease_get_mtu(sd_dhcp_lease *lease, uint16_t *mtu);
|
||||
int sd_dhcp_lease_get_domainname(sd_dhcp_lease *lease, const char **domainname);
|
||||
int sd_dhcp_lease_get_search_domains(sd_dhcp_lease *lease, char ***domains);
|
||||
int sd_dhcp_lease_get_hostname(sd_dhcp_lease *lease, const char **hostname);
|
||||
int sd_dhcp_lease_get_root_path(sd_dhcp_lease *lease, const char **root_path);
|
||||
int sd_dhcp_lease_get_hostname(sd_dhcp_lease *lease, const char **ret);
|
||||
int sd_dhcp_lease_get_captive_portal(sd_dhcp_lease *lease, const char **ret);
|
||||
int sd_dhcp_lease_get_dnr(sd_dhcp_lease *lease, sd_dns_resolver **ret_resolvers);
|
||||
int sd_dhcp_lease_get_static_routes(sd_dhcp_lease *lease, sd_dhcp_route ***ret);
|
||||
int sd_dhcp_lease_get_classless_routes(sd_dhcp_lease *lease, sd_dhcp_route ***ret);
|
||||
int sd_dhcp_lease_get_vendor_specific(sd_dhcp_lease *lease, const void **data, size_t *data_len);
|
||||
int sd_dhcp_lease_get_client_id(sd_dhcp_lease *lease, const sd_dhcp_client_id **ret);
|
||||
int sd_dhcp_lease_get_timezone(sd_dhcp_lease *lease, const char **ret);
|
||||
int sd_dhcp_lease_get_6rd(
|
||||
sd_dhcp_lease *lease,
|
||||
|
||||
Reference in New Issue
Block a user