X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fresolver.c;fp=src%2Fresolver.c;h=de60cf13cd2a00f2fa08946e465653e9932121a0;hb=136ce2c05ed1fdd3033215bd9f15867c56b6dc4f;hp=0f3518888c85934acefecd43225bab3fd0a6b215;hpb=ef15fdd2b73da041cb3cd623ca0b4ce0c856644a;p=connman diff --git a/src/resolver.c b/src/resolver.c index 0f35188..de60cf1 100644 --- a/src/resolver.c +++ b/src/resolver.c @@ -23,6 +23,13 @@ #include #endif +#include +#include +#include +#include +#include +#include + #include "connman.h" struct entry_data { @@ -231,3 +238,58 @@ int __connman_resolver_selftest(void) return 0; } + +static int resolvfile_append(const char *interface, const char *domain, + const char *server) +{ + char *cmd; + int fd, len, err; + + DBG("interface %s server %s", interface, server); + + fd = open("/etc/resolv.conf", O_RDWR | O_CREAT, + S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); + if (fd < 0) + return errno; + + err = ftruncate(fd, 0); + + cmd = g_strdup_printf("nameserver %s\n", server); + + len = write(fd, cmd, strlen(cmd)); + + g_free(cmd); + + close(fd); + + return 0; +} + +static int resolvfile_remove(const char *interface, const char *domain, + const char *server) +{ + DBG("interface %s server %s", interface, server); + + return 0; +} + +static struct connman_resolver resolvfile_resolver = { + .name = "resolvfile", + .priority = CONNMAN_RESOLVER_PRIORITY_LOW, + .append = resolvfile_append, + .remove = resolvfile_remove, +}; + +int __connman_resolver_init(void) +{ + DBG(""); + + return connman_resolver_register(&resolvfile_resolver); +} + +void __connman_resolver_cleanup(void) +{ + DBG(""); + + connman_resolver_unregister(&resolvfile_resolver); +}