From 8ddbeaa23c20659fe3b1b79502d746aceb396ce8 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Lindskog Date: Tue, 29 Apr 2014 22:40:38 +0200 Subject: networkd: dont configure route if lease doesn't have one --- src/libsystemd-network/sd-dhcp-lease.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'src/libsystemd-network') diff --git a/src/libsystemd-network/sd-dhcp-lease.c b/src/libsystemd-network/sd-dhcp-lease.c index acdcca87ec..3e43ab635f 100644 --- a/src/libsystemd-network/sd-dhcp-lease.c +++ b/src/libsystemd-network/sd-dhcp-lease.c @@ -126,7 +126,10 @@ int sd_dhcp_lease_get_router(sd_dhcp_lease *lease, struct in_addr *addr) { assert_return(lease, -EINVAL); assert_return(addr, -EINVAL); - addr->s_addr = lease->router; + if (lease->router != INADDR_ANY) + addr->s_addr = lease->router; + else + return -ENOENT; return 0; } @@ -297,6 +300,7 @@ int dhcp_lease_new(sd_dhcp_lease **ret) { if (!lease) return -ENOMEM; + lease->router = INADDR_ANY; lease->n_ref = REFCNT_INIT; *ret = lease; @@ -370,18 +374,16 @@ int dhcp_lease_save(sd_dhcp_lease *lease, const char *lease_file) { "# This is private data. Do not parse.\n" "ADDRESS=%s\n", inet_ntoa(address)); - r = sd_dhcp_lease_get_router(lease, &address); - if (r < 0) - goto finish; - - fprintf(f, "ROUTER=%s\n", inet_ntoa(address)); - r = sd_dhcp_lease_get_netmask(lease, &address); if (r < 0) goto finish; fprintf(f, "NETMASK=%s\n", inet_ntoa(address)); + r = sd_dhcp_lease_get_router(lease, &address); + if (r >= 0) + fprintf(f, "ROUTER=%s\n", inet_ntoa(address)); + r = sd_dhcp_lease_get_server_identifier(lease, &address); if (r >= 0) fprintf(f, "SERVER_ADDRESS=%s\n", @@ -474,11 +476,13 @@ int dhcp_lease_load(const char *lease_file, sd_dhcp_lease **ret) { lease->address = addr.s_addr; - r = inet_pton(AF_INET, router, &addr); - if (r < 0) - return r; + if (router) { + r = inet_pton(AF_INET, router, &addr); + if (r < 0) + return r; - lease->router = addr.s_addr; + lease->router = addr.s_addr; + } r = inet_pton(AF_INET, netmask, &addr); if (r < 0) -- cgit v1.2.3-54-g00ecf