sd-dhcp6-client: drop domains_count and ntp_fqdn_count

This commit is contained in:
Yu Watanabe
2021-09-29 15:29:40 +09:00
parent 548c33d712
commit edeee50b3d
5 changed files with 39 additions and 51 deletions
@@ -28,11 +28,9 @@ struct sd_dhcp6_lease {
struct in6_addr *dns;
size_t dns_count;
char **domains;
size_t domains_count;
struct in6_addr *ntp;
size_t ntp_count;
char **ntp_fqdn;
size_t ntp_fqdn_count;
char *fqdn;
};
+2 -4
View File
@@ -832,7 +832,7 @@ int dhcp6_option_parse_domainname(const uint8_t *optval, size_t optlen, char **r
int dhcp6_option_parse_domainname_list(const uint8_t *optval, size_t optlen, char ***ret) {
_cleanup_strv_free_ char **names = NULL;
int r, count = 0;
int r;
assert(optval);
assert(ret);
@@ -854,12 +854,10 @@ int dhcp6_option_parse_domainname_list(const uint8_t *optval, size_t optlen, cha
r = strv_consume(&names, TAKE_PTR(name));
if (r < 0)
return r;
count++;
}
*ret = TAKE_PTR(names);
return count;
return 0;
}
static sd_dhcp6_option* dhcp6_option_free(sd_dhcp6_option *i) {
+31 -39
View File
@@ -203,16 +203,15 @@ int dhcp6_lease_set_dns(sd_dhcp6_lease *lease, const uint8_t *optval, size_t opt
return dhcp6_option_parse_addresses(optval, optlen, &lease->dns, &lease->dns_count);
}
int sd_dhcp6_lease_get_dns(sd_dhcp6_lease *lease, const struct in6_addr **addrs) {
int sd_dhcp6_lease_get_dns(sd_dhcp6_lease *lease, const struct in6_addr **ret) {
assert_return(lease, -EINVAL);
assert_return(addrs, -EINVAL);
assert_return(ret, -EINVAL);
if (lease->dns_count) {
*addrs = lease->dns;
return lease->dns_count;
}
if (!lease->dns)
return -ENOENT;
return -ENOENT;
*ret = lease->dns;
return lease->dns_count;
}
int dhcp6_lease_set_domains(sd_dhcp6_lease *lease, const uint8_t *optval, size_t optlen) {
@@ -230,21 +229,19 @@ int dhcp6_lease_set_domains(sd_dhcp6_lease *lease, const uint8_t *optval, size_t
return r;
strv_free_and_replace(lease->domains, domains);
lease->domains_count = r;
return r;
return 0;
}
int sd_dhcp6_lease_get_domains(sd_dhcp6_lease *lease, char ***domains) {
int sd_dhcp6_lease_get_domains(sd_dhcp6_lease *lease, char ***ret) {
assert_return(lease, -EINVAL);
assert_return(domains, -EINVAL);
assert_return(ret, -EINVAL);
if (lease->domains_count) {
*domains = lease->domains;
return lease->domains_count;
}
if (!lease->domains)
return -ENOENT;
return -ENOENT;
*ret = lease->domains;
return strv_length(lease->domains);
}
int dhcp6_lease_set_ntp(sd_dhcp6_lease *lease, const uint8_t *optval, size_t optlen) {
@@ -285,7 +282,6 @@ int dhcp6_lease_set_ntp(sd_dhcp6_lease *lease, const uint8_t *optval, size_t opt
return r;
strv_free_and_replace(lease->ntp_fqdn, servers);
lease->ntp_fqdn_count = r;
break;
}}
@@ -309,29 +305,26 @@ int dhcp6_lease_set_sntp(sd_dhcp6_lease *lease, const uint8_t *optval, size_t op
return dhcp6_option_parse_addresses(optval, optlen, &lease->ntp, &lease->ntp_count);
}
int sd_dhcp6_lease_get_ntp_addrs(sd_dhcp6_lease *lease,
const struct in6_addr **addrs) {
int sd_dhcp6_lease_get_ntp_addrs(sd_dhcp6_lease *lease, const struct in6_addr **ret) {
assert_return(lease, -EINVAL);
assert_return(addrs, -EINVAL);
assert_return(ret, -EINVAL);
if (lease->ntp_count) {
*addrs = lease->ntp;
return lease->ntp_count;
}
if (!lease->ntp)
return -ENOENT;
return -ENOENT;
*ret = lease->ntp;
return lease->ntp_count;
}
int sd_dhcp6_lease_get_ntp_fqdn(sd_dhcp6_lease *lease, char ***ntp_fqdn) {
int sd_dhcp6_lease_get_ntp_fqdn(sd_dhcp6_lease *lease, char ***ret) {
assert_return(lease, -EINVAL);
assert_return(ntp_fqdn, -EINVAL);
assert_return(ret, -EINVAL);
if (lease->ntp_fqdn_count) {
*ntp_fqdn = lease->ntp_fqdn;
return lease->ntp_fqdn_count;
}
if (!lease->ntp_fqdn)
return -ENOENT;
return -ENOENT;
*ret = lease->ntp_fqdn;
return strv_length(lease->ntp_fqdn);
}
int dhcp6_lease_set_fqdn(sd_dhcp6_lease *lease, const uint8_t *optval, size_t optlen) {
@@ -353,16 +346,15 @@ int dhcp6_lease_set_fqdn(sd_dhcp6_lease *lease, const uint8_t *optval, size_t op
return free_and_replace(lease->fqdn, fqdn);
}
int sd_dhcp6_lease_get_fqdn(sd_dhcp6_lease *lease, const char **fqdn) {
int sd_dhcp6_lease_get_fqdn(sd_dhcp6_lease *lease, const char **ret) {
assert_return(lease, -EINVAL);
assert_return(fqdn, -EINVAL);
assert_return(ret, -EINVAL);
if (lease->fqdn) {
*fqdn = lease->fqdn;
return 0;
}
if (!lease->fqdn)
return -ENOENT;
return -ENOENT;
*ret = lease->fqdn;
return 0;
}
static sd_dhcp6_lease *dhcp6_lease_free(sd_dhcp6_lease *lease) {
+1 -1
View File
@@ -137,7 +137,7 @@ static int test_parse_domain(sd_event *e) {
data = (uint8_t []) { 7, 'e', 'x', 'a', 'm', 'p', 'l', 'e', 3, 'c', 'o', 'm', 0,
6, 'f', 'o', 'o', 'b', 'a', 'r', 0 };
r = dhcp6_option_parse_domainname_list(data, 21, &list);
assert_se(r == 2);
assert_se(r == 0);
assert_se(list);
assert_se(streq(list[0], "example.com"));
assert_se(streq(list[1], "foobar"));
+5 -5
View File
@@ -39,11 +39,11 @@ int sd_dhcp6_lease_get_pd(sd_dhcp6_lease *lease, struct in6_addr *prefix,
uint32_t *lifetime_preferred,
uint32_t *lifetime_valid);
int sd_dhcp6_lease_get_dns(sd_dhcp6_lease *lease, const struct in6_addr **addrs);
int sd_dhcp6_lease_get_domains(sd_dhcp6_lease *lease, char ***domains);
int sd_dhcp6_lease_get_ntp_addrs(sd_dhcp6_lease *lease, const struct in6_addr **addrs);
int sd_dhcp6_lease_get_ntp_fqdn(sd_dhcp6_lease *lease, char ***ntp_fqdn);
int sd_dhcp6_lease_get_fqdn(sd_dhcp6_lease *lease, const char **fqdn);
int sd_dhcp6_lease_get_dns(sd_dhcp6_lease *lease, const struct in6_addr **ret);
int sd_dhcp6_lease_get_domains(sd_dhcp6_lease *lease, char ***ret);
int sd_dhcp6_lease_get_ntp_addrs(sd_dhcp6_lease *lease, const struct in6_addr **ret);
int sd_dhcp6_lease_get_ntp_fqdn(sd_dhcp6_lease *lease, char ***ret);
int sd_dhcp6_lease_get_fqdn(sd_dhcp6_lease *lease, const char **ret);
sd_dhcp6_lease *sd_dhcp6_lease_ref(sd_dhcp6_lease *lease);
sd_dhcp6_lease *sd_dhcp6_lease_unref(sd_dhcp6_lease *lease);