summaryrefslogtreecommitdiff
path: root/sys/netinet/tcp_subr.c
diff options
context:
space:
mode:
authorJulian Elischer <julian@FreeBSD.org>2008-05-09 23:03:00 +0000
committerJulian Elischer <julian@FreeBSD.org>2008-05-09 23:03:00 +0000
commit8b07e49a008c89a15e1fc4a1e3db6d945f81fab4 (patch)
tree1bc85679564ad62b5790f35580ebdcc21ca90f8b /sys/netinet/tcp_subr.c
parenta15370c6aa962e0030c1ae024292d76c112d6ea2 (diff)
Notes
Diffstat (limited to 'sys/netinet/tcp_subr.c')
-rw-r--r--sys/netinet/tcp_subr.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/sys/netinet/tcp_subr.c b/sys/netinet/tcp_subr.c
index aaac6d66e47b..364221971f37 100644
--- a/sys/netinet/tcp_subr.c
+++ b/sys/netinet/tcp_subr.c
@@ -471,6 +471,10 @@ tcp_respond(struct tcpcb *tp, void *ipgen, struct tcphdr *th, struct mbuf *m,
bcopy((caddr_t)th, (caddr_t)nth, sizeof(struct tcphdr));
flags = TH_ACK;
} else {
+ /*
+ * reuse the mbuf.
+ * XXX MRT We inherrit the FIB, which is lucky.
+ */
m_freem(m->m_next);
m->m_next = NULL;
m->m_data = (caddr_t)ipgen;
@@ -1199,6 +1203,8 @@ tcp_ctlinput(int cmd, struct sockaddr *sa, void *vip)
bzero(&inc, sizeof(inc));
inc.inc_flags = 0; /* IPv4 */
inc.inc_faddr = faddr;
+ inc.inc_fibnum =
+ inp->inp_inc.inc_fibnum;
mtu = ntohs(icp->icmp_nextmtu);
/*
@@ -1595,7 +1601,7 @@ tcp_maxmtu(struct in_conninfo *inc, int *flags)
dst->sin_family = AF_INET;
dst->sin_len = sizeof(*dst);
dst->sin_addr = inc->inc_faddr;
- rtalloc_ign(&sro, RTF_CLONING);
+ in_rtalloc_ign(&sro, RTF_CLONING, inc->inc_fibnum);
}
if (sro.ro_rt != NULL) {
ifp = sro.ro_rt->rt_ifp;