The branch main has been updated by donner:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=d5419034381d0e8e8c99f0f678118b197144bfff

commit d5419034381d0e8e8c99f0f678118b197144bfff
Author:     Lutz Donnerhacke <[email protected]>
AuthorDate: 2021-05-26 07:09:19 +0000
Commit:     Lutz Donnerhacke <[email protected]>
CommitDate: 2021-06-19 18:25:08 +0000

    libalias: Restructure - Outgoing search
    
    Factor out the outgoing search function.
    Preparation for a new data structure.
    
    MFC after:      1 week
    Differential Revision: https://reviews.freebsd.org/D30572
---
 sys/netinet/libalias/alias_db.c | 67 ++++++++++++++++++++++++-----------------
 1 file changed, 40 insertions(+), 27 deletions(-)

diff --git a/sys/netinet/libalias/alias_db.c b/sys/netinet/libalias/alias_db.c
index 229ca24bfe29..3fd7cf5e0acc 100644
--- a/sys/netinet/libalias/alias_db.c
+++ b/sys/netinet/libalias/alias_db.c
@@ -1097,50 +1097,65 @@ ReLink(struct alias_link *old_lnk,
        return (new_lnk);
 }
 
-static struct alias_link *
-_FindLinkOut(struct libalias *la, struct in_addr src_addr,
-    struct in_addr dst_addr,
-    u_short src_port,
-    u_short dst_port,
-    int link_type,
-    int replace_partial_links)
-{
-       u_int i;
-       struct alias_link *lnk;
 
 #define OUTGUARD                                       \
    if (lnk->src_port != src_port ||                    \
        lnk->src_addr.s_addr != src_addr.s_addr ||      \
+       lnk->dst_addr.s_addr != dst_addr.s_addr ||      \
+       lnk->dst_port != dst_port ||                    \
        lnk->link_type != link_type ||                  \
        lnk->server != NULL)                            \
           continue;
 
-       LIBALIAS_LOCK_ASSERT(la);
+static struct alias_link *
+_SearchLinkOut(struct libalias *la, struct in_addr src_addr,
+    struct in_addr dst_addr,
+    u_short src_port,
+    u_short dst_port,
+    int link_type) {
+       u_int i;
+       struct alias_link *lnk;
+
        i = StartPointOut(src_addr, dst_addr, src_port, dst_port, link_type);
        LIST_FOREACH(lnk, &la->linkTableOut[i], list_out) {
                OUTGUARD;
-               if (lnk->dst_addr.s_addr == dst_addr.s_addr &&
-                   lnk->dst_port == dst_port)
-                       break;
+               CleanupLink(la, &lnk);
+               if (lnk != NULL)
+                       lnk->timestamp = LibAliasTime;
+               return (lnk);
        }
 
-       CleanupLink(la, &lnk);
-       if (lnk != NULL)
-               lnk->timestamp = LibAliasTime;
+       return (NULL);
+}
+
+#undef OUTGUARD
+
+static struct alias_link *
+_FindLinkOut(struct libalias *la, struct in_addr src_addr,
+    struct in_addr dst_addr,
+    u_short src_port,
+    u_short dst_port,
+    int link_type,
+    int replace_partial_links)
+{
+       struct alias_link *lnk;
+
+       LIBALIAS_LOCK_ASSERT(la);
+       lnk = _SearchLinkOut(la, src_addr, dst_addr, src_port, dst_port, 
link_type);
 
        /* Search for partially specified links. */
        if (lnk == NULL && replace_partial_links) {
                if (dst_port != 0 && dst_addr.s_addr != INADDR_ANY) {
-                       lnk = _FindLinkOut(la, src_addr, dst_addr, src_port, 0,
-                           link_type, 0);
+                       lnk = _SearchLinkOut(la, src_addr, dst_addr, src_port, 
0,
+                           link_type);
                        if (lnk == NULL)
-                               lnk = _FindLinkOut(la, src_addr, ANY_ADDR, 
src_port,
-                                   dst_port, link_type, 0);
+                               lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, 
src_port,
+                                   dst_port, link_type);
                }
                if (lnk == NULL &&
                    (dst_port != 0 || dst_addr.s_addr != INADDR_ANY)) {
-                       lnk = _FindLinkOut(la, src_addr, ANY_ADDR, src_port, 0,
-                           link_type, 0);
+                       lnk = _SearchLinkOut(la, src_addr, ANY_ADDR, src_port, 
0,
+                           link_type);
                }
                if (lnk != NULL) {
                        lnk = ReLink(lnk,
@@ -1149,7 +1164,6 @@ _FindLinkOut(struct libalias *la, struct in_addr src_addr,
                            link_type);
                }
        }
-#undef OUTGUARD
        return (lnk);
 }
 
@@ -1230,10 +1244,9 @@ _FindLinkIn(struct libalias *la, struct in_addr dst_addr,
                        if (lnk->dst_addr.s_addr == dst_addr.s_addr
                            && lnk->dst_port == dst_port) {
                                CleanupLink(la, &lnk);
-                               if (lnk != NULL) {
+                               if (lnk != NULL)
                                        lnk->timestamp = LibAliasTime;
-                                       return (lnk);
-                               }
+                               return (lnk);
                        }
                }
        } else {
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/dev-commits-src-main
To unsubscribe, send any mail to "[email protected]"

Reply via email to