Module Name:    src
Committed By:   rtr
Date:           Sat Apr 25 15:19:54 UTC 2015

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

Log Message:
make rip_connect_pcb take sockaddr_in * instead of mbuf *
make rip_connect_pcb static since it appears to be used only in raw_ip.c

moves m_len check to callers which is a small duplication of code
that will go away when the callers are converted to receive sockaddr *.


To generate a diff of this commit:
cvs rdiff -u -r1.148 -r1.149 src/sys/netinet/raw_ip.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/raw_ip.c
diff -u src/sys/netinet/raw_ip.c:1.148 src/sys/netinet/raw_ip.c:1.149
--- src/sys/netinet/raw_ip.c:1.148	Fri Apr 24 22:32:37 2015
+++ src/sys/netinet/raw_ip.c	Sat Apr 25 15:19:54 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: raw_ip.c,v 1.148 2015/04/24 22:32:37 rtr Exp $	*/
+/*	$NetBSD: raw_ip.c,v 1.149 2015/04/25 15:19:54 rtr Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -65,7 +65,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.148 2015/04/24 22:32:37 rtr Exp $");
+__KERNEL_RCSID(0, "$NetBSD: raw_ip.c,v 1.149 2015/04/25 15:19:54 rtr Exp $");
 
 #include "opt_inet.h"
 #include "opt_compat_netbsd.h"
@@ -111,7 +111,7 @@ struct inpcbtable rawcbtable;
 
 int	 rip_pcbnotify(struct inpcbtable *, struct in_addr,
     struct in_addr, int, int, void (*)(struct inpcb *, int));
-int	 rip_connect_pcb(struct inpcb *, struct mbuf *);
+static int	 rip_connect_pcb(struct inpcb *, struct sockaddr_in *);
 static void	 rip_disconnect1(struct inpcb *);
 
 static void sysctl_net_inet_raw_setup(struct sysctllog **);
@@ -480,12 +480,9 @@ rip_ctloutput(int op, struct socket *so,
 }
 
 int
-rip_connect_pcb(struct inpcb *inp, struct mbuf *nam)
+rip_connect_pcb(struct inpcb *inp, struct sockaddr_in *addr)
 {
-	struct sockaddr_in *addr = mtod(nam, struct sockaddr_in *);
 
-	if (nam->m_len != sizeof(*addr))
-		return (EINVAL);
 	if (IFNET_EMPTY())
 		return (EADDRNOTAVAIL);
 	if (addr->sin_family != AF_INET)
@@ -612,7 +609,9 @@ rip_connect(struct socket *so, struct mb
 	KASSERT(nam != NULL);
 
 	s = splsoftnet();
-	error = rip_connect_pcb(inp, nam);
+	if (nam->m_len != sizeof(struct sockaddr_in))
+		return EINVAL;
+	error = rip_connect_pcb(inp, mtod(nam, struct sockaddr_in *));
 	if (! error)
 		soisconnected(so);
 	splx(s);
@@ -763,7 +762,9 @@ rip_send(struct socket *so, struct mbuf 
 			error = EISCONN;
 			goto die;
 		}
-		error = rip_connect_pcb(inp, nam);
+		if (nam->m_len != sizeof(struct sockaddr_in))
+			return EINVAL;
+		error = rip_connect_pcb(inp, mtod(nam, struct sockaddr_in *));
 		if (error) {
 		die:
 			m_freem(m);

Reply via email to