Attention is currently required from: plaisthos.

Hello plaisthos,

I'd like you to do a code review.
Please visit

    http://gerrit.openvpn.net/c/openvpn/+/1784?usp=email

to review the following change.


Change subject: options_util: move subnet_pool_by_tag out of multi.c
......................................................................

options_util: move subnet_pool_by_tag out of multi.c

It is a pure lookup over the --subnet-pool list; relocating it to
options_util.c (and taking the list head directly) lets it be unit
tested without multi.c's dependencies. No functional change.

Change-Id: I087cbccc9b4a994376aa2d2409509a2307068899
GitHub: closes openvpn/OpenVPN#987
Signed-off-by: Antonio Quartulli <[email protected]>
---
M src/openvpn/multi.c
M src/openvpn/options_util.c
M src/openvpn/options_util.h
3 files changed, 27 insertions(+), 16 deletions(-)



  git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/84/1784/1

diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c
index 84f25b3..da46cf4 100644
--- a/src/openvpn/multi.c
+++ b/src/openvpn/multi.c
@@ -42,6 +42,7 @@
 #include "vlan.h"
 #include "auth_token.h"
 #include "route.h"
+#include "options_util.h"
 #include <inttypes.h>
 #include <string.h>

@@ -1419,19 +1420,6 @@
     }
 }

-static const struct subnet_pool_def *
-subnet_pool_by_tag(const struct options *o, const char *tag)
-{
-    for (const struct subnet_pool_def *d = o->subnet_pools; d; d = d->next)
-    {
-        if (!strcmp(d->tag, tag))
-        {
-            return d;
-        }
-    }
-    return NULL;
-}
-
 /*
  * Return the dynamic pool serving the clients tagged with <tag>, creating it
  * on first use from the matching --subnet-pool definition.
@@ -1449,7 +1437,7 @@
         }
     }

-    const struct subnet_pool_def *d4 = subnet_pool_by_tag(&m->top.options, 
tag);
+    const struct subnet_pool_def *d4 = 
subnet_pool_by_tag(m->top.options.subnet_pools, tag);
     ALLOC_OBJ_CLEAR(sp, struct subnet_pool);
     sp->tag = d4->tag;
     sp->pool = ifconfig_pool_init(true, IFCONFIG_POOL_INDIV, d4->network + 2,
@@ -1475,7 +1463,7 @@
     if (mi->context.options.subnet_pool_tag && 
!mi->context.options.subnet_pool_defined)
     {
         const struct subnet_pool_def *d =
-            subnet_pool_by_tag(&m->top.options, 
mi->context.options.subnet_pool_tag);
+            subnet_pool_by_tag(m->top.options.subnet_pools, 
mi->context.options.subnet_pool_tag);
         if (d)
         {
             mi->context.options.subnet_pool_defined = true;
@@ -2864,7 +2852,7 @@
     }

     if (mi->context.options.subnet_pool_tag
-        && !subnet_pool_by_tag(&m->top.options, 
mi->context.options.subnet_pool_tag))
+        && !subnet_pool_by_tag(m->top.options.subnet_pools, 
mi->context.options.subnet_pool_tag))
     {
         msg(D_MULTI_ERRORS, "MULTI: client has been rejected due to unknown 
--subnet-pool-tag '%s'",
             mi->context.options.subnet_pool_tag);
diff --git a/src/openvpn/options_util.c b/src/openvpn/options_util.c
index 47fe0bc..ba04917 100644
--- a/src/openvpn/options_util.c
+++ b/src/openvpn/options_util.c
@@ -31,6 +31,19 @@

 #include "push.h"

+const struct subnet_pool_def *
+subnet_pool_by_tag(const struct subnet_pool_def *pools, const char *tag)
+{
+    for (const struct subnet_pool_def *d = pools; d; d = d->next)
+    {
+        if (!strcmp(d->tag, tag))
+        {
+            return d;
+        }
+    }
+    return NULL;
+}
+
 const char *
 parse_auth_failed_temp(struct options *o, const char *reason)
 {
diff --git a/src/openvpn/options_util.h b/src/openvpn/options_util.h
index 1d4ea9b..c54357c 100644
--- a/src/openvpn/options_util.h
+++ b/src/openvpn/options_util.h
@@ -28,6 +28,16 @@

 const char *parse_auth_failed_temp(struct options *o, const char *reason);

+/**
+ * Look up a named --subnet-pool in a list of pool definitions.
+ *
+ * @param pools  head of the --subnet-pool list (may be NULL)
+ * @param tag    the --subnet-pool-tag to match
+ * @return       the matching pool definition, or NULL if none matches
+ */
+const struct subnet_pool_def *subnet_pool_by_tag(const struct subnet_pool_def 
*pools,
+                                                 const char *tag);
+

 /** Checks if the string is a valid integer by checking if it can be
  *  converted to an integer */

--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1784?usp=email
To unsubscribe, or for help writing mail filters, visit 
http://gerrit.openvpn.net/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: I087cbccc9b4a994376aa2d2409509a2307068899
Gerrit-Change-Number: 1784
Gerrit-PatchSet: 1
Gerrit-Owner: ordex <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to