From: Jo-Philipp Wich Date: Wed, 12 Feb 2020 21:22:05 +0000 (+0100) Subject: rpcd-mod-luci: honour dhcp leases without ip address for host hints X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=920433457dc3d4a44a2909d7d8981b22e187e1ac;p=oweals%2Fluci.git rpcd-mod-luci: honour dhcp leases without ip address for host hints Signed-off-by: Jo-Philipp Wich (cherry picked from commit 3702e13f544a0b5478d8e0bacd8b28fe55709a57) --- diff --git a/libs/rpcd-mod-luci/src/luci.c b/libs/rpcd-mod-luci/src/luci.c index 5dc436164..951de5c46 100644 --- a/libs/rpcd-mod-luci/src/luci.c +++ b/libs/rpcd-mod-luci/src/luci.c @@ -1283,14 +1283,14 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) ptr.option = "ip"; ptr.o = NULL; - if (uci_lookup_ptr(uci, &ptr, NULL, true) || ptr.o == NULL) - continue; - - if (ptr.o->type != UCI_TYPE_STRING) - continue; + if (!uci_lookup_ptr(uci, &ptr, NULL, true) && ptr.o != NULL && + ptr.o->type != UCI_TYPE_STRING) + n = ptr.o->v.string; + else + n = NULL; - if (inet_pton(AF_INET, ptr.o->v.string, &in) != 1) - continue; + if (!n || inet_pton(AF_INET, n, &in) != 1) + in.s_addr = 0; ptr.option = "name"; ptr.o = NULL; @@ -1316,7 +1316,7 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) if (!hint) continue; - if (hint->ip.s_addr == 0) + if (hint->ip.s_addr == 0 && in.s_addr != 0) hint->ip = in; if (n && !hint->hostname) @@ -1330,7 +1330,7 @@ rpc_luci_get_host_hints_uci(struct reply_context *rctx) if (!hint) continue; - if (hint->ip.s_addr == 0) + if (hint->ip.s_addr == 0 && in.s_addr != 0) hint->ip = in; if (n && !hint->hostname)