in_localaddr() is used only once in our tree and only if the sysctl
net.inet.ip.mtudisc is set to 0.

It is used to optimize the size of the MSS if the forward address
correspond to a host on one of our subnets.  Since it's an
optimization for a special case that's not enabled by default, I'd
like to  kill it to remove one usage of the global list of IPv4 
addresses.

While here get rid of the "#ifdef RTV_MTU", it is here.

ok?


Index: netinet/in.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/in.c,v
retrieving revision 1.95
diff -u -p -r1.95 in.c
--- netinet/in.c        10 Apr 2014 13:47:21 -0000      1.95
+++ netinet/in.c        24 Apr 2014 14:33:43 -0000
@@ -99,22 +99,6 @@ int in_scrubprefix(struct in_ifaddr *);
 int in_addhost(struct in_ifaddr *);
 int in_scrubhost(struct in_ifaddr *);
 
-/* Return 1 if an internet address is for a directly connected host */
-int
-in_localaddr(struct in_addr in, u_int rdomain)
-{
-       struct in_ifaddr *ia;
-
-       rdomain = rtable_l2(rdomain);
-       TAILQ_FOREACH(ia, &in_ifaddr, ia_list) {
-               if (ia->ia_ifp->if_rdomain != rdomain)
-                       continue;
-               if ((in.s_addr & ia->ia_netmask) == ia->ia_net)
-                       return (1);
-       }
-       return (0);
-}
-
 /*
  * Determine whether an IP address is in a reserved set of addresses
  * that may not be forwarded, or whether datagrams to that destination
Index: netinet/in.h
===================================================================
RCS file: /home/ncvs/src/sys/netinet/in.h,v
retrieving revision 1.107
diff -u -p -r1.107 in.h
--- netinet/in.h        21 Apr 2014 10:07:58 -0000      1.107
+++ netinet/in.h        24 Apr 2014 14:33:43 -0000
@@ -778,7 +778,6 @@ int    in_broadcast(struct in_addr, stru
 int       in_canforward(struct in_addr);
 int       in_cksum(struct mbuf *, int);
 int       in4_cksum(struct mbuf *, u_int8_t, int, int);
-int       in_localaddr(struct in_addr, u_int);
 void      in_proto_cksum_out(struct mbuf *, struct ifnet *);
 void      in_ifdetach(struct ifnet *);
 int       in_mask2len(struct in_addr *);
Index: netinet/tcp_input.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/tcp_input.c,v
retrieving revision 1.275
diff -u -p -r1.275 tcp_input.c
--- netinet/tcp_input.c 21 Apr 2014 12:22:26 -0000      1.275
+++ netinet/tcp_input.c 24 Apr 2014 14:33:43 -0000
@@ -3040,7 +3040,6 @@ tcp_mss(struct tcpcb *tp, int offer)
                goto out;
        }
 
-#ifdef RTV_MTU
        /*
         * if there's an mtu associated with the route and we support
         * path MTU discovery for the underlying protocol family, use it.
@@ -3058,23 +3057,21 @@ tcp_mss(struct tcpcb *tp, int offer)
                         */
                        mss = IPV6_MMTU - iphlen - sizeof(struct ip6_frag) -
                            sizeof(struct tcphdr);
-               } else
-                       mss = rt->rt_rmx.rmx_mtu - iphlen - sizeof(struct 
tcphdr);
-       } else
-#endif /* RTV_MTU */
-       if (!ifp)
+               } else {
+                       mss = rt->rt_rmx.rmx_mtu - iphlen -
+                           sizeof(struct tcphdr);
+               }
+       } else if (!ifp) {
                /*
                 * ifp may be null and rmx_mtu may be zero in certain
                 * v6 cases (e.g., if ND wasn't able to resolve the
                 * destination host.
                 */
                goto out;
-       else if (ifp->if_flags & IFF_LOOPBACK)
+       } else if (ifp->if_flags & IFF_LOOPBACK) {
                mss = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
-       else if (tp->pf == AF_INET) {
+       } else if (tp->pf == AF_INET) {
                if (ip_mtudisc)
-                       mss = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
-               else if (inp && in_localaddr(inp->inp_faddr, inp->inp_rtableid))
                        mss = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
        }
 #ifdef INET6

Reply via email to