Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Aug 2022 15:32:47 GMT
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 948f31d7b0ed - main - netinet: do not broadcast PRC_REDIRECT_HOST on ICMP redirect
Message-ID:  <202208121532.27CFWlmr042819@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by glebius:

URL: https://cgit.FreeBSD.org/src/commit/?id=948f31d7b0ed31a834b31ac63f314aecef474dfe

commit 948f31d7b0ed31a834b31ac63f314aecef474dfe
Author:     Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2022-08-12 15:31:28 +0000
Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2022-08-12 15:31:29 +0000

    netinet: do not broadcast PRC_REDIRECT_HOST on ICMP redirect
    
    This is expensive and useless call.  It has been useless since Alexander
    melifaro@ moved the forwarding table to nexthops with passive invalidation.
    What happens now is that cached route in a inpcb would get invalidated
    on next ip_output().
    
    These were the last users of pfctlinput(), so garbage collect it.
    
    Reviewed by:            melifaro
    Differential revision:  https://reviews.freebsd.org/D36156
---
 sys/kern/uipc_domain.c | 14 --------------
 sys/netinet/ip_icmp.c  |  1 -
 sys/netinet6/icmp6.c   | 10 ----------
 sys/sys/protosw.h      |  1 -
 4 files changed, 26 deletions(-)

diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c
index 07e5f829e957..c70b3150cbf0 100644
--- a/sys/kern/uipc_domain.c
+++ b/sys/kern/uipc_domain.c
@@ -464,20 +464,6 @@ pf_proto_unregister(int family, int protocol, int type)
 	return (0);
 }
 
-void
-pfctlinput(int cmd, struct sockaddr *sa)
-{
-	struct domain *dp;
-	struct protosw *pr;
-
-	NET_EPOCH_ASSERT();
-
-	for (dp = domains; dp; dp = dp->dom_next)
-		for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
-			if (pr->pr_ctlinput)
-				(*pr->pr_ctlinput)(cmd, sa, (void *)0);
-}
-
 static void
 pfslowtimo(void *arg)
 {
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c
index a710cc2ba8cd..2e548a539bf7 100644
--- a/sys/netinet/ip_icmp.c
+++ b/sys/netinet/ip_icmp.c
@@ -729,7 +729,6 @@ reflect:
 			    (struct sockaddr *)&icmpgw, m->m_pkthdr.rcvif,
 			    RTF_GATEWAY, V_redirtimeout);
 		}
-		pfctlinput(PRC_REDIRECT_HOST, (struct sockaddr *)&icmpsrc);
 		break;
 
 	/*
diff --git a/sys/netinet6/icmp6.c b/sys/netinet6/icmp6.c
index 832061ad9328..132b62260ab7 100644
--- a/sys/netinet6/icmp6.c
+++ b/sys/netinet6/icmp6.c
@@ -2350,16 +2350,6 @@ icmp6_redirect_input(struct mbuf *m, int off)
 			    (struct sockaddr *)&ssrc, ifp, rt_flags,
 			    V_icmp6_redirtimeout);
 	}
-	/* finally update cached route in each socket via pfctlinput */
-    {
-	struct sockaddr_in6 sdst;
-
-	bzero(&sdst, sizeof(sdst));
-	sdst.sin6_family = AF_INET6;
-	sdst.sin6_len = sizeof(struct sockaddr_in6);
-	bcopy(&reddst6, &sdst.sin6_addr, sizeof(struct in6_addr));
-	pfctlinput(PRC_REDIRECT_HOST, (struct sockaddr *)&sdst);
-    }
 
  freeit:
 	m_freem(m);
diff --git a/sys/sys/protosw.h b/sys/sys/protosw.h
index 7c7eece83e78..78c25e6e77f6 100644
--- a/sys/sys/protosw.h
+++ b/sys/sys/protosw.h
@@ -364,7 +364,6 @@ char	*prcorequests[] = {
 #endif
 
 #ifdef _KERNEL
-void	pfctlinput(int, struct sockaddr *);
 struct domain *pffinddomain(int family);
 struct protosw *pffindproto(int family, int protocol, int type);
 struct protosw *pffindtype(int family, int type);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202208121532.27CFWlmr042819>