Module Name: src
Committed By: ozaki-r
Date: Mon Oct 31 02:50:31 UTC 2016
Modified Files:
src/sys/netinet6: in6_src.c
Log Message:
Remove unnecessary NULL checks
To generate a diff of this commit:
cvs rdiff -u -r1.70 -r1.71 src/sys/netinet6/in6_src.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/netinet6/in6_src.c
diff -u src/sys/netinet6/in6_src.c:1.70 src/sys/netinet6/in6_src.c:1.71
--- src/sys/netinet6/in6_src.c:1.70 Fri Aug 26 20:29:31 2016
+++ src/sys/netinet6/in6_src.c Mon Oct 31 02:50:31 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: in6_src.c,v 1.70 2016/08/26 20:29:31 roy Exp $ */
+/* $NetBSD: in6_src.c,v 1.71 2016/10/31 02:50:31 ozaki-r Exp $ */
/* $KAME: in6_src.c,v 1.159 2005/10/19 01:40:32 t-momose Exp $ */
/*
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.70 2016/08/26 20:29:31 roy Exp $");
+__KERNEL_RCSID(0, "$NetBSD: in6_src.c,v 1.71 2016/10/31 02:50:31 ozaki-r Exp $");
#ifdef _KERNEL_OPT
#include "opt_inet.h"
@@ -590,11 +590,14 @@ selectroute(struct sockaddr_in6 *dstsock
struct sockaddr_in6 *sin6_next;
struct in6_pktinfo *pi = NULL;
struct in6_addr *dst;
- struct psref local_psref;
-#define PSREF ((psref == NULL) ? &local_psref : psref)
-
- KASSERT((retifp != NULL && psref != NULL) ||
- (retifp == NULL && psref == NULL));
+ union {
+ struct sockaddr dst;
+ struct sockaddr_in6 dst6;
+ } u;
+
+ KASSERT(ro != NULL);
+ KASSERT(retifp != NULL && psref != NULL);
+ KASSERT(retrt != NULL);
dst = &dstsock->sin6_addr;
@@ -614,17 +617,16 @@ selectroute(struct sockaddr_in6 *dstsock
/* If the caller specify the outgoing interface explicitly, use it. */
if (opts && (pi = opts->ip6po_pktinfo) != NULL && pi->ipi6_ifindex) {
/* XXX boundary check is assumed to be already done. */
- ifp = if_get_byindex(pi->ipi6_ifindex, PSREF);
+ ifp = if_get_byindex(pi->ipi6_ifindex, psref);
if (ifp != NULL &&
- (norouteok || retrt == NULL ||
- IN6_IS_ADDR_MULTICAST(dst))) {
+ (norouteok || IN6_IS_ADDR_MULTICAST(dst))) {
/*
* we do not have to check or get the route for
* multicast.
*/
goto done;
} else {
- if_put(ifp, PSREF);
+ if_put(ifp, psref);
ifp = NULL;
goto getroute;
}
@@ -635,7 +637,7 @@ selectroute(struct sockaddr_in6 *dstsock
* interface for the address is specified by the caller, use it.
*/
if (IN6_IS_ADDR_MULTICAST(dst) && mopts != NULL) {
- ifp = if_get_byindex(mopts->im6o_multicast_if_index, PSREF);
+ ifp = if_get_byindex(mopts->im6o_multicast_if_index, psref);
if (ifp != NULL)
goto done; /* we do not need a route for multicast. */
}
@@ -671,7 +673,7 @@ selectroute(struct sockaddr_in6 *dstsock
ifp = rt->rt_ifp;
if (ifp != NULL) {
if (!if_is_deactivated(ifp))
- if_acquire_NOMPSAFE(ifp, PSREF);
+ if_acquire_NOMPSAFE(ifp, psref);
else
ifp = NULL;
}
@@ -690,52 +692,42 @@ selectroute(struct sockaddr_in6 *dstsock
* a new one. Note that we should check the address family of the
* cached destination, in case of sharing the cache with IPv4.
*/
- if (ro != NULL) {
- union {
- struct sockaddr dst;
- struct sockaddr_in6 dst6;
- } u;
-
- /* No route yet, so try to acquire one */
- u.dst6 = *dstsock;
- u.dst6.sin6_scope_id = 0;
- rt = rtcache_lookup1(ro, &u.dst, clone);
+ u.dst6 = *dstsock;
+ u.dst6.sin6_scope_id = 0;
+ rt = rtcache_lookup1(ro, &u.dst, clone);
- /*
- * do not care about the result if we have the nexthop
- * explicitly specified.
- */
- if (opts && opts->ip6po_nexthop)
- goto done;
+ /*
+ * do not care about the result if we have the nexthop
+ * explicitly specified.
+ */
+ if (opts && opts->ip6po_nexthop)
+ goto done;
- if (rt == NULL)
- error = EHOSTUNREACH;
- else {
- if_put(ifp, PSREF);
- ifp = rt->rt_ifp;
- if (ifp != NULL) {
- if (!if_is_deactivated(ifp))
- if_acquire_NOMPSAFE(ifp, PSREF);
- else
- ifp = NULL;
- }
+ if (rt == NULL)
+ error = EHOSTUNREACH;
+ else {
+ if_put(ifp, psref);
+ ifp = rt->rt_ifp;
+ if (ifp != NULL) {
+ if (!if_is_deactivated(ifp))
+ if_acquire_NOMPSAFE(ifp, psref);
+ else
+ ifp = NULL;
}
+ }
- /*
- * Check if the outgoing interface conflicts with
- * the interface specified by ipi6_ifindex (if specified).
- * Note that loopback interface is always okay.
- * (this may happen when we are sending a packet to one of
- * our own addresses.)
- */
- if (opts && opts->ip6po_pktinfo &&
- opts->ip6po_pktinfo->ipi6_ifindex) {
- if (!(ifp->if_flags & IFF_LOOPBACK) &&
- ifp->if_index !=
- opts->ip6po_pktinfo->ipi6_ifindex) {
- error = EHOSTUNREACH;
- goto done;
- }
+ /*
+ * Check if the outgoing interface conflicts with
+ * the interface specified by ipi6_ifindex (if specified).
+ * Note that loopback interface is always okay.
+ * (this may happen when we are sending a packet to one of
+ * our own addresses.)
+ */
+ if (opts && opts->ip6po_pktinfo && opts->ip6po_pktinfo->ipi6_ifindex) {
+ if (!(ifp->if_flags & IFF_LOOPBACK) &&
+ ifp->if_index != opts->ip6po_pktinfo->ipi6_ifindex) {
+ error = EHOSTUNREACH;
+ goto done;
}
}
@@ -750,15 +742,10 @@ selectroute(struct sockaddr_in6 *dstsock
if (error == EHOSTUNREACH)
IP6_STATINC(IP6_STAT_NOROUTE);
- if (retifp != NULL)
- *retifp = ifp;
- else
- if_put(ifp, PSREF);
- if (retrt != NULL)
- *retrt = rt; /* rt may be NULL */
+ *retifp = ifp;
+ *retrt = rt; /* rt may be NULL */
return (error);
-#undef PSREF
}
static int