summaryrefslogtreecommitdiffstats
path: root/usr.sbin/vmd/dhcp.c
diff options
context:
space:
mode:
authorreyk <reyk@openbsd.org>2017-04-21 07:03:26 +0000
committerreyk <reyk@openbsd.org>2017-04-21 07:03:26 +0000
commitc48cfcf432506f3d98df7bc4b9bc82cf96064fb3 (patch)
treef73c80ed6fe91a404a78a365859bc73bc2fd01ed /usr.sbin/vmd/dhcp.c
parentvmd(8) pci emulation fix required for upcoming option rom support. (diff)
downloadwireguard-openbsd-c48cfcf432506f3d98df7bc4b9bc82cf96064fb3.tar.xz
wireguard-openbsd-c48cfcf432506f3d98df7bc4b9bc82cf96064fb3.zip
Add global configuration option "local prefix" to change prefix for -L.
The default prefix is 100.64.0.0/10 from RFC6598. Requested by sthen@ chris@ OK mlarkin@
Diffstat (limited to 'usr.sbin/vmd/dhcp.c')
-rw-r--r--usr.sbin/vmd/dhcp.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/usr.sbin/vmd/dhcp.c b/usr.sbin/vmd/dhcp.c
index b8b05000e3a..65ea4ffae33 100644
--- a/usr.sbin/vmd/dhcp.c
+++ b/usr.sbin/vmd/dhcp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dhcp.c,v 1.1 2017/04/19 15:38:32 reyk Exp $ */
+/* $OpenBSD: dhcp.c,v 1.2 2017/04/21 07:03:26 reyk Exp $ */
/*
* Copyright (c) 2017 Reyk Floeter <reyk@openbsd.org>
@@ -33,6 +33,7 @@
#include "virtio.h"
static const uint8_t broadcast[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+extern struct vmd *env;
ssize_t
dhcp_request(struct vionet_dev *dev, char *buf, size_t buflen, char **obuf)
@@ -81,13 +82,15 @@ dhcp_request(struct vionet_dev *dev, char *buf, size_t buflen, char **obuf)
resp.hlen = req.hlen;
resp.xid = req.xid;
- if ((in.s_addr = vm_priv_addr(dev->vm_vmid, dev->idx, 1)) == 0)
+ if ((in.s_addr = vm_priv_addr(&env->vmd_cfg.cfg_localprefix,
+ dev->vm_vmid, dev->idx, 1)) == 0)
return (-1);
memcpy(&resp.yiaddr, &in, sizeof(in));
memcpy(&ss2sin(&pc.pc_dst)->sin_addr, &in, sizeof(in));
ss2sin(&pc.pc_dst)->sin_port = htons(CLIENT_PORT);
- if ((in.s_addr = vm_priv_addr(dev->vm_vmid, dev->idx, 0)) == 0)
+ if ((in.s_addr = vm_priv_addr(&env->vmd_cfg.cfg_localprefix,
+ dev->vm_vmid, dev->idx, 0)) == 0)
return (-1);
memcpy(&resp.siaddr, &in, sizeof(in));
memcpy(&ss2sin(&pc.pc_src)->sin_addr, &in, sizeof(in));