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);