diff options
author | reyk <reyk@openbsd.org> | 2017-04-21 07:03:26 +0000 |
---|---|---|
committer | reyk <reyk@openbsd.org> | 2017-04-21 07:03:26 +0000 |
commit | c48cfcf432506f3d98df7bc4b9bc82cf96064fb3 (patch) | |
tree | f73c80ed6fe91a404a78a365859bc73bc2fd01ed /usr.sbin/vmd/dhcp.c | |
parent | vmd(8) pci emulation fix required for upcoming option rom support. (diff) | |
download | wireguard-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.c | 9 |
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)); |