Page MenuHomeFreeBSD

D36062.diff
No OneTemporary

D36062.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
@@ -635,12 +635,23 @@
#endif /*IPSEC*/
#ifdef INET6
if (INP_SOCKAF(so) == AF_INET6) {
- inp->inp_vflag |= INP_IPV6PROTO;
+ inp->inp_vflag |= INP_IPV6PROTO | INP_IPV6;
if (V_ip6_v6only)
inp->inp_flags |= IN6P_IPV6_V6ONLY;
+#ifdef INET
+ else
+ inp->inp_vflag |= INP_IPV4;
+#endif
+ if (V_ip6_auto_flowlabel)
+ inp->inp_flags |= IN6P_AUTOFLOWLABEL;
+ inp->in6p_hops = -1; /* use kernel default */
}
- if (V_ip6_auto_flowlabel)
- inp->inp_flags |= IN6P_AUTOFLOWLABEL;
+#endif
+#if defined(INET) && defined(INET6)
+ else
+#endif
+#ifdef INET
+ inp->inp_vflag |= INP_IPV4;
#endif
/*
* Routes in inpcb's can cache L2 as well; they are guaranteed
diff --git a/sys/netinet/ip_divert.c b/sys/netinet/ip_divert.c
--- a/sys/netinet/ip_divert.c
+++ b/sys/netinet/ip_divert.c
@@ -593,7 +593,6 @@
return error;
inp = (struct inpcb *)so->so_pcb;
inp->inp_ip_p = proto;
- inp->inp_vflag |= INP_IPV4;
inp->inp_flags |= INP_HDRINCL;
INP_WUNLOCK(inp);
return 0;
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -857,7 +857,6 @@
if (error)
return (error);
inp = (struct inpcb *)so->so_pcb;
- inp->inp_vflag |= INP_IPV4;
inp->inp_ip_p = proto;
inp->inp_ip_ttl = V_ip_defttl;
INP_HASH_WLOCK(&V_ripcbinfo);
diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c
--- a/sys/netinet/tcp_usrreq.c
+++ b/sys/netinet/tcp_usrreq.c
@@ -184,16 +184,6 @@
if (error)
goto out;
inp = sotoinpcb(so);
-#ifdef INET6
- if (inp->inp_vflag & INP_IPV6PROTO) {
- inp->inp_vflag |= INP_IPV6;
- if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0)
- inp->inp_vflag |= INP_IPV4;
- inp->in6p_hops = -1; /* use kernel default */
- }
- else
-#endif
- inp->inp_vflag |= INP_IPV4;
tp = tcp_newtcpcb(inp);
if (tp == NULL) {
error = ENOBUFS;
diff --git a/sys/netinet/udp_usrreq.c b/sys/netinet/udp_usrreq.c
--- a/sys/netinet/udp_usrreq.c
+++ b/sys/netinet/udp_usrreq.c
@@ -1529,7 +1529,6 @@
return (error);
inp = sotoinpcb(so);
- inp->inp_vflag |= INP_IPV4;
inp->inp_ip_ttl = V_ip_defttl;
inp->inp_flowid = atomic_fetchadd_int(&udp_flowid, 1);
inp->inp_flowtype = M_HASHTYPE_OPAQUE;
diff --git a/sys/netinet6/raw_ip6.c b/sys/netinet6/raw_ip6.c
--- a/sys/netinet6/raw_ip6.c
+++ b/sys/netinet6/raw_ip6.c
@@ -658,9 +658,7 @@
return (error);
}
inp = (struct inpcb *)so->so_pcb;
- inp->inp_vflag |= INP_IPV6;
inp->inp_ip_p = (long)proto;
- inp->in6p_hops = -1; /* use kernel default */
inp->in6p_cksum = -1;
inp->in6p_icmp6filt = filter;
ICMP6_FILTER_SETPASSALL(inp->in6p_icmp6filt);
diff --git a/sys/netinet6/udp6_usrreq.c b/sys/netinet6/udp6_usrreq.c
--- a/sys/netinet6/udp6_usrreq.c
+++ b/sys/netinet6/udp6_usrreq.c
@@ -1045,10 +1045,6 @@
if (error)
return (error);
inp = (struct inpcb *)so->so_pcb;
- inp->inp_vflag |= INP_IPV6;
- if ((inp->inp_flags & IN6P_IPV6_V6ONLY) == 0)
- inp->inp_vflag |= INP_IPV4;
- inp->in6p_hops = -1; /* use kernel default */
inp->in6p_cksum = -1; /* just to be sure */
/*
* XXX: ugly!!

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 7, 1:22 AM (16 h, 45 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17022897
Default Alt Text
D36062.diff (3 KB)

Event Timeline