diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-12-07 08:32:39 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-12-07 08:32:39 +0100 |
commit | dbd30c41c1c066b7ac71037dd07b9bc69acbb10d (patch) | |
tree | 416d089116d885529db31903a01a7556e9e1bcf6 /plugins/loopback.c | |
parent | ff2d4748727b0a188cdc4095ebc6448f1d10f4b2 (diff) | |
download | connman-dbd30c41c1c066b7ac71037dd07b9bc69acbb10d.tar.gz connman-dbd30c41c1c066b7ac71037dd07b9bc69acbb10d.tar.bz2 connman-dbd30c41c1c066b7ac71037dd07b9bc69acbb10d.zip |
Add support for setting hostname and domainname from DHCP
Diffstat (limited to 'plugins/loopback.c')
-rw-r--r-- | plugins/loopback.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/plugins/loopback.c b/plugins/loopback.c index 446d1849..668165c0 100644 --- a/plugins/loopback.c +++ b/plugins/loopback.c @@ -37,6 +37,7 @@ #define CONNMAN_API_SUBJECT_TO_CHANGE #include <connman/plugin.h> +#include <connman/utsname.h> #include <connman/log.h> static in_addr_t loopback_address; @@ -278,6 +279,42 @@ done: return err; } +static int loopback_set_hostname(const char *hostname) +{ + int err; + + if (sethostname(hostname, strlen(hostname)) < 0) { + err = -errno; + connman_error("Failed to set hostname to %s", hostname); + return err; + } + + connman_info("Setting hostname to %s", hostname); + + return 0; +} + +static int loopback_set_domainname(const char *domainname) +{ + int err; + + if (setdomainname(domainname, strlen(domainname)) < 0) { + err = -errno; + connman_error("Failed to set domainname to %s", domainname); + return err; + } + + connman_info("Setting domainname to %s", domainname); + + return 0; +} + +static struct connman_utsname_driver loopback_driver = { + .name = "loopback", + .set_hostname = loopback_set_hostname, + .set_domainname = loopback_set_domainname, +}; + static int loopback_init(void) { loopback_address = inet_addr("127.0.0.1"); @@ -289,11 +326,15 @@ static int loopback_init(void) //create_watch(); + connman_utsname_driver_register(&loopback_driver); + return 0; } static void loopback_exit(void) { + connman_utsname_driver_unregister(&loopback_driver); + //remove_watch(); } |