The branch main has been updated by glebius:

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

commit 948f31d7b0ed31a834b31ac63f314aecef474dfe
Author:     Gleb Smirnoff <gleb...@freebsd.org>
AuthorDate: 2022-08-12 15:31:28 +0000
Commit:     Gleb Smirnoff <gleb...@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);

Reply via email to