From patchwork Fri Apr 5 11:06:45 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Donald X-Patchwork-Id: 1920215 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=akxpWHRO; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=eWVQFdkW; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.openwrt.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V9wmq1GNWz1yZM for ; Fri, 5 Apr 2024 22:12:11 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Cc:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=InSOIUqt/U0bydbRc+u4lBA6kJmXS7hdw4hcXzxr9WQ=; b=akxpWHRO0MKsXP U3uvjyRatc90jeBtMY8+YvnWnH4IqbLo2QxKmmXoX/ku1ssN54xZ2v2nwcJcjIndmabxGbMpjHbWe N0lBds+lR6/qeAwxrtfPW9PAGiZBg+7UOZ2B1ei70lpNPd4m6tdSSTCZbQ9pJp4AzTrLq8hDpKFgF bQSCrn8jnHurQrKlt5A5u0PcFAOV3WMlg9jxWJK6Zf+zel80CB9CXaY1yqyZFIxllRVWTkBaRl8TW eJFQAADACoa50VkNrD5exeh1w7a2FcyUkRMELME9zDtLf7XZYB+Ksj12lkwyQraIQ56SWUOsCKeJ3 4fTZt5xw/OgPJO0sJtBA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rshT1-00000006bl0-0bzn; Fri, 05 Apr 2024 11:10:43 +0000 Received: from mail-lf1-x12d.google.com ([2a00:1450:4864:20::12d]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rshSn-00000006bcl-47Gn for openwrt-devel@lists.openwrt.org; Fri, 05 Apr 2024 11:10:33 +0000 Received: by mail-lf1-x12d.google.com with SMTP id 2adb3069b0e04-516c97ddcd1so2407198e87.2 for ; Fri, 05 Apr 2024 04:10:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1712315427; x=1712920227; darn=lists.openwrt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=fdDxShVpdfFt0NjuNFohiiYuYGo6XVeWOEAf0nh8Dg0=; b=eWVQFdkWMMz0p4D7X17tLykZT/UQsGO7jABX7rx14ZzxCVA12zyvm2PAU7OvMvMNLR Brrn5kRGcUxF5uEeKV0CkqyKL6FhjREIf8ruxIZxQ2e+ok3eVQCinkBqlWbhg8cbqpzZ IhOU8Gm00KbekDsPZ+GuTQkK/hxWJD4PbPgBblt57d0+FDMXprgvj3lOsaChXgXnxPhh e3AJVQYlxQ9s5lkhjgGi4l1z0ihyfVWH0nuCEGpX9ReU1bDgdFMypIKrcug5qhyCHDkV hhEo6cewuwu4rKZitbH+h0itfnVEsJSzOolcaPsZThXifozSFzsw1gPcCm1cFLtN4XUR BHoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712315427; x=1712920227; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:sender:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=fdDxShVpdfFt0NjuNFohiiYuYGo6XVeWOEAf0nh8Dg0=; b=AiY4fMcTHzjVBx8bOt+LhJComx+0GHRsBwg/7F8BNhoWTI4DMONP9w2/mAev4aCH0b PHjgCk9zQGULvMOZJzIPl56fENr/Px9Dh93AyJhb3V52EMx1a+5eg/W9Q+aYw13e3IUx tGA+/WtfZdkMl4rYPODIHcltilEPDIl64BLlIH9KtmJdpXwKVd1H5JXuSBKMNEhYhTHZ 3XZZs97pcmlfJcmFrd888NdhEov3Ha1L1eVbkJ0Dngfj8D78/2mVsP8miLV4/niSDqbB VqF/HVIiaVn/vEbdtbsedhwsOSFt9VNCf3dvjQc008uSjDXK+rjYIituC7EuRFkdXvX3 zilg== X-Gm-Message-State: AOJu0YyqqD+CJ/9GZVx8X9t5LUfcehZLB0nlQkoc+n/8gKDf2eoPN9+y 3ZXLpOR2dyqkykwWlETSmlJGdG8fjp5navsgEW4vTDQ4bF3zuKy8Y4kbwGHCWLdk+w== X-Google-Smtp-Source: AGHT+IE9KmxU0MZCwDkVcvnOfq5RnqLI8sjrqQ2Ce0KJmDTvhV7e11qqCmMCYrmiT68G4vqyNiGumA== X-Received: by 2002:a19:9155:0:b0:516:ce40:14a6 with SMTP id y21-20020a199155000000b00516ce4014a6mr660197lfj.1.1712315427062; Fri, 05 Apr 2024 04:10:27 -0700 (PDT) Received: from blackhol3 ([2001:9b0:40::cae3:cb03]) by smtp.gmail.com with ESMTPSA id g21-20020ac24d95000000b00516cdadf377sm163719lfe.137.2024.04.05.04.10.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 Apr 2024 04:10:26 -0700 (PDT) From: Paul Donald To: OpenWrt Development List Subject: [PATCH v2 1/9] various: refactor pref(erred) to preferred_lt (lifetime) Date: Fri, 5 Apr 2024 13:06:45 +0200 Message-ID: <20240405111025.26478-2-newtwen+github@gmail.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240405111025.26478-1-newtwen+github@gmail.com> References: <20240405005510.19778-1-newtwen+github@gmail.com> <20240405111025.26478-1-newtwen+github@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240405_041030_140887_09AC821B X-CRM114-Status: GOOD ( 20.68 ) X-Spam-Score: -0.2 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Paul Donald Refactor "preferred" (preferred what?) and "pref" (obscure) to "preferred_lt". It is now more difficult to conflate prefix, preference and other "pref" related terminology with preferred_lifetime. Content analysis details: (-0.2 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:12d listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [newtwen+github(at)gmail.com] X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org From: Paul Donald Refactor "preferred" (preferred what?) and "pref" (obscure) to "preferred_lt". It is now more difficult to conflate prefix, preference and other "pref" related terminology with preferred_lifetime. Signed-off-by: Paul Donald Reviewed-by: Daniel Golle --- src/dhcpv6-ia.c | 84 ++++++++++++++++++++++++------------------------- src/dhcpv6.c | 2 +- src/dhcpv6.h | 4 +-- src/netlink.c | 34 ++++++++++---------- src/odhcpd.c | 6 ++-- src/odhcpd.h | 2 +- src/router.c | 14 ++++----- 7 files changed, 73 insertions(+), 73 deletions(-) diff --git a/src/dhcpv6-ia.c b/src/dhcpv6-ia.c index 1fbed44..6a9098e 100644 --- a/src/dhcpv6-ia.c +++ b/src/dhcpv6-ia.c @@ -120,7 +120,7 @@ static inline bool valid_prefix_length(const struct dhcp_assignment *a, const ui static inline bool valid_addr(const struct odhcpd_ipaddr *addr, time_t now) { - return (addr->prefix <= 96 && addr->preferred > (uint32_t)now); + return (addr->prefix <= 96 && addr->preferred_lt > (uint32_t)now); } static size_t get_preferred_addr(const struct odhcpd_ipaddr *addrs, const size_t addrlen) @@ -128,8 +128,8 @@ static size_t get_preferred_addr(const struct odhcpd_ipaddr *addrs, const size_t size_t i, m; for (i = 0, m = 0; i < addrlen; ++i) { - if (addrs[i].preferred > addrs[m].preferred || - (addrs[i].preferred == addrs[m].preferred && + if (addrs[i].preferred_lt > addrs[m].preferred_lt || + (addrs[i].preferred_lt == addrs[m].preferred_lt && memcmp(&addrs[i].addr, &addrs[m].addr, 16) > 0)) m = i; } @@ -226,7 +226,7 @@ void dhcpv6_ia_enum_addrs(struct interface *iface, struct dhcp_assignment *c, for (size_t i = 0; i < addrlen; ++i) { struct in6_addr addr; - uint32_t pref, valid; + uint32_t preferred_lt, valid; int prefix = c->managed ? addrs[i].prefix : c->length; if (!valid_addr(&addrs[i], now)) @@ -242,7 +242,7 @@ void dhcpv6_ia_enum_addrs(struct interface *iface, struct dhcp_assignment *c, } addr = addrs[i].addr.in6; - pref = addrs[i].preferred; + preferred_lt = addrs[i].preferred_lt; valid = addrs[i].valid; if (c->flags & OAF_DHCPV6_NA) { @@ -259,14 +259,14 @@ void dhcpv6_ia_enum_addrs(struct interface *iface, struct dhcp_assignment *c, addr.s6_addr32[2] = addr.s6_addr32[3] = 0; } - if (pref > (uint32_t)c->preferred_until) - pref = c->preferred_until; + if (preferred_lt > (uint32_t)c->preferred_until) + preferred_lt = c->preferred_until; - if (pref > (uint32_t)c->valid_until) - pref = c->valid_until; + if (preferred_lt > (uint32_t)c->valid_until) + preferred_lt = c->valid_until; - if (pref != UINT32_MAX) - pref -= now; + if (preferred_lt != UINT32_MAX) + preferred_lt -= now; if (valid > (uint32_t)c->valid_until) valid = c->valid_until; @@ -274,7 +274,7 @@ void dhcpv6_ia_enum_addrs(struct interface *iface, struct dhcp_assignment *c, if (valid != UINT32_MAX) valid -= now; - func(&addr, prefix, pref, valid, arg); + func(&addr, prefix, preferred_lt, valid, arg); } } @@ -288,7 +288,7 @@ struct write_ctxt { int buf_idx; }; -static void dhcpv6_write_ia_addrhosts(struct in6_addr *addr, int prefix, _unused uint32_t pref, +static void dhcpv6_write_ia_addrhosts(struct in6_addr *addr, int prefix, _unused uint32_t pref_lt, _unused uint32_t valid, void *arg) { struct write_ctxt *ctxt = (struct write_ctxt *)arg; @@ -308,7 +308,7 @@ static void dhcpv6_write_ia_addrhosts(struct in6_addr *addr, int prefix, _unused } } -static void dhcpv6_write_ia_addr(struct in6_addr *addr, int prefix, _unused uint32_t pref, +static void dhcpv6_write_ia_addr(struct in6_addr *addr, int prefix, _unused uint32_t pref_lt, _unused uint32_t valid, void *arg) { struct write_ctxt *ctxt = (struct write_ctxt *)arg; @@ -629,7 +629,7 @@ static void set_border_assignment_size(struct interface *iface, struct dhcp_assi if (ADDR_MATCH_PIO_FILTER(addr, iface)) continue; - if (addr->preferred > (uint32_t)now && + if (addr->preferred_lt > (uint32_t)now && addr->prefix < 64 && addr->prefix > minprefix) minprefix = addr->prefix; @@ -678,20 +678,20 @@ static void managed_handle_pd_data(struct ustream *s, _unused int bytes_new) continue; x = strtok_r(NULL, ",", &saveptr2); - if (sscanf(x, "%u", &n->preferred) < 1) + if (sscanf(x, "%u", &n->preferred_lt) < 1) continue; x = strtok_r(NULL, ",", &saveptr2); if (sscanf(x, "%u", &n->valid) < 1) continue; - if (n->preferred > n->valid) + if (n->preferred_lt > n->valid) continue; - if (UINT32_MAX - now < n->preferred) - n->preferred = UINT32_MAX; + if (UINT32_MAX - now < n->preferred_lt) + n->preferred_lt = UINT32_MAX; else - n->preferred += now; + n->preferred_lt += now; if (UINT32_MAX - now < n->valid) n->valid = UINT32_MAX; @@ -1037,14 +1037,14 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, } if (a) { - uint32_t leasetime, pref; + uint32_t leasetime, preferred_lt; if (a->leasetime) { leasetime = a->leasetime; - pref = a->leasetime; + preferred_lt = a->leasetime; } else { leasetime = iface->dhcp_leasetime; - pref = iface->preferred_lifetime; + preferred_lt = iface->preferred_lifetime; } uint32_t valid = leasetime; @@ -1054,7 +1054,7 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, size_t m = get_preferred_addr(addrs, addrlen); for (size_t i = 0; i < addrlen; ++i) { - uint32_t prefix_pref, prefix_valid; + uint32_t prefix_preferred_lt, prefix_valid; if (!valid_addr(&addrs[i], now)) continue; @@ -1068,14 +1068,14 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, continue; } - prefix_pref = addrs[i].preferred; + prefix_preferred_lt = addrs[i].preferred_lt; prefix_valid = addrs[i].valid; - if (prefix_pref != UINT32_MAX) - prefix_pref -= now; + if (prefix_preferred_lt != UINT32_MAX) + prefix_preferred_lt -= now; - if (prefix_pref > pref) - prefix_pref = pref; + if (prefix_preferred_lt > preferred_lt) + prefix_preferred_lt = preferred_lt; if (prefix_valid != UINT32_MAX) prefix_valid -= now; @@ -1083,14 +1083,14 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, if (prefix_valid > leasetime) prefix_valid = leasetime; - if (prefix_pref > prefix_valid) - prefix_pref = prefix_valid; + if (prefix_preferred_lt > prefix_valid) + prefix_preferred_lt = prefix_valid; if (a->flags & OAF_DHCPV6_PD) { struct dhcpv6_ia_prefix o_ia_p = { .type = htons(DHCPV6_OPT_IA_PREFIX), .len = htons(sizeof(o_ia_p) - 4), - .preferred = htonl(prefix_pref), + .preferred_lt = htonl(prefix_preferred_lt), .valid = htonl(prefix_valid), .prefix = (a->managed_size) ? addrs[i].prefix : a->length, .addr = addrs[i].addr.in6, @@ -1114,7 +1114,7 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, .type = htons(DHCPV6_OPT_IA_ADDR), .len = htons(sizeof(o_ia_a) - 4), .addr = addrs[i].addr.in6, - .preferred = htonl(prefix_pref), + .preferred_lt = htonl(prefix_preferred_lt), .valid = htonl(prefix_valid) }; @@ -1132,9 +1132,9 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, } /* Calculate T1 / T2 based on non-deprecated addresses */ - if (prefix_pref > 0) { - if (prefix_pref < pref) - pref = prefix_pref; + if (prefix_preferred_lt > 0) { + if (prefix_preferred_lt < preferred_lt) + preferred_lt = prefix_preferred_lt; if (prefix_valid < valid) valid = prefix_valid; @@ -1147,10 +1147,10 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, if (!INFINITE_VALID(a->preferred_until)) /* UINT32_MAX is considered as infinite leasetime */ - a->preferred_until = (pref == UINT32_MAX) ? 0 : pref + now; + a->preferred_until = (preferred_lt == UINT32_MAX) ? 0 : preferred_lt + now; - o_ia.t1 = htonl((pref == UINT32_MAX) ? pref : pref * 5 / 10); - o_ia.t2 = htonl((pref == UINT32_MAX) ? pref : pref * 8 / 10); + o_ia.t1 = htonl((preferred_lt == UINT32_MAX) ? preferred_lt : preferred_lt * 5 / 10); + o_ia.t2 = htonl((preferred_lt == UINT32_MAX) ? preferred_lt : preferred_lt * 8 / 10); if (!o_ia.t1) o_ia.t1 = htonl(1); @@ -1211,7 +1211,7 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, struct dhcpv6_ia_prefix o_ia_p = { .type = htons(DHCPV6_OPT_IA_PREFIX), .len = htons(sizeof(o_ia_p) - 4), - .preferred = 0, + .preferred_lt = 0, .valid = 0, .prefix = ia_p->prefix, .addr = ia_p->addr, @@ -1227,7 +1227,7 @@ static size_t build_ia(uint8_t *buf, size_t buflen, uint16_t status, .type = htons(DHCPV6_OPT_IA_ADDR), .len = htons(sizeof(o_ia_a) - 4), .addr = ia_a->addr, - .preferred = 0, + .preferred_lt = 0, .valid = 0, }; @@ -1252,7 +1252,7 @@ struct log_ctxt { int buf_idx; }; -static void dhcpv6_log_ia_addr(struct in6_addr *addr, int prefix, _unused uint32_t pref, +static void dhcpv6_log_ia_addr(struct in6_addr *addr, int prefix, _unused uint32_t pref_lt, _unused uint32_t valid, void *arg) { struct log_ctxt *ctxt = (struct log_ctxt *)arg; diff --git a/src/dhcpv6.c b/src/dhcpv6.c index b086fd8..b0e5a79 100644 --- a/src/dhcpv6.c +++ b/src/dhcpv6.c @@ -773,7 +773,7 @@ static struct odhcpd_ipaddr *relay_link_address(struct interface *iface) if (iface->addr6[i].valid <= (uint32_t)now) continue; - if (iface->addr6[i].preferred > (uint32_t)now) { + if (iface->addr6[i].preferred_lt > (uint32_t)now) { addr = &iface->addr6[i]; break; } diff --git a/src/dhcpv6.h b/src/dhcpv6.h index f344969..8681d7f 100644 --- a/src/dhcpv6.h +++ b/src/dhcpv6.h @@ -130,7 +130,7 @@ struct dhcpv6_ia_hdr { struct dhcpv6_ia_prefix { uint16_t type; uint16_t len; - uint32_t preferred; + uint32_t preferred_lt; uint32_t valid; uint8_t prefix; struct in6_addr addr; @@ -140,7 +140,7 @@ struct dhcpv6_ia_addr { uint16_t type; uint16_t len; struct in6_addr addr; - uint32_t preferred; + uint32_t preferred_lt; uint32_t valid; } _packed; diff --git a/src/netlink.c b/src/netlink.c index c2b9576..cf77035 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -206,8 +206,8 @@ static void refresh_iface_addr6(int ifindex) for (ssize_t i = 0; !change && i < len; ++i) { if (!IN6_ARE_ADDR_EQUAL(&addr[i].addr.in6, &iface->addr6[i].addr.in6) || addr[i].prefix != iface->addr6[i].prefix || - (addr[i].preferred > (uint32_t)now) != (iface->addr6[i].preferred > (uint32_t)now) || - addr[i].valid < iface->addr6[i].valid || addr[i].preferred < iface->addr6[i].preferred) + (addr[i].preferred_lt > (uint32_t)now) != (iface->addr6[i].preferred_lt > (uint32_t)now) || + addr[i].valid < iface->addr6[i].valid || addr[i].preferred_lt < iface->addr6[i].preferred_lt) change = true; } @@ -258,7 +258,7 @@ static void refresh_iface_addr6(int ifindex) iface->invalid_addr6 = new_invalid_addr6; iface->invalid_addr6_len++; memcpy(&iface->invalid_addr6[pos], &iface->addr6[i], sizeof(*iface->invalid_addr6)); - iface->invalid_addr6[pos].valid = iface->invalid_addr6[pos].preferred = (uint32_t)now; + iface->invalid_addr6[pos].valid = iface->invalid_addr6[pos].preferred_lt = (uint32_t)now; if (iface->invalid_addr6[pos].prefix < 64) iface->invalid_addr6[pos].prefix = 64; @@ -630,12 +630,12 @@ static int cb_addr_valid(struct nl_msg *msg, void *arg) if (nla[IFA_CACHEINFO]) { struct ifa_cacheinfo *ifc = nla_data(nla[IFA_CACHEINFO]); - addrs[ctxt->ret].preferred = ifc->ifa_prefered; + addrs[ctxt->ret].preferred_lt = ifc->ifa_prefered; addrs[ctxt->ret].valid = ifc->ifa_valid; } if (ifa->ifa_flags & IFA_F_DEPRECATED) - addrs[ctxt->ret].preferred = 0; + addrs[ctxt->ret].preferred_lt = 0; if (ifa->ifa_family == AF_INET6 && ifa->ifa_flags & IFA_F_TENTATIVE) @@ -689,9 +689,9 @@ static int prefix_cmp(const void *va, const void *vb) static int prefix6_cmp(const void *va, const void *vb) { const struct odhcpd_ipaddr *a = va, *b = vb; - uint32_t a_pref = IN6_IS_ADDR_ULA(&a->addr.in6) ? 1 : a->preferred; - uint32_t b_pref = IN6_IS_ADDR_ULA(&b->addr.in6) ? 1 : b->preferred; - return (a_pref < b_pref) ? 1 : (a_pref > b_pref) ? -1 : 0; + uint32_t a_pref_lt = IN6_IS_ADDR_ULA(&a->addr.in6) ? 1 : a->preferred_lt; + uint32_t b_pref_lt = IN6_IS_ADDR_ULA(&b->addr.in6) ? 1 : b->preferred_lt; + return (a_pref_lt < b_pref_lt) ? 1 : (a_pref_lt > b_pref_lt) ? -1 : 0; } @@ -749,8 +749,8 @@ ssize_t netlink_get_interface_addrs(int ifindex, bool v6, struct odhcpd_ipaddr * qsort(addr, ctxt.ret, sizeof(*addr), v6 ? prefix6_cmp : prefix_cmp); for (ssize_t i = 0; i < ctxt.ret; ++i) { - if (addr[i].preferred < UINT32_MAX - now) - addr[i].preferred += now; + if (addr[i].preferred_lt < UINT32_MAX - now) + addr[i].preferred_lt += now; if (addr[i].valid < UINT32_MAX - now) addr[i].valid += now; @@ -1114,14 +1114,14 @@ int netlink_setup_addr(struct odhcpd_ipaddr *addr, .tstamp = 0 }; time_t now = odhcpd_time(); - if (addr->preferred) { - int64_t preferred = addr->preferred - now; - if (preferred < 0) - preferred = 0; - else if (preferred > UINT32_MAX) - preferred = UINT32_MAX; + if (addr->preferred_lt) { + int64_t preferred_lt = addr->preferred_lt - now; + if (preferred_lt < 0) + preferred_lt = 0; + else if (preferred_lt > UINT32_MAX) + preferred_lt = UINT32_MAX; - cinfo.ifa_prefered = preferred; + cinfo.ifa_prefered = preferred_lt; } if (addr->valid) { diff --git a/src/odhcpd.c b/src/odhcpd.c index 554e5f1..e2e89c0 100644 --- a/src/odhcpd.c +++ b/src/odhcpd.c @@ -277,8 +277,8 @@ int odhcpd_get_interface_dns_addr(const struct interface *iface, struct in6_addr continue; } - if (iface->addr6[m].preferred >= (uint32_t)now && - iface->addr6[i].preferred < (uint32_t)now) + if (iface->addr6[m].preferred_lt >= (uint32_t)now && + iface->addr6[i].preferred_lt < (uint32_t)now) continue; if (IN6_IS_ADDR_ULA(&iface->addr6[i].addr.in6)) { @@ -289,7 +289,7 @@ int odhcpd_get_interface_dns_addr(const struct interface *iface, struct in6_addr } else if (IN6_IS_ADDR_ULA(&iface->addr6[m].addr.in6)) continue; - if (iface->addr6[i].preferred > iface->addr6[m].preferred) + if (iface->addr6[i].preferred_lt > iface->addr6[m].preferred_lt) m = i; } diff --git a/src/odhcpd.h b/src/odhcpd.h index 02b6ac0..df27c14 100644 --- a/src/odhcpd.h +++ b/src/odhcpd.h @@ -126,7 +126,7 @@ struct netevent_handler { struct odhcpd_ipaddr { union if_addr addr; uint8_t prefix; - uint32_t preferred; + uint32_t preferred_lt; uint32_t valid; union { diff --git a/src/router.c b/src/router.c index d5ef7f8..55f3acb 100644 --- a/src/router.c +++ b/src/router.c @@ -301,7 +301,7 @@ static bool router_icmpv6_valid(struct sockaddr_in6 *source, uint8_t *data, size static bool parse_routes(struct odhcpd_ipaddr *n, ssize_t len) { struct odhcpd_ipaddr p = { .addr.in6 = IN6ADDR_ANY_INIT, .prefix = 0, - .dprefix = 0, .preferred = 0, .valid = 0}; + .dprefix = 0, .preferred_lt = 0, .valid = 0}; bool found_default = false; char line[512], ifname[16]; @@ -549,7 +549,7 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr for (ssize_t i = 0; i < valid_addr_cnt + invalid_addr_cnt; ++i) { struct odhcpd_ipaddr *addr = &addrs[i]; struct nd_opt_prefix_info *p = NULL; - uint32_t preferred = 0; + uint32_t preferred_lt = 0; uint32_t valid = 0; if (addr->prefix > 96 || (i < valid_addr_cnt && addr->valid <= (uint32_t)now)) { @@ -587,12 +587,12 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr memset(p, 0, sizeof(*p)); } - if (addr->preferred > (uint32_t)now) { - preferred = TIME_LEFT(addr->preferred, now); + if (addr->preferred_lt > (uint32_t)now) { + preferred_lt = TIME_LEFT(addr->preferred_lt, now); if (iface->ra_useleasetime && - preferred > iface->preferred_lifetime) - preferred = iface->preferred_lifetime; + preferred_lt > iface->preferred_lifetime) + preferred_lt = iface->preferred_lifetime; } if (addr->valid > (uint32_t)now) { @@ -620,7 +620,7 @@ static int send_router_advert(struct interface *iface, const struct in6_addr *fr p->nd_opt_pi_flags_reserved |= ND_OPT_PI_FLAG_AUTO; if (iface->ra_advrouter) p->nd_opt_pi_flags_reserved |= ND_OPT_PI_FLAG_RADDR; - p->nd_opt_pi_preferred_time = htonl(preferred); + p->nd_opt_pi_preferred_time = htonl(preferred_lt); p->nd_opt_pi_valid_time = htonl(valid); }