From: Marcel Holtmann Date: Sat, 13 Dec 2008 15:01:18 +0000 (+0100) Subject: Add support for sorting resolvers by priority X-Git-Tag: 0.3~21 X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=2f09e0d729845dd47373c9c7e70b8aad566ebf14;p=connman Add support for sorting resolvers by priority --- diff --git a/include/resolver.h b/include/resolver.h index 77a95cf..5c02375 100644 --- a/include/resolver.h +++ b/include/resolver.h @@ -32,8 +32,13 @@ extern "C" { * @short_description: Functions for registering resolver modules */ +#define CONNMAN_RESOLVER_PRIORITY_LOW -100 +#define CONNMAN_RESOLVER_PRIORITY_DEFAULT 0 +#define CONNMAN_RESOLVER_PRIORITY_HIGH 100 + struct connman_resolver { const char *name; + int priority; }; extern int connman_resolver_register(struct connman_resolver *resolver); diff --git a/src/resolver.c b/src/resolver.c index 929fd2e..a813236 100644 --- a/src/resolver.c +++ b/src/resolver.c @@ -27,6 +27,14 @@ static GSList *resolver_list = NULL; +static gint compare_priority(gconstpointer a, gconstpointer b) +{ + const struct connman_resolver *resolver1 = a; + const struct connman_resolver *resolver2 = b; + + return resolver2->priority - resolver1->priority; +} + /** * connman_resolver_register: * @resolver: resolver module @@ -39,7 +47,8 @@ int connman_resolver_register(struct connman_resolver *resolver) { DBG("resolver %p name %s", resolver, resolver->name); - resolver_list = g_slist_append(resolver_list, resolver); + resolver_list = g_slist_insert_sorted(resolver_list, resolver, + compare_priority); return 0; }