turn flags into separate APIs
authorPavel Šimerda <pavlix@pavlix.net>
Thu, 21 Nov 2013 23:34:42 +0000 (00:34 +0100)
committerPavel Šimerda <pavlix@pavlix.net>
Thu, 21 Nov 2013 23:34:42 +0000 (00:34 +0100)
backends/any.c
backends/getaddrinfo.c
compat/libc.c
include/netresolve-backend.h
include/netresolve-common.h
include/netresolve.h
lib/backend.c
lib/netresolve-private.h
lib/resolver.c

index 8d8800d18060f9a0089205c56172db63cedb42c0..3ea196fc89f0ed647c576e3adb613603d32f493c 100644 (file)
@@ -26,10 +26,9 @@ void
 start(netresolve_backend_t resolver, char **settings)
 {
        const char *node = netresolve_backend_get_node(resolver);
-       bool loopback = netresolve_backend_get_flag(resolver, NETRESOLVE_FLAG_DEFAULT_LOOPBACK);
 
        /* Fail for non-NULL node name and when defaulting to loopback is requested. */
-       if (loopback || (node && *node)) {
+       if (netresolve_backend_get_default_loopback(resolver) || (node && *node)) {
                netresolve_backend_failed(resolver);
                return;
        }
index aeae551b464ee6d689dd09792f5a83dd53e0880c..25ee02f20a4e98f4927a25820908b4d27ad50aac 100644 (file)
@@ -71,7 +71,7 @@ start(netresolve_backend_t resolver, char **settings)
        struct addrinfo *result;
        int status;
 
-       if (!netresolve_backend_get_flag(resolver, NETRESOLVE_FLAG_DEFAULT_LOOPBACK))
+       if (!netresolve_backend_get_default_loopback(resolver))
                hints.ai_flags |= AI_PASSIVE;
 
        status = getaddrinfo(node, service, &hints, &result);
index 9f849f747456b1c62fd4c201b1ceb55dae63ac0e..bfcfd124866dbb0d1d1cad134b2ff6beaf41f3f7 100644 (file)
@@ -68,10 +68,7 @@ getaddrinfo(const char *node, const char *service,
        if (!hints)
                hints = &default_hints;
 
-       if (hints->ai_flags & AI_PASSIVE)
-               netresolve_unset_flag(resolver, NETRESOLVE_FLAG_DEFAULT_LOOPBACK);
-       else
-               netresolve_set_flag(resolver, NETRESOLVE_FLAG_DEFAULT_LOOPBACK);
+       netresolve_set_default_loopback(resolver, !(hints->ai_flags & AI_PASSIVE));
 
        status = netresolve_resolve(resolver, node, service, hints->ai_family, hints->ai_socktype, hints->ai_protocol);
 
index 700c500671cfbd059613a599a20c7f862eed5e91..a3a6f7672fe91b0d7c7f8ba5c595c10b69313f17 100644 (file)
@@ -37,7 +37,7 @@ const char *netresolve_backend_get_service(netresolve_backend_t resolver);
 int netresolve_backend_get_family(netresolve_backend_t resolver);
 int netresolve_backend_get_protocol(netresolve_backend_t resolver);
 int netresolve_backend_get_socktype(netresolve_backend_t resolver);
-bool netresolve_backend_get_flag(netresolve_backend_t resolver, netresolve_flag_t flag);
+bool netresolve_backend_get_default_loopback(netresolve_backend_t resolver);
 
 /* Output */
 void netresolve_backend_add_path(netresolve_backend_t resolver,
index 27797ccd7e06804ad2de27b88cc168152d9ef594..ce3055fd21336d9ef9f6328f00d38661d21525e0 100644 (file)
 #ifndef NETRESOLVE_COMMON_H
 #define NETRESOLVE_COMMON_H
 
-typedef enum netresolve_flag {
-       /* NETRESOLVE_FLAG_DEFAULT_LOOPBACK:
-        *
-        * Translate `NULL` to `127.0.0.1` and `::1` instead of `0.0.0.0` and
-        * `::`. Implemented together by `any` and `loopback`. Passed reversed
-        * as `AI_PASSIVE` to `getaddrinfo()`.
-        */
-       NETRESOLVE_FLAG_DEFAULT_LOOPBACK, // reversed AI_PASSIVE
-       // NETRESOLVE_FLAG_ADDRCONFIG,
-       // NETRESOLVE_FLAG_NUMERICHOST,
-       // AI_V4MAPPED, AI_ALL
-       // NETRESOLVE_FLAG_NUMERICSERV,
-       // NETRESOLVE_FLAG_CANONNAME,
-       _NETRESOLVE_FLAG_COUNT
-} netresolve_flag_t;
-
 #endif /* NETRESOLVE_COMMON_H */
index 4e35d235d8c7759e5ff8725796c9c8a51b89c52c..7b729f2bea5b792f2f9e2126edaaee5658be3148 100644 (file)
@@ -33,8 +33,7 @@ void netresolve_close(netresolve_t resolver);
 /* Configuration API */
 void netresolve_set_log_level(netresolve_t resolver, int level);
 void netresolve_set_backend_string(netresolve_t resolver, const char *string);
-void netresolve_set_flag(netresolve_t resolver, netresolve_flag_t flag);
-void netresolve_unset_flag(netresolve_t resolver, netresolve_flag_t flag);
+void netresolve_set_default_loopback(netresolve_t resolver, bool value);
 
 /* Callback API */
 typedef void (*netresolve_callback_t)(netresolve_t resolver, void *user_data);
index 7cab4949a712fcd97c563c6ea63dbf2913993b8c..e5c0ab93dce086820cef7ad86e24ccad6725a341 100644 (file)
@@ -59,9 +59,9 @@ netresolve_backend_get_protocol(netresolve_backend_t resolver)
 }
 
 bool
-netresolve_backend_get_flag(netresolve_backend_t resolver, netresolve_flag_t flag)
+netresolve_backend_get_default_loopback(netresolve_backend_t resolver)
 {
-       return resolver->request.flags & (1 << flag);
+       return resolver->request.default_loopback;
 }
 
 static size_t
index c4686d0a625011bc6164ce12073d2a43d2733e19..a5b5a9d95e7fa778f4d0cf58461cb9870b0a4aec 100644 (file)
@@ -101,8 +101,8 @@ struct netresolve_resolver {
                const char *service;
                int socktype;
                int protocol;
-               /* See `netresolve-common.h` for details. */
-               int flags;
+               /* Advanced configuration */
+               bool default_loopback;
        } request;
        struct netresolve_response {
                struct netresolve_path *paths;
index 6804da29b78258cd2a7ccb04ca3de635f66d44e4..98fa184bf82a099e56e5cda41d837e8df47b1090 100644 (file)
@@ -49,8 +49,7 @@ netresolve_open(void)
 
        resolver->first_connect_timeout = -1;
 
-       if (strtob(secure_getenv("NETRESOLVE_FLAG_DEFAULT_LOOPBACK")))
-               netresolve_set_flag(resolver, NETRESOLVE_FLAG_DEFAULT_LOOPBACK);
+       netresolve_set_default_loopback(resolver, strtob(secure_getenv("NETRESOLVE_FLAG_DEFAULT_LOOPBACK")));
 
        return resolver;
 }
@@ -106,21 +105,9 @@ netresolve_set_log_level(netresolve_t resolver, int level)
 }
 
 void
-netresolve_set_flag(netresolve_t resolver, netresolve_flag_t flag)
+netresolve_set_default_loopback(netresolve_t resolver, bool value)
 {
-       if (flag >= _NETRESOLVE_FLAG_COUNT)
-               return;
-
-       resolver->request.flags |= (1 << flag);
-}
-
-void
-netresolve_unset_flag(netresolve_t resolver, netresolve_flag_t flag)
-{
-       if (flag >= _NETRESOLVE_FLAG_COUNT)
-               return;
-
-       resolver->request.flags &= ~(1 << flag);
+       resolver->request.default_loopback = value;
 }
 
 void
@@ -152,7 +139,7 @@ netresolve_callback_set_bind(netresolve_t resolver,
        resolver->callbacks.on_connect = NULL;
        resolver->callbacks.user_data_sock = user_data;
 
-       netresolve_unset_flag(resolver, NETRESOLVE_FLAG_DEFAULT_LOOPBACK);
+       netresolve_set_default_loopback(resolver, false);
 }
 
 void
@@ -164,7 +151,7 @@ netresolve_callback_set_connect(netresolve_t resolver,
        resolver->callbacks.on_connect = on_connect;
        resolver->callbacks.user_data_sock = user_data;
 
-       netresolve_set_flag(resolver, NETRESOLVE_FLAG_DEFAULT_LOOPBACK);
+       netresolve_set_default_loopback(resolver, true);
 }
 
 static struct netresolve_backend *
This page took 0.069352 seconds and 5 git commands to generate.