Module Name:    src
Committed By:   ozaki-r
Date:           Sat Oct 29 02:56:29 UTC 2022

Modified Files:
        src/sys/netinet: in_pcb.c

Log Message:
inpcb: fix for kernels without INET6


To generate a diff of this commit:
cvs rdiff -u -r1.193 -r1.194 src/sys/netinet/in_pcb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/netinet/in_pcb.c
diff -u src/sys/netinet/in_pcb.c:1.193 src/sys/netinet/in_pcb.c:1.194
--- src/sys/netinet/in_pcb.c:1.193	Fri Oct 28 05:25:36 2022
+++ src/sys/netinet/in_pcb.c	Sat Oct 29 02:56:29 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: in_pcb.c,v 1.193 2022/10/28 05:25:36 ozaki-r Exp $	*/
+/*	$NetBSD: in_pcb.c,v 1.194 2022/10/29 02:56:29 ozaki-r Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -93,7 +93,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.193 2022/10/28 05:25:36 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.194 2022/10/29 02:56:29 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -157,7 +157,9 @@ int	lowportmin  = IPPORT_RESERVEDMIN;
 int	lowportmax  = IPPORT_RESERVEDMAX;
 
 static struct pool in4pcb_pool;
+#ifdef INET6
 static struct pool in6pcb_pool;
+#endif
 
 static int
 inpcb_poolinit(void)
@@ -165,8 +167,10 @@ inpcb_poolinit(void)
 
 	pool_init(&in4pcb_pool, sizeof(struct in4pcb), 0, 0, 0, "in4pcbpl", NULL,
 	    IPL_NET);
+#ifdef INET6
 	pool_init(&in6pcb_pool, sizeof(struct in6pcb), 0, 0, 0, "in6pcbpl", NULL,
 	    IPL_NET);
+#endif
 	return 0;
 }
 
@@ -195,12 +199,17 @@ in_pcballoc(struct socket *so, void *v)
 	struct inpcb *inp;
 	int s;
 
+#ifdef INET6
 	KASSERT(soaf(so) == AF_INET || soaf(so) == AF_INET6);
 
 	if (soaf(so) == AF_INET)
 		inp = pool_get(&in4pcb_pool, PR_NOWAIT|PR_ZERO);
 	else
 		inp = pool_get(&in6pcb_pool, PR_NOWAIT|PR_ZERO);
+#else
+	KASSERT(soaf(so) == AF_INET);
+	inp = pool_get(&in4pcb_pool, PR_NOWAIT|PR_ZERO);
+#endif
 	if (inp == NULL)
 		return (ENOBUFS);
 	inp->inp_af = soaf(so);
@@ -226,10 +235,15 @@ in_pcballoc(struct socket *so, void *v)
 	if (ipsec_enabled) {
 		int error = ipsec_init_pcbpolicy(so, &inp->inp_sp);
 		if (error != 0) {
+#ifdef INET6
 			if (inp->inp_af == AF_INET)
 				pool_put(&in4pcb_pool, inp);
 			else
 				pool_put(&in6pcb_pool, inp);
+#else
+			KASSERT(inp->inp_af == AF_INET);
+			pool_put(&in4pcb_pool, inp);
+#endif
 			return error;
 		}
 		inp->inp_sp->sp_inp = inp;
@@ -665,6 +679,7 @@ in_pcbdetach(void *v)
 	}
 	rtcache_free(&inp->inp_route);
 	ip_freemoptions(inp->inp_moptions);
+#ifdef INET6
 	if (inp->inp_af == AF_INET6) {
 		if (in6p_outputopts(inp) != NULL) {
 			ip6_clearpktopts(in6p_outputopts(inp), -1);
@@ -672,12 +687,18 @@ in_pcbdetach(void *v)
 		}
 		ip6_freemoptions(in6p_moptions(inp));
 	}
+#endif
 	sofree(so);			/* drops the socket's lock */
 
+#ifdef INET6
 	if (inp->inp_af == AF_INET)
 		pool_put(&in4pcb_pool, inp);
 	else
 		pool_put(&in6pcb_pool, inp);
+#else
+	KASSERT(inp->inp_af == AF_INET);
+	pool_put(&in4pcb_pool, inp);
+#endif
 	mutex_enter(softnet_lock);	/* reacquire the softnet_lock */
 }
 
@@ -1096,10 +1117,15 @@ void
 in_pcbstate(struct inpcb *inp, int state)
 {
 
+#ifdef INET6
 	if (inp->inp_af == AF_INET6) {
 		in6_pcbstate(inp, state);
 		return;
 	}
+#else
+	if (inp->inp_af != AF_INET)
+		return;
+#endif
 
 	if (inp->inp_state > INP_ATTACHED)
 		LIST_REMOVE(inp, inp_hash);
@@ -1130,8 +1156,10 @@ in_pcbrtentry(struct inpcb *inp)
 		struct sockaddr_in	dst4;
 	} u;
 
+#ifdef INET6
 	if (inp->inp_af == AF_INET6)
 		return in6_pcbrtentry(inp);
+#endif
 	if (inp->inp_af != AF_INET)
 		return (NULL);
 

Reply via email to