[network-manager-openvpn] shared: re-import shared files from NetworkManager repository



commit e3083055e317265ce357a0e8e260a8037e0e6b3c
Author: Thomas Haller <thaller redhat com>
Date:   Sun May 8 21:44:06 2016 +0200

    shared: re-import shared files from NetworkManager repository
    
    Copy the files without modifications from NetworkManager's shared
    directory.

 shared/nm-macros-internal.h |    4 ++-
 shared/nm-shared-utils.c    |   79 ++++++++++++++++++++++++------------------
 shared/nm-shared-utils.h    |    3 ++
 shared/nm-test-utils.h      |   81 +++++++++++++++++++++++++++++++++++++++++--
 4 files changed, 129 insertions(+), 38 deletions(-)
---
diff --git a/shared/nm-macros-internal.h b/shared/nm-macros-internal.h
index 4176231..384bca6 100644
--- a/shared/nm-macros-internal.h
+++ b/shared/nm-macros-internal.h
@@ -26,7 +26,9 @@
 
 /********************************************************/
 
-#define nm_auto(fcn) __attribute ((cleanup(fcn)))
+#define _nm_packed __attribute__ ((packed))
+
+#define nm_auto(fcn) __attribute__ ((cleanup(fcn)))
 
 /**
  * nm_auto_free:
diff --git a/shared/nm-shared-utils.c b/shared/nm-shared-utils.c
index 0ae54bd..38f6529 100644
--- a/shared/nm-shared-utils.c
+++ b/shared/nm-shared-utils.c
@@ -45,8 +45,7 @@ gint64
 _nm_utils_ascii_str_to_int64 (const char *str, guint base, gint64 min, gint64 max, gint64 fallback)
 {
        gint64 v;
-       size_t len;
-       char buf[64], *s, *str_free = NULL;
+       char *s = NULL;
 
        if (str) {
                while (g_ascii_isspace (str[0]))
@@ -57,47 +56,59 @@ _nm_utils_ascii_str_to_int64 (const char *str, guint base, gint64 min, gint64 ma
                return fallback;
        }
 
-       len = strlen (str);
-       if (g_ascii_isspace (str[--len])) {
-               /* backward search the first non-ws character.
-                * We already know that str[0] is non-ws. */
-               while (g_ascii_isspace (str[--len]))
-                       ;
+       errno = 0;
+       v = g_ascii_strtoll (str, &s, base);
+
+       if (errno != 0)
+               return fallback;
+       if (s[0] != '\0') {
+               while (g_ascii_isspace (s[0]))
+                       s++;
+               if (s[0] != '\0') {
+                       errno = EINVAL;
+                       return fallback;
+               }
+       }
+       if (v > max || v < min) {
+               errno = ERANGE;
+               return fallback;
+       }
 
-               /* str[len] is now the last non-ws character... */
-               len++;
+       return v;
+}
 
-               if (len >= sizeof (buf))
-                       s = str_free = g_malloc (len + 1);
-               else
-                       s = buf;
+/*****************************************************************************/
 
-               memcpy (s, str, len);
-               s[len] = 0;
+gint
+_nm_utils_ascii_str_to_bool (const char *str,
+                             gint default_value)
+{
+       gsize len;
+       char *s = NULL;
 
-               nm_assert (len > 0 && len < strlen (str) && len == strlen (s));
-               nm_assert (!g_ascii_isspace (str[len-1]) && g_ascii_isspace (str[len]));
-               nm_assert (strncmp (str, s, len) == 0);
+       if (!str)
+               return default_value;
 
-               str = s;
-       }
+       while (str[0] && g_ascii_isspace (str[0]))
+               str++;
 
-       errno = 0;
-       v = g_ascii_strtoll (str, &s, base);
+       if (!str[0])
+               return default_value;
 
-       if (errno != 0)
-               v = fallback;
-       else if (s[0] != 0) {
-               errno = EINVAL;
-               v = fallback;
-       } else if (v > max || v < min) {
-               errno = ERANGE;
-               v = fallback;
+       len = strlen (str);
+       if (g_ascii_isspace (str[len - 1])) {
+               s = g_strdup (str);
+               g_strchomp (s);
+               str = s;
        }
 
-       if (G_UNLIKELY (str_free))
-               g_free (str_free);
-       return v;
+       if (!g_ascii_strcasecmp (str, "true") || !g_ascii_strcasecmp (str, "yes") || !g_ascii_strcasecmp 
(str, "on") || !g_ascii_strcasecmp (str, "1"))
+               default_value = TRUE;
+       else if (!g_ascii_strcasecmp (str, "false") || !g_ascii_strcasecmp (str, "no") || !g_ascii_strcasecmp 
(str, "off") || !g_ascii_strcasecmp (str, "0"))
+               default_value = FALSE;
+       if (s)
+               g_free (s);
+       return default_value;
 }
 
 /*****************************************************************************/
diff --git a/shared/nm-shared-utils.h b/shared/nm-shared-utils.h
index f80c850..cfa8f99 100644
--- a/shared/nm-shared-utils.h
+++ b/shared/nm-shared-utils.h
@@ -26,6 +26,9 @@
 
 gint64 _nm_utils_ascii_str_to_int64 (const char *str, guint base, gint64 min, gint64 max, gint64 fallback);
 
+gint _nm_utils_ascii_str_to_bool (const char *str,
+                                  gint default_value);
+
 /******************************************************************************/
 
 /**
diff --git a/shared/nm-test-utils.h b/shared/nm-test-utils.h
index 2503245..0759b3c 100644
--- a/shared/nm-test-utils.h
+++ b/shared/nm-test-utils.h
@@ -782,6 +782,34 @@ nmtst_get_rand_int (void)
        return g_rand_int (nmtst_get_rand ());
 }
 
+inline static gpointer
+nmtst_rand_buf (GRand *rand, gpointer buffer, gsize buffer_length)
+{
+       guint32 v;
+       guint8 *b = buffer;
+
+       if (!buffer_length)
+               return buffer;
+
+       g_assert (buffer);
+
+       if (!rand)
+               rand = nmtst_get_rand ();
+
+       for (; buffer_length >= sizeof (guint32); buffer_length -= sizeof (guint32), b += sizeof (guint32)) {
+               v = g_rand_int (rand);
+               memcpy (b, &v, sizeof (guint32));
+       }
+       if (buffer_length > 0) {
+               v = g_rand_int (rand);
+               do {
+                       *(b++) = v & 0xFF;
+                       v >>= 8;
+               } while (--buffer_length > 0);
+       }
+       return buffer;
+}
+
 inline static void *
 nmtst_rand_perm (GRand *rand, void *dst, const void *src, gsize elmt_size, gsize n_elmt)
 {
@@ -1151,11 +1179,54 @@ _nmtst_assert_resolve_relative_path_equals (const char *f1, const char *f2, cons
 
 #ifdef __NETWORKMANAGER_PLATFORM_H__
 
+inline static NMPlatformIP4Address *
+nmtst_platform_ip4_address (const char *address, const char *peer_address, guint plen)
+{
+       static NMPlatformIP4Address addr;
+
+       g_assert (plen <= 32);
+
+       memset (&addr, 0, sizeof (addr));
+       addr.address = nmtst_inet4_from_string (address);
+       if (peer_address)
+               addr.peer_address = nmtst_inet4_from_string (peer_address);
+       else
+               addr.peer_address = addr.address;
+       addr.plen = plen;
+
+       return &addr;
+}
+
+inline static NMPlatformIP4Address *
+nmtst_platform_ip4_address_full (const char *address, const char *peer_address, guint plen,
+                                 int ifindex, NMIPConfigSource source, guint32 timestamp,
+                                 guint32 lifetime, guint32 preferred, guint32 flags,
+                                 const char *label)
+{
+       NMPlatformIP4Address *addr = nmtst_platform_ip4_address (address, peer_address, plen);
+
+       G_STATIC_ASSERT (IFNAMSIZ == sizeof (addr->label));
+       g_assert (!label || strlen (label) < IFNAMSIZ);
+
+       addr->ifindex = ifindex;
+       addr->addr_source = source;
+       addr->timestamp = timestamp;
+       addr->lifetime = lifetime;
+       addr->preferred = preferred;
+       addr->n_ifa_flags = flags;
+       if (label)
+               g_strlcpy (addr->label, label, sizeof (addr->label));
+
+       return addr;
+}
+
 inline static NMPlatformIP6Address *
 nmtst_platform_ip6_address (const char *address, const char *peer_address, guint plen)
 {
        static NMPlatformIP6Address addr;
 
+       g_assert (plen <= 128);
+
        memset (&addr, 0, sizeof (addr));
        addr.address = *nmtst_inet6_from_string (address);
        addr.peer_address = *nmtst_inet6_from_string (peer_address);
@@ -1172,7 +1243,7 @@ nmtst_platform_ip6_address_full (const char *address, const char *peer_address,
        NMPlatformIP6Address *addr = nmtst_platform_ip6_address (address, peer_address, plen);
 
        addr->ifindex = ifindex;
-       addr->source = source;
+       addr->addr_source = source;
        addr->timestamp = timestamp;
        addr->lifetime = lifetime;
        addr->preferred = preferred;
@@ -1186,6 +1257,8 @@ nmtst_platform_ip4_route (const char *network, guint plen, const char *gateway)
 {
        static NMPlatformIP4Route route;
 
+       g_assert (plen <= 32);
+
        memset (&route, 0, sizeof (route));
        route.network = nmtst_inet4_from_string (network);
        route.plen = plen;
@@ -1204,7 +1277,7 @@ nmtst_platform_ip4_route_full (const char *network, guint plen, const char *gate
        NMPlatformIP4Route *route = nmtst_platform_ip4_route (network, plen, gateway);
 
        route->ifindex = ifindex;
-       route->source = source;
+       route->rt_source = source;
        route->metric = metric;
        route->mss = mss;
        route->scope_inv = nm_platform_route_scope_inv (scope);
@@ -1218,6 +1291,8 @@ nmtst_platform_ip6_route (const char *network, guint plen, const char *gateway)
 {
        static NMPlatformIP6Route route;
 
+       nm_assert (plen <= 128);
+
        memset (&route, 0, sizeof (route));
        route.network = *nmtst_inet6_from_string (network);
        route.plen = plen;
@@ -1234,7 +1309,7 @@ nmtst_platform_ip6_route_full (const char *network, guint plen, const char *gate
        NMPlatformIP6Route *route = nmtst_platform_ip6_route (network, plen, gateway);
 
        route->ifindex = ifindex;
-       route->source = source;
+       route->rt_source = source;
        route->metric = metric;
        route->mss = mss;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]