From nobody Wed Apr 26 13:27:02 2023 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 4Q605f3sthz46W4R; Wed, 26 Apr 2023 13:27:02 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Q605f3G7Jz4FCY; Wed, 26 Apr 2023 13:27:02 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682515622; 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=bth6NTYmftHfj86Ge4mhLHFhvl4N4V6bk5njemTq/z8=; b=pQI25/fLrOBEss/HGANVc483eLlQUziPtisAsN7mq1jKCG/5b3TAgvFotjH0rJQpR1hvB8 +U2ewzvcVADssg5lNjhacRizl8TqKkmw4+LOF7aoeqZddCRgD1xlAGI4YfrRHZ6U+eaDio gSLaX7YGvN6gYHNLhAbQK5voBJVu7btfk74/VYR1i+nm466v+lrdVlM/YMVDLb95AiF9EY DzDsbJxlChaBF2tirHvdysHDuFeXDB2IYdzZL1p8YSkEYMyMIn2h1PIfMQ3k5Zj+PXfxD9 BrT38JbJqDl99qE19UVoEboIASptRJa+UR6Euc9zbg+Qq/4FJasdc/YlBsqRbg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1682515622; 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=bth6NTYmftHfj86Ge4mhLHFhvl4N4V6bk5njemTq/z8=; b=c1DxsZzFYdpZwQnE8uE7wTmqKozXFG3Y9GUG0qEG8uWsugCivFji1xGTFwYft6PV7fbKJM h6Z71gnKyR1qWsa7+z3GzD2BG+AF0pfs7D2gG5EuMu5bEUEzbdXwCVrdeUGxfM6vnGTi7x tUFChoW0ks2+6bCWt92DYt9Ts+h7uh70ItjQVCWk3tTOPq19k7iYXSL66GUZBzwgZgonBc nh7CTY0ZBRK5kl+N6+q3JIbZEbB2IdRhxsjBAbehsiZ5GVrV/QTG1Hep76T1hEvWgL3eL5 aX09kL+GT4qRxedIzgM31pouc4w/RrUIV9cbIVNbcKcHomjCI3UR5/ncggVnHQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1682515622; a=rsa-sha256; cv=none; b=RpOv+SFKmvSeYkXL1B8K03/YwieV2XLwzEzxs5x3xJwaeOQNSmyQ2AwVQwax7tUEmcVyFR iMwAEJ6LOM8KKX+BhhDLeAPvyjlfdXGepEeIUgL2zXRCelkbMw3T64vqPwWNgXXLJ7F9is uWwLFcgnkinpypcYcAm/6JwpRln0nmsLyuuLacfhmgWdCc78U+zpbS7ZGpem4aWH3+oWjY ea0BCKOfTzwGpofBNYvjcPod3BIjRaDgkWN7ulB3L+RL0fJPCzQ35zKbi0Ic2n7Hxmxq1T gSTVsNK6Fo+8zkm4LDGek0QdBGmk/JtbCj+WYw8wHREuAfFjptCe8p+4DKYvOA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Q605f2N5gzc3Y; Wed, 26 Apr 2023 13:27:02 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 33QDR213004589; Wed, 26 Apr 2023 13:27:02 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 33QDR21d004588; Wed, 26 Apr 2023 13:27:02 GMT (envelope-from git) Date: Wed, 26 Apr 2023 13:27:02 GMT Message-Id: <202304261327.33QDR21d004588@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: "Alexander V. Chernikov" Subject: git: 20b6945c7f54 - main - netlink: fix IPv6 proxy ndp deletion. 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: melifaro X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 20b6945c7f542a76b8c8f9f962403303ccee4227 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by melifaro: URL: https://cgit.FreeBSD.org/src/commit/?id=20b6945c7f542a76b8c8f9f962403303ccee4227 commit 20b6945c7f542a76b8c8f9f962403303ccee4227 Author: Alexander V. Chernikov AuthorDate: 2023-04-26 13:23:39 +0000 Commit: Alexander V. Chernikov CommitDate: 2023-04-26 13:26:37 +0000 netlink: fix IPv6 proxy ndp deletion. * Move LLT_ADDEDPROXY handling into lltable_link_entry() to reduct duplication * Use standard lltable_delete_addr() for entry deletion * Add (forgotten) call to llt_post_resolved handler after adding the entry via netlink. MFC after: 2 weeks --- sys/net/if_llatbl.c | 9 +++++---- sys/netlink/route/neigh.c | 24 ++---------------------- 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/sys/net/if_llatbl.c b/sys/net/if_llatbl.c index 86bf9a0d47db..f97c2f8f91de 100644 --- a/sys/net/if_llatbl.c +++ b/sys/net/if_llatbl.c @@ -904,8 +904,12 @@ lltable_free_entry(struct lltable *llt, struct llentry *lle) int lltable_link_entry(struct lltable *llt, struct llentry *lle) { + int error = llt->llt_link_entry(llt, lle); - return (llt->llt_link_entry(llt, lle)); + if (error == 0 && (lle->la_flags & LLE_PUB) != 0) + llt->llt_flags |= LLT_ADDEDPROXY; + + return (error); } void @@ -1034,9 +1038,6 @@ lla_rt_output(struct rt_msghdr *rtm, struct rt_addrinfo *info) lltable_unlink_entry(llt, lle_tmp); } lltable_link_entry(llt, lle); - if ((lle->la_flags & LLE_PUB) != 0 && - (llt->llt_flags & LLT_ADDEDPROXY) == 0) - llt->llt_flags |= LLT_ADDEDPROXY; IF_AFDATA_WUNLOCK(ifp); if (lle_tmp != NULL) { diff --git a/sys/netlink/route/neigh.c b/sys/netlink/route/neigh.c index daf0843e432c..db72bc9bfd4e 100644 --- a/sys/netlink/route/neigh.c +++ b/sys/netlink/route/neigh.c @@ -451,6 +451,7 @@ rtnl_handle_newneigh(struct nlmsghdr *hdr, struct nlpcb *nlp, struct nl_pstate * /* XXX: We're inside epoch */ EVENTHANDLER_INVOKE(lle_event, lle, LLENTRY_RESOLVED); LLE_WUNLOCK(lle); + llt->llt_post_resolved(llt, lle); return (0); } @@ -479,28 +480,7 @@ rtnl_handle_delneigh(struct nlmsghdr *hdr, struct nlpcb *nlp, struct nl_pstate * if (llt == NULL) return (EAFNOSUPPORT); - IF_AFDATA_WLOCK(attrs.nda_ifp); - struct llentry *lle = lla_lookup(llt, LLE_SF(attrs.ndm_family, LLE_EXCLUSIVE), - attrs.nda_dst); - if (lle != NULL) { - if ((lle->la_flags & LLE_IFADDR) != 0) { - LLE_WUNLOCK(lle); - lle = NULL; - error = EPERM; - NLMSG_REPORT_ERR_MSG(npt, "unable to delete ifaddr record"); - } else - lltable_unlink_entry(llt, lle); - } else - error = ENOENT; - IF_AFDATA_WUNLOCK(attrs.nda_ifp); - - if (error == 0 && lle != NULL) - EVENTHANDLER_INVOKE(lle_event, lle, LLENTRY_DELETED); - - if (lle != NULL) - llentry_free(lle); - - return (error); + return (lltable_delete_addr(llt, 0, attrs.nda_dst)); } static int