Module Name:    src
Committed By:   ozaki-r
Date:           Thu Apr 20 08:45:09 UTC 2017

Modified Files:
        src/sys/netinet: in_pcb.c udp_usrreq.c
        src/sys/netinet6: in6_pcb.c udp6_usrreq.c

Log Message:
Simplify logic of udp4_sendup and udp6_sendup

They are always passed a socket with the same protocol faimiliy
as its own: AF_INET for udp4_sendup and AF_INET6 for udp6_sendup.


To generate a diff of this commit:
cvs rdiff -u -r1.176 -r1.177 src/sys/netinet/in_pcb.c
cvs rdiff -u -r1.231 -r1.232 src/sys/netinet/udp_usrreq.c
cvs rdiff -u -r1.159 -r1.160 src/sys/netinet6/in6_pcb.c
cvs rdiff -u -r1.127 -r1.128 src/sys/netinet6/udp6_usrreq.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.176 src/sys/netinet/in_pcb.c:1.177
--- src/sys/netinet/in_pcb.c:1.176	Thu Mar  2 05:29:31 2017
+++ src/sys/netinet/in_pcb.c	Thu Apr 20 08:45:09 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: in_pcb.c,v 1.176 2017/03/02 05:29:31 ozaki-r Exp $	*/
+/*	$NetBSD: in_pcb.c,v 1.177 2017/04/20 08:45:09 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.176 2017/03/02 05:29:31 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in_pcb.c,v 1.177 2017/04/20 08:45:09 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -192,6 +192,8 @@ in_pcballoc(struct socket *so, void *v)
 	struct inpcb *inp;
 	int s;
 
+	KASSERT(so->so_proto->pr_domain->dom_family == AF_INET);
+
 	inp = pool_get(&inpcb_pool, PR_NOWAIT);
 	if (inp == NULL)
 		return (ENOBUFS);

Index: src/sys/netinet/udp_usrreq.c
diff -u src/sys/netinet/udp_usrreq.c:1.231 src/sys/netinet/udp_usrreq.c:1.232
--- src/sys/netinet/udp_usrreq.c:1.231	Fri Mar  3 07:13:06 2017
+++ src/sys/netinet/udp_usrreq.c	Thu Apr 20 08:45:09 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: udp_usrreq.c,v 1.231 2017/03/03 07:13:06 ozaki-r Exp $	*/
+/*	$NetBSD: udp_usrreq.c,v 1.232 2017/04/20 08:45:09 ozaki-r Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -66,7 +66,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.231 2017/03/03 07:13:06 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp_usrreq.c,v 1.232 2017/04/20 08:45:09 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -468,21 +468,13 @@ udp4_sendup(struct mbuf *m, int off /* o
 {
 	struct mbuf *opts = NULL;
 	struct mbuf *n;
-	struct inpcb *inp = NULL;
+	struct inpcb *inp;
 
 	if (!so)
 		return;
-	switch (so->so_proto->pr_domain->dom_family) {
-	case AF_INET:
-		inp = sotoinpcb(so);
-		break;
-#ifdef INET6
-	case AF_INET6:
-		break;
-#endif
-	default:
-		return;
-	}
+	KASSERT(so->so_proto->pr_domain->dom_family == AF_INET);
+	inp = sotoinpcb(so);
+	KASSERT(inp != NULL);
 
 #if defined(IPSEC)
 	/* check AH/ESP integrity. */
@@ -496,11 +488,11 @@ udp4_sendup(struct mbuf *m, int off /* o
 #endif /*IPSEC*/
 
 	if ((n = m_copypacket(m, M_DONTWAIT)) != NULL) {
-		if (inp && (inp->inp_flags & INP_CONTROLOPTS
+		if (inp->inp_flags & INP_CONTROLOPTS
 #ifdef SO_OTIMESTAMP
 			 || so->so_options & SO_OTIMESTAMP
 #endif
-			 || so->so_options & SO_TIMESTAMP)) {
+			 || so->so_options & SO_TIMESTAMP) {
 			struct ip *ip = mtod(n, struct ip *);
 			ip_savecontrol(inp, &opts, ip, n);
 		}

Index: src/sys/netinet6/in6_pcb.c
diff -u src/sys/netinet6/in6_pcb.c:1.159 src/sys/netinet6/in6_pcb.c:1.160
--- src/sys/netinet6/in6_pcb.c:1.159	Thu Mar  2 05:26:24 2017
+++ src/sys/netinet6/in6_pcb.c	Thu Apr 20 08:45:09 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: in6_pcb.c,v 1.159 2017/03/02 05:26:24 ozaki-r Exp $	*/
+/*	$NetBSD: in6_pcb.c,v 1.160 2017/04/20 08:45:09 ozaki-r Exp $	*/
 /*	$KAME: in6_pcb.c,v 1.84 2001/02/08 18:02:08 itojun Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.159 2017/03/02 05:26:24 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6_pcb.c,v 1.160 2017/04/20 08:45:09 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -158,6 +158,8 @@ in6_pcballoc(struct socket *so, void *v)
 	struct in6pcb *in6p;
 	int s;
 
+	KASSERT(so->so_proto->pr_domain->dom_family == AF_INET6);
+
 	in6p = pool_get(&in6pcb_pool, PR_NOWAIT);
 	if (in6p == NULL)
 		return (ENOBUFS);

Index: src/sys/netinet6/udp6_usrreq.c
diff -u src/sys/netinet6/udp6_usrreq.c:1.127 src/sys/netinet6/udp6_usrreq.c:1.128
--- src/sys/netinet6/udp6_usrreq.c:1.127	Tue Jan 24 07:09:25 2017
+++ src/sys/netinet6/udp6_usrreq.c	Thu Apr 20 08:45:09 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: udp6_usrreq.c,v 1.127 2017/01/24 07:09:25 ozaki-r Exp $	*/
+/*	$NetBSD: udp6_usrreq.c,v 1.128 2017/04/20 08:45:09 ozaki-r Exp $	*/
 /*	$KAME: udp6_usrreq.c,v 1.86 2001/05/27 17:33:00 itojun Exp $	*/
 
 /*
@@ -62,7 +62,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.127 2017/01/24 07:09:25 ozaki-r Exp $");
+__KERNEL_RCSID(0, "$NetBSD: udp6_usrreq.c,v 1.128 2017/04/20 08:45:09 ozaki-r Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_inet.h"
@@ -343,17 +343,16 @@ udp6_sendup(struct mbuf *m, int off /* o
 {
 	struct mbuf *opts = NULL;
 	struct mbuf *n;
-	struct in6pcb *in6p = NULL;
+	struct in6pcb *in6p;
 
-	if (!so)
-		return;
-	if (so->so_proto->pr_domain->dom_family != AF_INET6)
-		return;
+	KASSERT(so != NULL);
+	KASSERT(so->so_proto->pr_domain->dom_family == AF_INET6);
 	in6p = sotoin6pcb(so);
+	KASSERT(in6p != NULL);
 
 #if defined(IPSEC)
 	/* check AH/ESP integrity. */
-	if (ipsec_used && so != NULL && ipsec6_in_reject_so(m, so)) {
+	if (ipsec_used && ipsec6_in_reject_so(m, so)) {
 		IPSEC6_STATINC(IPSEC_STAT_IN_POLVIO);
 		if ((n = m_copypacket(m, M_DONTWAIT)) != NULL)
 			icmp6_error(n, ICMP6_DST_UNREACH,
@@ -363,11 +362,11 @@ udp6_sendup(struct mbuf *m, int off /* o
 #endif /*IPSEC*/
 
 	if ((n = m_copypacket(m, M_DONTWAIT)) != NULL) {
-		if (in6p && (in6p->in6p_flags & IN6P_CONTROLOPTS
+		if (in6p->in6p_flags & IN6P_CONTROLOPTS
 #ifdef SO_OTIMESTAMP
 		    || in6p->in6p_socket->so_options & SO_OTIMESTAMP
 #endif
-		    || in6p->in6p_socket->so_options & SO_TIMESTAMP)) {
+		    || in6p->in6p_socket->so_options & SO_TIMESTAMP) {
 			struct ip6_hdr *ip6 = mtod(n, struct ip6_hdr *);
 			ip6_savecontrol(in6p, &opts, ip6, n);
 		}

Reply via email to