Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Apr 2014 10:20:38 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r265010 - head/sys/net
Message-ID:  <201404271020.s3RAKc9R073142@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Sun Apr 27 10:20:37 2014
New Revision: 265010
URL: http://svnweb.freebsd.org/changeset/base/265010

Log:
  Cleanup route_output() a bit.
  
  MFC after:	1 month

Modified:
  head/sys/net/rtsock.c

Modified: head/sys/net/rtsock.c
==============================================================================
--- head/sys/net/rtsock.c	Sun Apr 27 09:49:35 2014	(r265009)
+++ head/sys/net/rtsock.c	Sun Apr 27 10:20:37 2014	(r265010)
@@ -530,6 +530,7 @@ route_output(struct mbuf *m, struct sock
 	struct ifnet *ifp = NULL;
 	union sockaddr_union saun;
 	sa_family_t saf = AF_UNSPEC;
+	struct rawcb *rp = NULL;
 
 	fibnum = so->so_fibnum;
 
@@ -819,22 +820,14 @@ report:
 	}
 
 flush:
-	if (rtm) {
-		if (error)
-			rtm->rtm_errno = error;
-		else
-			rtm->rtm_flags |= RTF_DONE;
-	}
-	if (rt)		/* XXX can this be true? */
+	if (rt != NULL)
 		RTFREE(rt);
-    {
-	struct rawcb *rp = NULL;
 	/*
 	 * Check to see if we don't want our own messages.
 	 */
 	if ((so->so_options & SO_USELOOPBACK) == 0) {
 		if (V_route_cb.any_count <= 1) {
-			if (rtm)
+			if (rtm != NULL)
 				Free(rtm);
 			m_freem(m);
 			return (error);
@@ -842,6 +835,7 @@ flush:
 		/* There is another listener, so construct message */
 		rp = sotorawcb(so);
 	}
+
 	if (rtm != NULL) {
 #ifdef INET6
 		if (rti_need_deembed) {
@@ -859,6 +853,11 @@ flush:
 			}
 		}
 #endif
+		if (error != 0)
+			rtm->rtm_errno = error;
+		else
+			rtm->rtm_flags |= RTF_DONE;
+
 		m_copyback(m, 0, rtm->rtm_msglen, (caddr_t)rtm);
 		if (m->m_pkthdr.len < rtm->rtm_msglen) {
 			m_freem(m);
@@ -867,7 +866,7 @@ flush:
 			m_adj(m, rtm->rtm_msglen - m->m_pkthdr.len);
 		Free(rtm);
 	}
-	if (m) {
+	if (m != NULL) {
 		M_SETFIB(m, fibnum);
 		m->m_flags |= RTS_FILTER_FIB;
 		if (rp) {
@@ -882,7 +881,7 @@ flush:
 		} else
 			rt_dispatch(m, saf);
 	}
-    }
+
 	return (error);
 }
 



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