Page MenuHomeFreeBSD

D6148.id15728.diff
No OneTemporary

D6148.id15728.diff

Index: sys/netinet/tcp_syncache.c
===================================================================
--- sys/netinet/tcp_syncache.c
+++ sys/netinet/tcp_syncache.c
@@ -1505,6 +1505,10 @@
return (rv);
}
+/*
+ * Send SYN|ACK to the peer. Either in response to the peer's SYN,
+ * i.e. m0 != NULL, or upon 3WHS ACK timeout, i.e. m0 == NULL.
+ */
static int
syncache_respond(struct syncache *sc, struct syncache_head *sch, int locked,
const struct mbuf *m0)
@@ -1688,6 +1692,11 @@
M_SETFIB(m, sc->sc_inc.inc_fibnum);
m->m_pkthdr.csum_data = offsetof(struct tcphdr, th_sum);
+ /*
+ * If we have peer's SYN and it has a flowid, then let's assign it to
+ * our SYN|ACK. ip6_output() and ip_output() will not assign flowid
+ * to SYN|ACK due to lack of inp here.
+ */
if (m0 != NULL && M_HASHTYPE_GET(m0) != M_HASHTYPE_NONE) {
m->m_pkthdr.flowid = m0->m_pkthdr.flowid;
M_HASHTYPE_SET(m, M_HASHTYPE_GET(m0));

File Metadata

Mime Type
text/plain
Expires
Wed, Jan 8, 9:55 PM (3 h, 20 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15726902
Default Alt Text
D6148.id15728.diff (932 B)

Event Timeline