#include <connman/plugin.h>
#include <connman/log.h>
+#if 0
static GIOChannel *inotify_channel = NULL;
static int hostname_descriptor = -1;
return -EIO;
}
- g_io_add_watch(inotify_channel, G_IO_IN | G_IO_ERR | G_IO_HUP,
- inotify_event, NULL);
-
hostname_descriptor = inotify_add_watch(fd, "/etc/hostname",
IN_MODIFY | IN_DELETE_SELF | IN_MOVE_SELF);
if (hostname_descriptor < 0) {
return -EIO;
}
+ g_io_add_watch(inotify_channel, G_IO_IN | G_IO_ERR | G_IO_HUP,
+ inotify_event, NULL);
+
return 0;
}
close(fd);
}
+#endif
+
+static void create_hostname(void)
+{
+ const char *name = "localhost";
+
+ if (sethostname(name, strlen(name)) < 0)
+ connman_error("Failed to set hostname to %s", name);
+}
static int setup_hostname(void)
{
return -EIO;
}
- connman_info("System hostname is %s", name);
+ if (strlen(name) > 0 && strcmp(name, "(none)") != 0)
+ connman_info("System hostname is %s", name);
+ else
+ create_hostname();
+
+ memset(name, 0, sizeof(name));
+
+ if (getdomainname(name, HOST_NAME_MAX) < 0) {
+ connman_error("Failed to get current domainname");
+ return -EIO;
+ }
+
+ if (strlen(name) > 0 && strcmp(name, "(none)") != 0)
+ connman_info("System domainname is %s", name);
return 0;
}
static int setup_loopback(void)
{
struct ifreq ifr;
- struct sockaddr_in *addr;
+ struct sockaddr_in addr;
int sk, err;
sk = socket(PF_INET, SOCK_DGRAM, 0);
goto done;
}
- addr = (struct sockaddr_in *) &ifr.ifr_addr;
- addr->sin_family = AF_INET;
- addr->sin_addr.s_addr = inet_addr("127.0.0.1");
+ memset(&addr, 0, sizeof(addr));
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = inet_addr("127.0.0.1");
+ memcpy(&ifr.ifr_addr, &addr, sizeof(ifr.ifr_addr));
err = ioctl(sk, SIOCSIFADDR, &ifr);
if (err < 0) {
goto done;
}
- addr = (struct sockaddr_in *) &ifr.ifr_netmask;
- addr->sin_family = AF_INET;
- addr->sin_addr.s_addr = inet_addr("255.0.0.0");
+ memset(&addr, 0, sizeof(addr));
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = inet_addr("255.0.0.0");
+ memcpy(&ifr.ifr_netmask, &addr, sizeof(ifr.ifr_netmask));
err = ioctl(sk, SIOCSIFNETMASK, &ifr);
if (err < 0) {
setup_hostname();
- create_watch();
+ //create_watch();
return 0;
}
static void loopback_exit(void)
{
- remove_watch();
+ //remove_watch();
}
CONNMAN_PLUGIN_DEFINE(loopback, "Loopback device plugin", VERSION,