svn commit: r257021 - user/ae/inet6/sys/netinet6

Andrey V. Elsukov ae at FreeBSD.org
Wed Oct 23 23:21:12 UTC 2013


Author: ae
Date: Wed Oct 23 23:21:11 2013
New Revision: 257021
URL: http://svnweb.freebsd.org/changeset/base/257021

Log:
  Add in6ifa_ifpwithdstaddr() function. It is IPv6 optimized version of
  ifa_ifpwithdstaddr().

Modified:
  user/ae/inet6/sys/netinet6/in6.c
  user/ae/inet6/sys/netinet6/in6_var.h

Modified: user/ae/inet6/sys/netinet6/in6.c
==============================================================================
--- user/ae/inet6/sys/netinet6/in6.c	Wed Oct 23 22:58:27 2013	(r257020)
+++ user/ae/inet6/sys/netinet6/in6.c	Wed Oct 23 23:21:11 2013	(r257021)
@@ -1814,6 +1814,25 @@ in6ifa_ifpwithaddr(struct ifnet *ifp, co
 	return ((struct in6_ifaddr *)ifa);
 }
 
+struct in6_ifaddr *
+in6ifa_ifpwithdstaddr(struct ifnet *ifp, const struct in6_addr *addr)
+{
+	struct ifaddr *ifa;
+
+	IF_ADDR_RLOCK(ifp);
+	TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
+		if (ifa->ifa_addr->sa_family != AF_INET6 ||
+		    ifa->ifa_dstaddr == NULL)
+			continue;
+		if (IN6_ARE_ADDR_EQUAL(addr, IFA_DSTIN6(ifa))) {
+			ifa_ref(ifa);
+			break;
+		}
+	}
+	IF_ADDR_RUNLOCK(ifp);
+	return ((struct in6_ifaddr *)ifa);
+}
+
 /*
  * Find a link-local scoped address on ifp and return it if any.
  */

Modified: user/ae/inet6/sys/netinet6/in6_var.h
==============================================================================
--- user/ae/inet6/sys/netinet6/in6_var.h	Wed Oct 23 22:58:27 2013	(r257020)
+++ user/ae/inet6/sys/netinet6/in6_var.h	Wed Oct 23 23:21:11 2013	(r257021)
@@ -814,6 +814,8 @@ void	in6_setmaxmtu(void);
 int	in6_if2idlen(struct ifnet *);
 struct in6_ifaddr *in6ifa_ifpforlinklocal(struct ifnet *, int);
 struct in6_ifaddr *in6ifa_ifpwithaddr(struct ifnet *, const struct in6_addr *);
+struct in6_ifaddr *in6ifa_ifpwithdstaddr(struct ifnet *,
+    const struct in6_addr *);
 struct in6_ifaddr *in6ifa_ifwithaddr(const struct in6_addr *, uint32_t);
 struct in6_ifaddr *in6ifa_llaonifp(struct ifnet *);
 char	*ip6_sprintf(char *, const struct in6_addr *);


More information about the svn-src-user mailing list