mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-29 15:00:10 +01:00
merge; branch 'lr/nettools-siaddr'
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/merge_requests/334
This commit is contained in:
commit
8a35b7ed86
5 changed files with 28 additions and 0 deletions
|
|
@ -34,6 +34,7 @@ global:
|
|||
n_dhcp4_client_lease_ref;
|
||||
n_dhcp4_client_lease_unref;
|
||||
n_dhcp4_client_lease_get_yiaddr;
|
||||
n_dhcp4_client_lease_get_siaddr;
|
||||
n_dhcp4_client_lease_get_lifetime;
|
||||
n_dhcp4_client_lease_query;
|
||||
n_dhcp4_client_lease_select;
|
||||
|
|
|
|||
|
|
@ -203,6 +203,20 @@ _c_public_ void n_dhcp4_client_lease_get_yiaddr(NDhcp4ClientLease *lease, struct
|
|||
yiaddr->s_addr = header->yiaddr;
|
||||
}
|
||||
|
||||
/**
|
||||
* n_dhcp4_client_lease_get_siaddr() - get the server IP address
|
||||
* @lease: the lease to operate on
|
||||
* @siaddr: return argument for the IP address
|
||||
*
|
||||
* Gets the server IP address cotained in the lease. Or INADDR_ANY if the
|
||||
* lease does not contain an IP address.
|
||||
*/
|
||||
_c_public_ void n_dhcp4_client_lease_get_siaddr(NDhcp4ClientLease *lease, struct in_addr *siaddr) {
|
||||
NDhcp4Header *header = n_dhcp4_incoming_get_header(lease->message);
|
||||
|
||||
siaddr->s_addr = header->siaddr;
|
||||
}
|
||||
|
||||
/**
|
||||
* n_dhcp4_client_lease_get_lifetime() - get the lifetime
|
||||
* @lease: the lease to operate on
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ NDhcp4ClientLease *n_dhcp4_client_lease_ref(NDhcp4ClientLease *lease);
|
|||
NDhcp4ClientLease *n_dhcp4_client_lease_unref(NDhcp4ClientLease *lease);
|
||||
|
||||
void n_dhcp4_client_lease_get_yiaddr(NDhcp4ClientLease *lease, struct in_addr *yiaddr);
|
||||
void n_dhcp4_client_lease_get_siaddr(NDhcp4ClientLease *lease, struct in_addr *siaddr);
|
||||
void n_dhcp4_client_lease_get_lifetime(NDhcp4ClientLease *lease, uint64_t *ns_lifetimep);
|
||||
int n_dhcp4_client_lease_query(NDhcp4ClientLease *lease, uint8_t option, uint8_t **datap, size_t *n_datap);
|
||||
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ static void test_api_functions(void) {
|
|||
(void *)n_dhcp4_client_lease_unrefp,
|
||||
(void *)n_dhcp4_client_lease_unrefv,
|
||||
(void *)n_dhcp4_client_lease_get_yiaddr,
|
||||
(void *)n_dhcp4_client_lease_get_siaddr,
|
||||
(void *)n_dhcp4_client_lease_get_lifetime,
|
||||
(void *)n_dhcp4_client_lease_query,
|
||||
(void *)n_dhcp4_client_lease_select,
|
||||
|
|
|
|||
|
|
@ -352,6 +352,7 @@ lease_parse_address (NDhcp4ClientLease *lease,
|
|||
const gint64 ts_clock_boottime = nm_utils_monotonic_timestamp_as_boottime (ts, 1);
|
||||
struct in_addr a_address;
|
||||
struct in_addr a_netmask;
|
||||
struct in_addr a_next_server;
|
||||
guint32 a_plen;
|
||||
guint64 nettools_lifetime;
|
||||
gint64 a_lifetime;
|
||||
|
|
@ -415,6 +416,16 @@ lease_parse_address (NDhcp4ClientLease *lease,
|
|||
NM_DHCP_OPTION_DHCP4_NM_EXPIRY,
|
||||
(guint64) a_expiry);
|
||||
|
||||
|
||||
n_dhcp4_client_lease_get_siaddr (lease, &a_next_server);
|
||||
if (a_next_server.s_addr != INADDR_ANY) {
|
||||
nm_utils_inet4_ntop (a_next_server.s_addr, addr_str);
|
||||
nm_dhcp_option_add_option (options,
|
||||
_nm_dhcp_option_dhcp4_options,
|
||||
NM_DHCP_OPTION_DHCP4_NM_NEXT_SERVER,
|
||||
addr_str);
|
||||
}
|
||||
|
||||
nm_ip4_config_add_address (ip4_config,
|
||||
&((const NMPlatformIP4Address) {
|
||||
.address = a_address.s_addr,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue