summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Herrmann <dh.herrmann@gmail.com>2013-11-04 18:20:54 +0100
committerDavid Herrmann <dh.herrmann@gmail.com>2013-11-04 18:20:54 +0100
commit536b908f6ec2999a0351e41c7cd93d9d153f7474 (patch)
tree9721b4f1f9abd6d596c40553eb0c15cba5351c56
parentd3cfd0e31e7fb9150942aee537af6e38cd4d4058 (diff)
owfd: dhcp: don't add addr-label for servers
gdhcp seems to be unable to cope with labeled addresses. Don't use them for servers. Signed-off-by: David Herrmann <dh.herrmann@gmail.com>
-rw-r--r--src/dhcp.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/dhcp.c b/src/dhcp.c
index cc94ff9..e5c0929 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -106,8 +106,10 @@ static int flush_if_addr(struct owfd_dhcp *dhcp)
argv[i++] = "flush";
argv[i++] = "dev";
argv[i++] = dhcp->config.interface;
- argv[i++] = "label";
- argv[i++] = dhcp->iflabel;
+ if (dhcp->iflabel) {
+ argv[i++] = "label";
+ argv[i++] = dhcp->iflabel;
+ }
argv[i] = NULL;
execve(argv[0], argv, environ);
@@ -162,8 +164,10 @@ static int add_if_addr(struct owfd_dhcp *dhcp, char *addr)
argv[i++] = addr;
argv[i++] = "dev";
argv[i++] = dhcp->config.interface;
- argv[i++] = "label";
- argv[i++] = dhcp->iflabel;
+ if (dhcp->iflabel) {
+ argv[i++] = "label";
+ argv[i++] = dhcp->iflabel;
+ }
argv[i] = NULL;
execve(argv[0], argv, environ);
@@ -387,12 +391,6 @@ static int owfd_dhcp_setup(struct owfd_dhcp *dhcp)
goto error;
}
- r = asprintf(&dhcp->iflabel, "%s:openwfd", dhcp->config.interface);
- if (r < 0) {
- r = log_ERRNO();
- goto error;
- }
-
dhcp->loop = g_main_loop_new(NULL, FALSE);
sigemptyset(&mask);
@@ -428,6 +426,13 @@ static int owfd_dhcp_setup(struct owfd_dhcp *dhcp)
dhcp);
if (dhcp->config.client) {
+ r = asprintf(&dhcp->iflabel, "%s:openwfd",
+ dhcp->config.interface);
+ if (r < 0) {
+ r = log_ERRNO();
+ goto error;
+ }
+
dhcp->client = g_dhcp_client_new(G_DHCP_IPV4, dhcp->ifindex,
&cerr);
if (!dhcp->client) {