Make use of IFP_TO_IA() in the multicast code path of ip_output()         
instead of rolling our own copy. No functional change.

ok?

Index: netinet/ip_output.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_output.c,v
retrieving revision 1.241
diff -u -p -r1.241 ip_output.c
--- netinet/ip_output.c 11 Jun 2013 18:15:53 -0000      1.241
+++ netinet/ip_output.c 19 Jun 2013 13:46:16 -0000
@@ -475,13 +475,9 @@ reroute:
                 * of outgoing interface.
                 */
                if (ip->ip_src.s_addr == INADDR_ANY) {
-                       struct in_ifaddr *ia;
-
-                       TAILQ_FOREACH(ia, &in_ifaddr, ia_list)
-                               if (ia->ia_ifp == ifp) {
-                                       ip->ip_src = ia->ia_addr.sin_addr;
-                                       break;
-                               }
+                       IFP_TO_IA(ifp, ia);
+                       if (ia != NULL)
+                               ip->ip_src = ia->ia_addr.sin_addr;
                }
 
                IN_LOOKUP_MULTI(ip->ip_dst, ifp, inm);

Reply via email to