Stop using rt_ifp, ok?
Index: netinet/tcp_input.c
===================================================================
RCS file: /cvs/src/sys/netinet/tcp_input.c,v
retrieving revision 1.308
diff -u -p -r1.308 tcp_input.c
--- netinet/tcp_input.c 6 Nov 2015 11:20:56 -0000 1.308
+++ netinet/tcp_input.c 19 Nov 2015 11:12:56 -0000
@@ -2988,8 +2988,6 @@ tcp_mss(struct tcpcb *tp, int offer)
if (rt == NULL)
goto out;
- ifp = rt->rt_ifp;
-
switch (tp->pf) {
#ifdef INET6
case AF_INET6:
@@ -3004,6 +3002,7 @@ tcp_mss(struct tcpcb *tp, int offer)
goto out;
}
+ ifp = if_get(rt->rt_ifidx);
/*
* if there's an mtu associated with the route and we support
* path MTU discovery for the underlying protocol family, use it.
@@ -3025,7 +3024,7 @@ tcp_mss(struct tcpcb *tp, int offer)
mss = rt->rt_rmx.rmx_mtu - iphlen -
sizeof(struct tcphdr);
}
- } else if (!ifp) {
+ } else if (ifp == NULL) {
/*
* ifp may be null and rmx_mtu may be zero in certain
* v6 cases (e.g., if ND wasn't able to resolve the
@@ -3053,7 +3052,7 @@ tcp_mss(struct tcpcb *tp, int offer)
mssopt = ifp->if_mtu - iphlen - sizeof(struct tcphdr);
mssopt = max(tcp_mssdflt, mssopt);
}
-
+ if_put(ifp);
out:
/*
* The current mss, t_maxseg, is initialized to the default value.