Author: glebius
Date: Mon Sep 10 12:11:11 2012
New Revision: 240311
URL: http://svn.freebsd.org/changeset/base/240311

Log:
  Merge r238989:
    The llentry_update() is used only by flowtable and the latter
    always passes NULL pointer to it. Thus, code can be simplified
    and function renamed to llentry_alloc() to match rtalloc().

Modified:
  stable/9/sys/net/flowtable.c
  stable/9/sys/net/if_llatbl.c
  stable/9/sys/net/if_llatbl.h
Directory Properties:
  stable/9/sys/   (props changed)

Modified: stable/9/sys/net/flowtable.c
==============================================================================
--- stable/9/sys/net/flowtable.c        Mon Sep 10 12:09:19 2012        
(r240310)
+++ stable/9/sys/net/flowtable.c        Mon Sep 10 12:11:11 2012        
(r240311)
@@ -1257,7 +1257,7 @@ uncached:
                        
                        else
                                l3addr = (struct sockaddr_storage *)&ro->ro_dst;
-                       llentry_update(&lle, LLTABLE6(ifp), l3addr, ifp);
+                       lle = llentry_alloc(ifp, LLTABLE6(ifp), l3addr);
                }
 #endif 
 #ifdef INET
@@ -1266,7 +1266,7 @@ uncached:
                                l3addr = (struct sockaddr_storage 
*)rt->rt_gateway;
                        else
                                l3addr = (struct sockaddr_storage *)&ro->ro_dst;
-                       llentry_update(&lle, LLTABLE(ifp), l3addr, ifp);        
+                       lle = llentry_alloc(ifp, LLTABLE(ifp), l3addr); 
                }
                        
 #endif

Modified: stable/9/sys/net/if_llatbl.c
==============================================================================
--- stable/9/sys/net/if_llatbl.c        Mon Sep 10 12:09:19 2012        
(r240310)
+++ stable/9/sys/net/if_llatbl.c        Mon Sep 10 12:11:11 2012        
(r240311)
@@ -132,42 +132,33 @@ llentry_free(struct llentry *lle)
 }
 
 /*
- * Update an llentry for address dst (equivalent to rtalloc for new-arp)
- * Caller must pass in a valid struct llentry * (or NULL)
+ * (al)locate an llentry for address dst (equivalent to rtalloc for new-arp).
  *
- * if found the llentry * is returned referenced and unlocked
+ * If found the llentry * is returned referenced and unlocked.
  */
-int
-llentry_update(struct llentry **llep, struct lltable *lt,
-    struct sockaddr_storage *dst, struct ifnet *ifp)
+struct llentry *
+llentry_alloc(struct ifnet *ifp, struct lltable *lt,
+    struct sockaddr_storage *dst)
 {
        struct llentry *la;
 
        IF_AFDATA_RLOCK(ifp);
-       la = lla_lookup(lt, LLE_EXCLUSIVE,
-           (struct sockaddr *)dst);
+       la = lla_lookup(lt, LLE_EXCLUSIVE, (struct sockaddr *)dst);
        IF_AFDATA_RUNLOCK(ifp);
        if ((la == NULL) &&
            (ifp->if_flags & (IFF_NOARP | IFF_STATICARP)) == 0) {
                IF_AFDATA_WLOCK(ifp);
-               la = lla_lookup(lt,
-                   (LLE_CREATE | LLE_EXCLUSIVE),
+               la = lla_lookup(lt, (LLE_CREATE | LLE_EXCLUSIVE),
                    (struct sockaddr *)dst);
                IF_AFDATA_WUNLOCK(ifp);
        }
-       if (la != NULL && (*llep != la)) {
-               if (*llep != NULL)
-                       LLE_FREE(*llep);
+
+       if (la != NULL) {
                LLE_ADDREF(la);
                LLE_WUNLOCK(la);
-               *llep = la;
-       } else if (la != NULL)
-               LLE_WUNLOCK(la);
-
-       if (la == NULL)
-               return (ENOENT);
+       }
 
-       return (0);
+       return (la);
 }
 
 /*

Modified: stable/9/sys/net/if_llatbl.h
==============================================================================
--- stable/9/sys/net/if_llatbl.h        Mon Sep 10 12:09:19 2012        
(r240310)
+++ stable/9/sys/net/if_llatbl.h        Mon Sep 10 12:11:11 2012        
(r240311)
@@ -189,8 +189,8 @@ void                lltable_drain(int);
 int            lltable_sysctl_dumparp(int, struct sysctl_req *);
 
 size_t         llentry_free(struct llentry *);
-int            llentry_update(struct llentry **, struct lltable *,
-                   struct sockaddr_storage *, struct ifnet *);
+struct llentry  *llentry_alloc(struct ifnet *, struct lltable *,
+                   struct sockaddr_storage *);
 
 /*
  * Generic link layer address lookup function.
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-9
To unsubscribe, send any mail to "[email protected]"

Reply via email to