sd-dhcp: introduce sd_dhcp_lease_get_prefix()

This commit is contained in:
Yu Watanabe
2023-07-28 05:15:11 +09:00
parent 45e76094ab
commit 33acdc511c
2 changed files with 29 additions and 0 deletions
+28
View File
@@ -201,6 +201,34 @@ int sd_dhcp_lease_get_netmask(sd_dhcp_lease *lease, struct in_addr *addr) {
return 0;
}
int sd_dhcp_lease_get_prefix(sd_dhcp_lease *lease, struct in_addr *ret_prefix, uint8_t *ret_prefixlen) {
struct in_addr address, netmask;
uint8_t prefixlen;
int r;
assert_return(lease, -EINVAL);
r = sd_dhcp_lease_get_address(lease, &address);
if (r < 0)
return r;
r = sd_dhcp_lease_get_netmask(lease, &netmask);
if (r < 0)
return r;
prefixlen = in4_addr_netmask_to_prefixlen(&netmask);
r = in4_addr_mask(&address, prefixlen);
if (r < 0)
return r;
if (ret_prefix)
*ret_prefix = address;
if (ret_prefixlen)
*ret_prefixlen = prefixlen;
return 0;
}
int sd_dhcp_lease_get_server_identifier(sd_dhcp_lease *lease, struct in_addr *addr) {
assert_return(lease, -EINVAL);
assert_return(addr, -EINVAL);
+1
View File
@@ -52,6 +52,7 @@ int sd_dhcp_lease_get_t1(sd_dhcp_lease *lease, uint32_t *t1);
int sd_dhcp_lease_get_t2(sd_dhcp_lease *lease, uint32_t *t2);
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);