Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Aug 2015 18:15:59 +0000 (UTC)
From:      "Alexander V. Chernikov" <melifaro@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r287048 - projects/routing/sys/netinet
Message-ID:  <201508231815.t7NIFxhR042306@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: melifaro
Date: Sun Aug 23 18:15:58 2015
New Revision: 287048
URL: https://svnweb.freebsd.org/changeset/base/287048

Log:
  Convert inp_lookup_mcast_ifp() to new routing api.

Modified:
  projects/routing/sys/netinet/in_mcast.c

Modified: projects/routing/sys/netinet/in_mcast.c
==============================================================================
--- projects/routing/sys/netinet/in_mcast.c	Sun Aug 23 18:15:18 2015	(r287047)
+++ projects/routing/sys/netinet/in_mcast.c	Sun Aug 23 18:15:58 2015	(r287048)
@@ -64,6 +64,8 @@ __FBSDID("$FreeBSD$");
 #include <netinet/ip_var.h>
 #include <netinet/igmp_var.h>
 
+#include <net/rt_nhops.h>
+
 #ifndef KTR_IGMPV3
 #define KTR_IGMPV3 KTR_INET
 #endif
@@ -1875,6 +1877,7 @@ inp_getmoptions(struct inpcb *inp, struc
  * Returns NULL if no ifp could be found.
  *
  * SMPng: TODO: Acquire the appropriate locks for INADDR_TO_IFP.
+ * TODO: Provide guarantees @ifp won't disappear
  * FUTURE: Implement IPv4 source-address selection.
  */
 static struct ifnet *
@@ -1892,15 +1895,11 @@ inp_lookup_mcast_ifp(const struct inpcb 
 	if (!in_nullhost(ina)) {
 		INADDR_TO_IFP(ina, ifp);
 	} else {
-		struct route ro;
-
-		ro.ro_rt = NULL;
-		memcpy(&ro.ro_dst, gsin, sizeof(struct sockaddr_in));
-		in_rtalloc_ign(&ro, 0, inp ? inp->inp_inc.inc_fibnum : 0);
-		if (ro.ro_rt != NULL) {
-			ifp = ro.ro_rt->rt_ifp;
-			KASSERT(ifp != NULL, ("%s: null ifp", __func__));
-			RTFREE(ro.ro_rt);
+		struct nhop4_basic nh4;
+	
+		if (fib4_lookup_nh_basic(inp ? inp->inp_inc.inc_fibnum : 0,
+		    gsin->sin_addr, 0, &nh4) != 0) {
+			return (nh4.nh_ifp);
 		} else {
 			struct in_ifaddr *ia;
 			struct ifnet *mifp;



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