From nobody Thu Apr 16 19:38:01 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fxSwT49WCz6ZVsk for ; Thu, 16 Apr 2026 19:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fxSwT3Lbnz3xfJ for ; Thu, 16 Apr 2026 19:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776368281; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=On9n7ytlFbZqx2n7rS4/GmlpfHvr1znvjUxo/2X8Doc=; b=CS/yQrRtKD9TynDSkFWXeF9LYQElkwpv1+drOugOw6Ac5zx7f00rwZmRptiDhIkJHy3LeY plwz9NFWwdhrz4Jc2OIebnaFOGaKYHCgCBl7+ZOgANLknwJh2tPm1lVuWo+fAv8/geQBlr hoI2qOd+GqHLVuiX5dN2Oi0+PxIxt1w4oFqhHxIdhSVdT/XXBqcNbJ4dnRhOKiiZ+HvE0i xCUaQ6cc3suZtAeQZPwYHGXCvmFGQ1CGX2AD0DatNtg0k01qXkfUf3ZTLKAE9nLJZHoVR6 VCRr9HIRVkGVwu86+5UxQcclbXXXugem1vO/bqKccuLyvH+V4nG/wCkuW70x9Q== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1776368281; a=rsa-sha256; cv=none; b=kXrZAB5exA8VLYq0lRkypd0IDkraEYre7OeosncEowDTgK0q1gpOrpRWYvaGegen1s4/jC kALU7IoopCDgcP17Fvio/kltPjyzaxOcEz3/UXuqOAtT+0zB/bOGQScB6oYRWXv8JulIdk 1JrIrZmvin16N+fGuWcXYrvGK7U5LHF8Yg/7QSIsmB2FHY/0I82onVSew3ZHM10Pyrc029 3w5bu4A8POwqJ6rKkz8NezxiZjfsBBPFjwioZjW4h6GgVxXdyh4a+nX1Ck+zGD5hCiTv9f Lvji7WUslkwdkvEZVxfL9woljUPrZ3glEf1gNNQ3p1KSY+oT7sEQ9sYSfRCLGg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1776368281; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=On9n7ytlFbZqx2n7rS4/GmlpfHvr1znvjUxo/2X8Doc=; b=ckc9SBQfJo7HZaTSnHHfiiDIZg+bsc1MBnroDX5mB2c1kk518TKvEBzpYyEec3Ocwcwran SBG/LQxYXmIZpnRQoFfu17RcmISqxKnLIMAEZ6Ueq8acnpDbdcyQSxmt3ZXajgcpMJJo7R rw0HSOkIblt1dkEH+k61T8N4tZmLY1UNY3wD4nVe46WzGBQsOmqpdYlbkCzy5kTYdfGCRa pJ2HqTl2pXsVxl86jcsXy+oscUEsYWd1efWK7ZyZoiSVqTk0jyp9NPvDL6pcah0ZDUPYje 978V8m8x1WZELRtbYjAKbijXlK+QuZKgzBXzDirFZJ/dwScIHMX8tveG6DIaSQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fxSwT2rj2z6Bb for ; Thu, 16 Apr 2026 19:38:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1894b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 16 Apr 2026 19:38:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Pouria Mousavizadeh Tehrani Subject: git: 4dc6522d57c7 - main - rtadvd(8): Set route info lifetime to 0 during shutdown List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pouria X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4dc6522d57c748cdaddd8327909574360a3de517 Auto-Submitted: auto-generated Date: Thu, 16 Apr 2026 19:38:01 +0000 Message-Id: <69e13a99.1894b.2cd6242f@gitrepo.freebsd.org> The branch main has been updated by pouria: URL: https://cgit.FreeBSD.org/src/commit/?id=4dc6522d57c748cdaddd8327909574360a3de517 commit 4dc6522d57c748cdaddd8327909574360a3de517 Author: Pouria Mousavizadeh Tehrani AuthorDate: 2026-04-01 13:29:15 +0000 Commit: Pouria Mousavizadeh Tehrani CommitDate: 2026-04-16 19:03:08 +0000 rtadvd(8): Set route info lifetime to 0 during shutdown RFC 4191 section 3.1: if the received route's lifetime is zero, the route is removed from the Routing Table if present. Also, do not tell route information option is unknown. PR: 263982 Reviewed by: markj Differential Revision: https://reviews.freebsd.org/D55448 --- usr.sbin/rtadvd/config.c | 3 +++ usr.sbin/rtadvd/rtadvd.c | 17 +++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c index 70fb2ed7dc28..8b7079c17822 100644 --- a/usr.sbin/rtadvd/config.c +++ b/usr.sbin/rtadvd/config.c @@ -1021,12 +1021,15 @@ getconfig_free_prf64: } else { struct rdnss *rdn; struct dnssl *dns; + struct rtinfo *rti; rai_old->rai_lifetime = 0; TAILQ_FOREACH(rdn, &rai_old->rai_rdnss, rd_next) rdn->rd_ltime = 0; TAILQ_FOREACH(dns, &rai_old->rai_dnssl, dn_next) dns->dn_ltime = 0; + TAILQ_FOREACH(rti, &rai_old->rai_route, rti_next) + rti->rti_ltime = 0; ifi->ifi_rainfo_trans = rai_old; ifi->ifi_state = IFI_STATE_TRANSITIVE; diff --git a/usr.sbin/rtadvd/rtadvd.c b/usr.sbin/rtadvd/rtadvd.c index 2e9bced7c00e..b772f78845d8 100644 --- a/usr.sbin/rtadvd/rtadvd.c +++ b/usr.sbin/rtadvd/rtadvd.c @@ -138,6 +138,7 @@ union nd_opt { #define NDOPT_FLAG_RDNSS (1 << 5) #define NDOPT_FLAG_DNSSL (1 << 6) #define NDOPT_FLAG_PREF64 (1 << 7) +#define NDOPT_FLAG_ROUTEINFO (1 << 8) static uint32_t ndopt_flags[] = { [ND_OPT_SOURCE_LINKADDR] = NDOPT_FLAG_SRCLINKADDR, @@ -148,6 +149,7 @@ static uint32_t ndopt_flags[] = { [ND_OPT_RDNSS] = NDOPT_FLAG_RDNSS, [ND_OPT_DNSSL] = NDOPT_FLAG_DNSSL, [ND_OPT_PREF64] = NDOPT_FLAG_PREF64, + [ND_OPT_ROUTE_INFO] = NDOPT_FLAG_ROUTEINFO, }; static void rtadvd_shutdown(void); @@ -372,6 +374,7 @@ rtadvd_shutdown(void) struct rainfo *rai; struct rdnss *rdn; struct dnssl *dns; + struct rtinfo *rti; if (wait_shutdown) { syslog(LOG_INFO, @@ -416,6 +419,8 @@ rtadvd_shutdown(void) rdn->rd_ltime = 0; TAILQ_FOREACH(dns, &rai->rai_dnssl, dn_next) dns->dn_ltime = 0; + TAILQ_FOREACH(rti, &rai->rai_route, rti_next) + rti->rti_ltime = 0; } TAILQ_FOREACH(ifi, &ifilist, ifi_next) { if (!ifi->ifi_persist) @@ -1085,7 +1090,8 @@ ra_input(int len, struct nd_router_advert *nra, error = nd6_options((struct nd_opt_hdr *)(nra + 1), len - sizeof(struct nd_router_advert), &ndopts, NDOPT_FLAG_SRCLINKADDR | NDOPT_FLAG_PREFIXINFO | NDOPT_FLAG_MTU | - NDOPT_FLAG_RDNSS | NDOPT_FLAG_DNSSL | NDOPT_FLAG_PREF64); + NDOPT_FLAG_RDNSS | NDOPT_FLAG_DNSSL | NDOPT_FLAG_PREF64 | + NDOPT_FLAG_ROUTEINFO); if (error) { syslog(LOG_INFO, "<%s> ND option check failed for an RA from %s on %s", @@ -1418,7 +1424,8 @@ nd6_options(struct nd_opt_hdr *hdr, int limit, if (hdr->nd_opt_type > ND_OPT_MTU && hdr->nd_opt_type != ND_OPT_RDNSS && hdr->nd_opt_type != ND_OPT_DNSSL && - hdr->nd_opt_type != ND_OPT_PREF64) { + hdr->nd_opt_type != ND_OPT_PREF64 && + hdr->nd_opt_type != ND_OPT_ROUTE_INFO) { syslog(LOG_INFO, "<%s> unknown ND option(type %d)", __func__, hdr->nd_opt_type); continue; @@ -1452,6 +1459,11 @@ nd6_options(struct nd_opt_hdr *hdr, int limit, case ND_OPT_PREFIX_INFORMATION: if (optlen == sizeof(struct nd_opt_prefix_info)) break; + goto skip; + case ND_OPT_ROUTE_INFO: + if (optlen >= 8 && optlen <= 24 && + (optlen - sizeof(struct nd_opt_route_info)) % 8 == 0) + break; skip: syslog(LOG_INFO, "<%s> invalid option length", __func__); @@ -1464,6 +1476,7 @@ skip: case ND_OPT_RDNSS: case ND_OPT_DNSSL: case ND_OPT_PREF64: + case ND_OPT_ROUTE_INFO: break; /* we don't care about these options */ case ND_OPT_SOURCE_LINKADDR: case ND_OPT_MTU: