From 68ceb9df6a39a7f86ffc3cf8266ca677a5d5271b Mon Sep 17 00:00:00 2001 From: Patrik Flykt Date: Thu, 26 Jun 2014 16:18:43 +0300 Subject: sd-dhcp-client/networkd: set lifetimes for IPv4 addresses Note that /proc/sys/net/ipv4/ip_dynaddr needs to be non-zero. [tomegun: hook up DHCP renew events to increase the lifetime when necessary] --- src/libsystemd-network/sd-dhcp-client.c | 3 ++- src/libsystemd-network/sd-dhcp-lease.c | 9 +++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src/libsystemd-network') diff --git a/src/libsystemd-network/sd-dhcp-client.c b/src/libsystemd-network/sd-dhcp-client.c index 1603c41227..790728b40c 100644 --- a/src/libsystemd-network/sd-dhcp-client.c +++ b/src/libsystemd-network/sd-dhcp-client.c @@ -879,7 +879,8 @@ static int client_handle_ack(sd_dhcp_client *client, DHCPMessage *ack, client->lease->subnet_mask != lease->subnet_mask || client->lease->router != lease->router) { r = DHCP_EVENT_IP_CHANGE; - } + } else + r = DHCP_EVENT_RENEW; client->lease = sd_dhcp_lease_unref(client->lease); } diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index 3203b7a592..94ba283cf0 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -47,6 +47,15 @@ int sd_dhcp_lease_get_address(sd_dhcp_lease *lease, struct in_addr *addr) { return 0; } +int sd_dhcp_lease_get_lifetime(sd_dhcp_lease *lease, uint32_t *lifetime) { + assert_return(lease, -EINVAL); + assert_return(lease, -EINVAL); + + *lifetime = lease->lifetime; + + return 0; +} + int sd_dhcp_lease_get_mtu(sd_dhcp_lease *lease, uint16_t *mtu) { assert_return(lease, -EINVAL); assert_return(mtu, -EINVAL); -- cgit v1.2.3-54-g00ecf