Author: rwatson
Date: Fri Jun 26 00:46:50 2009
New Revision: 195023
URL: http://svn.freebsd.org/changeset/base/195023

Log:
  Update various IPFW-related modules to use if_addr_rlock()/
  if_addr_runlock() rather than IF_ADDR_LOCK()/IF_ADDR_UNLOCK().
  
  MFC after:    6 weeks

Modified:
  head/sys/netinet/ip_divert.c
  head/sys/netinet/ipfw/ip_fw2.c
  head/sys/netinet/ipfw/ip_fw_nat.c

Modified: head/sys/netinet/ip_divert.c
==============================================================================
--- head/sys/netinet/ip_divert.c        Fri Jun 26 00:45:20 2009        
(r195022)
+++ head/sys/netinet/ip_divert.c        Fri Jun 26 00:46:50 2009        
(r195023)
@@ -254,7 +254,7 @@ divert_packet(struct mbuf *m, int incomi
 
                /* Find IP address for receive interface */
                ifp = m->m_pkthdr.rcvif;
-               IF_ADDR_LOCK(ifp);
+               if_addr_rlock(ifp);
                TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
                        if (ifa->ifa_addr->sa_family != AF_INET)
                                continue;
@@ -262,7 +262,7 @@ divert_packet(struct mbuf *m, int incomi
                            ((struct sockaddr_in *) ifa->ifa_addr)->sin_addr;
                        break;
                }
-               IF_ADDR_UNLOCK(ifp);
+               if_addr_runlock(ifp);
        }
        /*
         * Record the incoming interface name whenever we have one.

Modified: head/sys/netinet/ipfw/ip_fw2.c
==============================================================================
--- head/sys/netinet/ipfw/ip_fw2.c      Fri Jun 26 00:45:20 2009        
(r195022)
+++ head/sys/netinet/ipfw/ip_fw2.c      Fri Jun 26 00:46:50 2009        
(r195023)
@@ -475,17 +475,17 @@ iface_match(struct ifnet *ifp, ipfw_insn
        } else {
                struct ifaddr *ia;
 
-               IF_ADDR_LOCK(ifp);
+               if_addr_rlock(ifp);
                TAILQ_FOREACH(ia, &ifp->if_addrhead, ifa_link) {
                        if (ia->ifa_addr->sa_family != AF_INET)
                                continue;
                        if (cmd->p.ip.s_addr == ((struct sockaddr_in *)
                            (ia->ifa_addr))->sin_addr.s_addr) {
-                               IF_ADDR_UNLOCK(ifp);
+                               if_addr_runlock(ifp);
                                return(1);      /* match */
                        }
                }
-               IF_ADDR_UNLOCK(ifp);
+               if_addr_runlock(ifp);
        }
        return(0);      /* no match, fail ... */
 }
@@ -588,7 +588,7 @@ search_ip6_addr_net (struct in6_addr * i
        struct in6_addr copia;
 
        TAILQ_FOREACH(mdc, &V_ifnet, if_link) {
-               IF_ADDR_LOCK(mdc);
+               if_addr_rlock(mdc);
                TAILQ_FOREACH(mdc2, &mdc->if_addrhead, ifa_link) {
                        if (mdc2->ifa_addr->sa_family == AF_INET6) {
                                fdm = (struct in6_ifaddr *)mdc2;
@@ -596,12 +596,12 @@ search_ip6_addr_net (struct in6_addr * i
                                /* need for leaving scope_id in the sock_addr */
                                in6_clearscope(&copia);
                                if (IN6_ARE_ADDR_EQUAL(ip6_addr, &copia)) {
-                                       IF_ADDR_UNLOCK(mdc);
+                                       if_addr_runlock(mdc);
                                        return 1;
                                }
                        }
                }
-               IF_ADDR_UNLOCK(mdc);
+               if_addr_runlock(mdc);
        }
        return 0;
 }

Modified: head/sys/netinet/ipfw/ip_fw_nat.c
==============================================================================
--- head/sys/netinet/ipfw/ip_fw_nat.c   Fri Jun 26 00:45:20 2009        
(r195022)
+++ head/sys/netinet/ipfw/ip_fw_nat.c   Fri Jun 26 00:46:50 2009        
(r195023)
@@ -92,7 +92,7 @@ ifaddr_change(void *arg __unused, struct
        LIST_FOREACH(ptr, &V_layer3_chain.nat, _next) {
                /* ...using nic 'ifp->if_xname' as dynamic alias address. */
                if (strncmp(ptr->if_name, ifp->if_xname, IF_NAMESIZE) == 0) {
-                       IF_ADDR_LOCK(ifp);
+                       if_addr_rlock(ifp);
                        TAILQ_FOREACH(ifa, &ifp->if_addrhead, ifa_link) {
                                if (ifa->ifa_addr == NULL)
                                        continue;
@@ -102,7 +102,7 @@ ifaddr_change(void *arg __unused, struct
                                    (ifa->ifa_addr))->sin_addr;
                                LibAliasSetAddress(ptr->lib, ptr->ip);
                        }
-                       IF_ADDR_UNLOCK(ifp);
+                       if_addr_runlock(ifp);
                }
        }
        IPFW_WUNLOCK(&V_layer3_chain);  
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to