Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Apr 2010 12:04:23 GMT
From:      Ana Kukec <anchie@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 177258 for review
Message-ID:  <201004231204.o3NC4NSF092782@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@177258?ac=10

Change 177258 by anchie@anchie_malimis on 2010/04/23 12:03:46

	       Cleanup: code related to "SEND through rtsock", whitespaces, debug
	       printfs, copyright.

Affected files ...

.. //depot/projects/soc2009/anchie_send/src/sys/net/route.h#10 edit
.. //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#24 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_input.c#6 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6.c#27 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6_nbr.c#15 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#42 edit
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.h#20 edit

Differences ...

==== //depot/projects/soc2009/anchie_send/src/sys/net/route.h#10 (text+ko) ====

@@ -381,7 +381,6 @@
 struct ifmultiaddr;
 
 void	 rt_ieee80211msg(struct ifnet *, int, void *, size_t);
-void	 rt_securendmsg(struct ifnet *, int, void *, size_t);
 void	 rt_ifannouncemsg(struct ifnet *, int);
 void	 rt_ifmsg(struct ifnet *);
 void	 rt_missmsg(int, struct rt_addrinfo *, int, int);

==== //depot/projects/soc2009/anchie_send/src/sys/net/rtsock.c#24 (text+ko) ====

@@ -64,8 +64,6 @@
 #ifdef INET6
 #include <netinet6/scope6_var.h>
 #endif
-#include <netinet6/send.h>
-#include <netinet6/in6_var.h>
 
 #if defined(INET) || defined(INET6)
 #ifdef SCTP
@@ -1234,7 +1232,6 @@
 			sizeof(ifan->ifan_name));
 		ifan->ifan_what = what;
 	}
-
 	return m;
 }
 

==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_input.c#6 (text+ko) ====

@@ -104,7 +104,6 @@
 #include <netinet6/scope6_var.h>
 #include <netinet6/in6_ifattach.h>
 #include <netinet6/nd6.h>
-#include <netinet6/send.h>
 
 #ifdef IPSEC
 #include <netipsec/ipsec.h>

==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6.c#27 (text+ko) ====

@@ -296,8 +296,6 @@
 nd6_option_init(void *opt, int icmp6len, union nd_opts *ndopts)
 {
 
-printf("XXX-AK: nd6.c: nd6_option_init(), icmp6len = %d\n", icmp6len);
-
 	bzero(ndopts, sizeof(*ndopts));
 	ndopts->nd_opts_search = (struct nd_opt_hdr *)opt;
 	ndopts->nd_opts_last
@@ -330,9 +328,7 @@
 	nd_opt = ndopts->nd_opts_search;
 
 	/* make sure nd_opt_len is inside the buffer */
-printf("nd6.c: nd6_option(), nd_opt->nd_opt_len: %d\n", nd_opt->nd_opt_len);
 	if ((caddr_t)&nd_opt->nd_opt_len >= (caddr_t)ndopts->nd_opts_last) {
-printf("nd_opt->nd_opt_len >= ndopts->nd_opts_last\n");
 		bzero(ndopts, sizeof(*ndopts));
 		return NULL;
 	}
@@ -1995,10 +1991,8 @@
 			skip = 1;
 			nd_type = (unsigned short *)(mtag + 1);
 			/* Use the SEND socket */
-			printf("send_sendso_input_hook\n");
-			error = send_sendso_input_hook(V_send_so, m, SND_OUT, ip6len); 
-
-			return error;
+			return (send_sendso_input_hook(V_send_so, 
+			    m, SND_OUT, ip6len); 
 		}
 	}
 

==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/nd6_nbr.c#15 (text+ko) ====

@@ -400,8 +400,6 @@
 	caddr_t mac;
 	struct route_in6 ro;
 
-printf("nd6_ns_output \n");
-
 	bzero(&ro, sizeof(ro));
 
 	if (IN6_IS_ADDR_MULTICAST(taddr6))

==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.c#42 (text+ko) ====

@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2009 Ana Kukec <anchie@freebsd.org> 
+ * Copyright (c) 2009-2010 Ana Kukec <anchie@freebsd.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -58,146 +58,137 @@
 static int
 send_output(struct mbuf *m, struct ifnet *ifp, int direction)
 {
-	struct ip6_hdr *ip6;
-	struct sockaddr_in6 dst;
-	struct icmp6_hdr *icmp6;
-	int icmp6len; 
+    struct ip6_hdr *ip6;
+    struct sockaddr_in6 dst;
+    struct icmp6_hdr *icmp6;
+    int icmp6len;
 
-	/* 
-	 * Receive incoming (SEND-protected) or outgoing traffic  
-	 * (SEND-validated) from the SEND user space application.
-	 * Outgoing packets are sent out using if_output(). 
-	 */
+    /*
+     * Receive incoming (SEND-protected) or outgoing traffic
+     * (SEND-validated) from the SEND user space application.
+     * Outgoing packets are sent out using if_output().
+     */
 
-	switch (direction) {
-	case SND_IN:
-		/* XXX-BZ can there be extension headers? */
-		if (m->m_len < (sizeof(struct ip6_hdr) +
-		    sizeof(struct icmp6_hdr))) {
-			m = m_pullup(m, sizeof(struct ip6_hdr) +
-			    sizeof(struct icmp6_hdr));
-			if (!m)
-				return (ENOBUFS);
-		}
+    switch (direction) {
+    case SND_IN:
+	if (m->m_len < (sizeof(struct ip6_hdr) +
+	    sizeof(struct icmp6_hdr))) {
+		m = m_pullup(m, sizeof(struct ip6_hdr) +
+		    sizeof(struct icmp6_hdr));
+		if (!m)
+		    return (ENOBUFS);
+    }
 
-		/* Before passing off the mbuf record the proper interface. */
-		m->m_pkthdr.rcvif = ifp;
+    /* Before passing off the mbuf record the proper interface. */
+    m->m_pkthdr.rcvif = ifp;
 
-		if (m->m_flags & M_PKTHDR)
-			icmp6len = m->m_pkthdr.len - sizeof(struct ip6_hdr);	
-		else
-			panic("Doh! not the first mbuf.");
+    if (m->m_flags & M_PKTHDR)
+	icmp6len = m->m_pkthdr.len - sizeof(struct ip6_hdr);
+    else
+	panic("Doh! not the first mbuf.");
 
-		ip6 = mtod(m, struct ip6_hdr *);
-		icmp6 = (struct icmp6_hdr *)(ip6 + 1);
+    ip6 = mtod(m, struct ip6_hdr *);
+    icmp6 = (struct icmp6_hdr *)(ip6 + 1);
 
-		/*
-		 * Output the packet as icmp6.c:incpm6_input() would do.
-		 * The mbuf is always consumed, so we do not have to
-		 * care about that.
-		 */
-		switch (icmp6->icmp6_type) {
-		case ND_NEIGHBOR_SOLICIT:
-			nd6_ns_input(m, sizeof(struct ip6_hdr), icmp6len);
-			break;
-		case ND_NEIGHBOR_ADVERT:
-			nd6_na_input(m, sizeof(struct ip6_hdr), icmp6len);
-			break;
-		case ND_REDIRECT:
-			icmp6_redirect_input(m, sizeof(struct ip6_hdr));
-			break;
-		case ND_ROUTER_SOLICIT:
-			nd6_rs_input(m, sizeof(struct ip6_hdr), icmp6len);
-			break;
-		case ND_ROUTER_ADVERT:
-			nd6_ra_input(m, sizeof(struct ip6_hdr), icmp6len);
-			break;
-		default:
-			printf("%s:%d: icmp6_code=%u\n",
-			    __func__, __LINE__, icmp6->icmp6_code);
-			m_print(m, m->m_pkthdr.len);
-			return (ENOSYS);
-		}
+    /*
+     * Output the packet as icmp6.c:incpm6_input() would do.
+     * The mbuf is always consumed, so we do not have to
+     * care about that.
+     */
+    switch (icmp6->icmp6_type) {
+    case ND_NEIGHBOR_SOLICIT:
+	nd6_ns_input(m, sizeof(struct ip6_hdr), icmp6len);
+	break;
+    case ND_NEIGHBOR_ADVERT:
+	nd6_na_input(m, sizeof(struct ip6_hdr), icmp6len);
+	break;
+    case ND_REDIRECT:
+	icmp6_redirect_input(m, sizeof(struct ip6_hdr));
+	break;
+    case ND_ROUTER_SOLICIT:
+	nd6_rs_input(m, sizeof(struct ip6_hdr), icmp6len);
+	break;
+    case ND_ROUTER_ADVERT:
+	nd6_ra_input(m, sizeof(struct ip6_hdr), icmp6len);
+	break;
+    default:
+	return (ENOSYS);
+    }
 
-		/*
-		 * No error returned from nd6_??_input() so the only thing
-		 * we can do is to pretend that it worked.
-		 */
-		return (0);
+    /*
+     * No error returned from nd6_??_input() so the only thing
+     * we can do is to pretend that it worked.
+     */
+    return (0);
 
-	case SND_OUT:
-		if (m->m_len < sizeof(struct ip6_hdr)) {
-			m = m_pullup(m, sizeof(struct ip6_hdr));
-			if (!m)
-				return (ENOBUFS);
-		}
-		ip6 = mtod(m, struct ip6_hdr *);
-		if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst))
-			m->m_flags |= M_MCAST;
+    case SND_OUT:
+	if (m->m_len < sizeof(struct ip6_hdr)) {
+	    m = m_pullup(m, sizeof(struct ip6_hdr));
+	    if (!m)
+		return (ENOBUFS);
+	    }
+	ip6 = mtod(m, struct ip6_hdr *);
+	if (IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst))
+	    m->m_flags |= M_MCAST;
 
-		bzero(&dst, sizeof(dst));
-        	dst.sin6_family = AF_INET6;
-        	dst.sin6_len = sizeof(dst);
-        	dst.sin6_addr = ip6->ip6_dst;
+	zero(&dst, sizeof(dst));
+	dst.sin6_family = AF_INET6;
+	dst.sin6_len = sizeof(dst);
+	dst.sin6_addr = ip6->ip6_dst;
 
-		/* 
-	 	 * Output the packet as nd6.c:nd6_output_lle() would do.
-		 * The mbuf is always consumed, so we do not have to care
-		 * about that.
-	 	 */
-		return ((*ifp->if_output)(ifp, m, (struct sockaddr *)&dst,
-		    NULL));
+	/*
+	 * Output the packet as nd6.c:nd6_output_lle() would do.
+	 * The mbuf is always consumed, so we do not have to care
+	 * about that.
+	 */
+	return ((*ifp->if_output)(ifp, m, (struct sockaddr *)&dst,
+	    NULL));
 
-	default:
-		panic("%s: direction must be either SND_IN or SND_OUT.", __func__);
-	}	
+    default:
+	panic("%s: direction must be either SND_IN or SND_OUT.", __func__);
+    }
 }
 
 static int
 send_uattach(struct socket *so, int proto, struct thread *td)
 {
 
-	printf("send_uattach: proto = %d\n", proto);
-	if (V_send_so != NULL)
-		return (EEXIST);
+    if (V_send_so != NULL)
+	return (EEXIST);
 
-	/* XXX: Revisit this, hardocoded! This was a hack for PR_ATOMIC. */
-	/* so->so_snd.sb_hiwat = 8192; */
+    V_send_so = so;
 
-	V_send_so = so;
- 
-	return (0);
+    return (0);
 }
 
 static int
 sosend_rcv(struct socket *so, int flags, struct mbuf *m, struct sockaddr *addr,
-	struct mbuf *control, struct thread *td)
+        struct mbuf *control, struct thread *td)
 {
-	struct ifnet *ifp;
-	struct snd_hdr *snd_hdr;
+    struct ifnet *ifp;
+    struct snd_hdr *snd_hdr;
 
-printf("sosend_rcv, mbuf len: %d \n", m->m_len);
+    snd_hdr = mtod(m, struct snd_hdr *);
 
-	snd_hdr = mtod(m, struct snd_hdr *);
+    struct mbuf *m0;
+    m0 = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
+    if (m0 == NULL) {
+	m_freem(m);
+	return (ENOBUFS);
+    }
+    m_move_pkthdr(m, m0);
 
-	struct mbuf *m0;
-	m0 = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
-	if (m0 == NULL) {
-		m_freem(m);
-		return (ENOBUFS);
-	}
-	m_move_pkthdr(m, m0);
+    ifp = ifnet_byindex_ref(snd_hdr->ifidx);
+    m_adj(m, SEND_HDR_LEN);
+    m_fixhdr(m);
+    if (ifp) {
+	if (send_output(m, ifp, snd_hdr->direction))
+	    return (ENOENT);
+	if_rele(ifp);
+    } else
+	return (ENETUNREACH);
 
-	ifp = ifnet_byindex_ref(snd_hdr->ifidx);
-	m_adj(m, SEND_HDR_LEN);
-	m_fixhdr(m);
-	if (ifp) {
-		int error = send_output(m, ifp, snd_hdr->direction);
-		printf("error: %d\n", error);
-		if_rele(ifp);
-		return (0);
-	} else
-		return (ENETUNREACH);
+    return (0);
 }
 
 /*
@@ -210,44 +201,38 @@
     struct ip6_hdr *ip6;
     struct snd_hdr *snd_hdr = NULL;
 
-printf("send_sendso_input \n");
-                        
-        /*
-         * Make sure to clear any possible internally embedded scope before
-         * passing the packet to userspace for SeND cryptographic signature
-         * validation to succeed.
-         */
-        ip6 = mtod(m, struct ip6_hdr *);
-        in6_clearscope(&ip6->ip6_src);
-        in6_clearscope(&ip6->ip6_dst);
-                
-        len = m_length(m, NULL);
-        if (len != msglen)
-                printf("XXX-BZ %s: (m)len=%u (ip6)msglen=%d", __func__, len, msglen);
+    /*
+     * Make sure to clear any possible internally embedded scope before
+     * passing the packet to userspace for SeND cryptographic signature
+     * validation to succeed.
+     */
+    ip6 = mtod(m, struct ip6_hdr *);
+    in6_clearscope(&ip6->ip6_src);
+    in6_clearscope(&ip6->ip6_dst);
+
+    len = m_length(m, NULL);
 
-	m = m_prepend(m, SEND_HDR_LEN, M_PKTHDR|M_DONTWAIT);
-	if (m == NULL) {
-		printf("m_prepend() failed!\n");
-		return (ENOBUFS);
-	}
-	snd_hdr = mtod(m, struct snd_hdr *);
-	snd_hdr->direction = direction;
-	snd_hdr->ifidx = -1;
+    m = m_prepend(m, SEND_HDR_LEN, M_PKTHDR|M_DONTWAIT);
+    if (m == NULL) {
+        return (ENOBUFS);
+    }
+    snd_hdr = mtod(m, struct snd_hdr *);
+    snd_hdr->direction = direction;
+    snd_hdr->ifidx = -1;
 
-        /*
-         * Send incoming or outgoing traffic to the user space either to be
-         * protected (outgoing) or validated (incoming) according to rfc3971. */
+    /*
+     * Send incoming or outgoing traffic to the user space either to be
+     * protected (outgoing) or validated (incoming) according to rfc3971.
+     */
 
-	if (s) {
-		SOCKBUF_LOCK(&s->so_rcv);
-		sbappendrecord_locked(&s->so_rcv, m);
-		sorwakeup_locked(s);
-		return 0;
-	} else {
-		m_freem(m);
-		return 0;
-	}
+    if (s) {
+	SOCKBUF_LOCK(&s->so_rcv);
+	sbappendrecord_locked(&s->so_rcv, m);
+	sorwakeup_locked(s);
+	return (0);
+    }
 
+    m_freem(m);
     return -1;
 }
 
@@ -255,55 +240,56 @@
 send_close(struct socket *so)
 {
 
-	if (V_send_so)
-		V_send_so = NULL;
+    if (V_send_so)
+	V_send_so = NULL;
 }
 
 struct pr_usrreqs send_usrreqs = {
-	.pru_attach =		send_uattach,
-	.pru_send =		sosend_rcv,
-	.pru_detach =		send_close
+    .pru_attach =	send_uattach,
+    .pru_send =		sosend_rcv,
+    .pru_detach =	send_close
 };
-
 struct protosw send_protosw = {
-	.pr_type =		SOCK_RAW,
-	.pr_protocol =		IPPROTO_SEND,
-	.pr_usrreqs =		&send_usrreqs
+    .pr_type =		SOCK_RAW,
+    .pr_protocol =	IPPROTO_SEND,
+    .pr_usrreqs =	&send_usrreqs
 };
 
 static int
 send_modevent(module_t mod, int type, void *unused)
 {
-	int error = 0;
+    int error = 0;
 
-	/* Add locking? icmp6.c and nd6.c are maybe using hooks.. */
+    /* Add locking? icmp6.c and nd6.c are maybe using hooks.. */
 
-	switch (type) {
-	case MOD_LOAD:
-		error = pf_proto_register(PF_INET, &send_protosw);
-		if (error != 0)
-			break;
-		send_sendso_input_hook = send_sendso_input;
-		break;
-	case MOD_UNLOAD:
-		if (V_send_so != NULL)
-			return (EINVAL);
-		error = pf_proto_unregister(PF_INET, IPPROTO_SEND, SOCK_RAW);
-		send_sendso_input_hook = NULL;
-		break;
+    switch (type) {
+    case MOD_LOAD:
+	error = pf_proto_register(PF_INET, &send_protosw);
+	if (error != 0)
+	    break;
+	send_sendso_input_hook = send_sendso_input;
+	    break;
+    case MOD_UNLOAD:
+	if (V_send_so != NULL)
+	    return (EINVAL);
+	error = pf_proto_unregister(PF_INET, IPPROTO_SEND, SOCK_RAW);
+	send_sendso_input_hook = NULL;
+	break;
 
+    default:
+	break;
+    }
 
-	default:
-		break;
-	}
-	return (error);
+    return (error);
 }
 
 static moduledata_t sendmod = {
-	"send",
-	send_modevent,
-	0
+    "send",
+    send_modevent,
+    0
 };
 
 DECLARE_MODULE(send, sendmod, SI_SUB_PROTO_IFATTACHDOMAIN, SI_ORDER_ANY);
 
+
+

==== //depot/projects/soc2009/anchie_send/src/sys/netinet6/send.h#20 (text+ko) ====

@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2009 Ana Kukec <anchie@freebsd.org> 
+ * Copyright (c) 2009-2010 Ana Kukec <anchie@freebsd.org> 
  * All rights reserved. 
  *
  * Redistribution and use in source and binary forms, with or without
@@ -30,8 +30,8 @@
 #define SEND_HDR_LEN	sizeof(struct snd_hdr)
 
 struct snd_hdr {
-        int             direction;
-        int             ifidx;
+    int			direction;
+    int			ifidx;
 };
 
 extern int      (*send_sendso_input_hook)(struct socket *, struct mbuf *, int, int);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004231204.o3NC4NSF092782>