Page MenuHomeFreeBSD

D55661.id173156.diff
No OneTemporary

D55661.id173156.diff

diff --git a/sys/netinet/in_pcb.c b/sys/netinet/in_pcb.c
--- a/sys/netinet/in_pcb.c
+++ b/sys/netinet/in_pcb.c
@@ -1427,10 +1427,12 @@
in_pcbremhash_locked(inp);
/* See the comment in in_pcbinshash(). */
- inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr);
- inp->inp_laddr.s_addr = INADDR_ANY;
- inp->inp_faddr.s_addr = INADDR_ANY;
- inp->inp_fport = 0;
+ if (!(inp->inp_socket->so_proto->pr_flags & PR_CONNREQUIRED)) {
+ inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr);
+ inp->inp_laddr.s_addr = INADDR_ANY;
+ inp->inp_faddr.s_addr = INADDR_ANY;
+ inp->inp_fport = 0;
+ }
}
#endif /* INET */
diff --git a/sys/netinet6/in6_pcb.c b/sys/netinet6/in6_pcb.c
--- a/sys/netinet6/in6_pcb.c
+++ b/sys/netinet6/in6_pcb.c
@@ -540,12 +540,13 @@
in_pcbremhash_locked(inp);
/* See the comment in in_pcbinshash(). */
- inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr);
-
- /* XXX-MJ torn writes are visible to SMR lookup */
- memset(&inp->in6p_laddr, 0, sizeof(inp->in6p_laddr));
- memset(&inp->in6p_faddr, 0, sizeof(inp->in6p_faddr));
- inp->inp_fport = 0;
+ if (!(inp->inp_socket->so_proto->pr_flags & PR_CONNREQUIRED)) {
+ inp->inp_smr = smr_advance(inp->inp_pcbinfo->ipi_smr);
+ /* XXX-MJ torn writes are visible to SMR lookup */
+ memset(&inp->in6p_laddr, 0, sizeof(inp->in6p_laddr));
+ memset(&inp->in6p_faddr, 0, sizeof(inp->in6p_faddr));
+ inp->inp_fport = 0;
+ }
/* clear flowinfo - draft-itojun-ipv6-flowlabel-api-00 */
inp->inp_flow &= ~IPV6_FLOWLABEL_MASK;
}

File Metadata

Mime Type
text/plain
Expires
Sun, May 17, 10:18 PM (3 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
33212902
Default Alt Text
D55661.id173156.diff (1 KB)

Event Timeline