diff options
author | 2018-07-15 09:28:21 +0000 | |
---|---|---|
committer | 2018-07-15 09:28:21 +0000 | |
commit | 4c40b7e8ed0a313f15b06f9a298049cf3842ca3b (patch) | |
tree | fc09616e382c96412e85d8d9bd7db726f6dd0aa3 /usr.sbin/rad/engine.c | |
parent | mark up managed / other configuration (diff) | |
download | wireguard-openbsd-4c40b7e8ed0a313f15b06f9a298049cf3842ca3b.tar.xz wireguard-openbsd-4c40b7e8ed0a313f15b06f9a298049cf3842ca3b.zip |
Implement RFC 8106: IPv6 Router Advertisement Options for DNS
Configuration.
Diffstat (limited to 'usr.sbin/rad/engine.c')
-rw-r--r-- | usr.sbin/rad/engine.c | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/usr.sbin/rad/engine.c b/usr.sbin/rad/engine.c index 9ecb93da44b..5d186439dd8 100644 --- a/usr.sbin/rad/engine.c +++ b/usr.sbin/rad/engine.c @@ -1,4 +1,4 @@ -/* $OpenBSD: engine.c,v 1.6 2018/07/11 19:05:25 florian Exp $ */ +/* $OpenBSD: engine.c,v 1.7 2018/07/15 09:28:21 florian Exp $ */ /* * Copyright (c) 2018 Florian Obser <florian@openbsd.org> @@ -43,9 +43,6 @@ #include "rad.h" #include "engine.h" -#define MAX_RTR_ADV_INTERVAL 600 -#define MIN_RTR_ADV_INTERVAL 200 - struct engine_iface { TAILQ_ENTRY(engine_iface) entry; struct event timer; @@ -267,6 +264,8 @@ engine_dispatch_main(int fd, short event, void *bula) struct imsgev *iev = bula; struct imsgbuf *ibuf; struct ra_prefix_conf *ra_prefix_conf; + struct ra_rdnss_conf *ra_rdnss_conf; + struct ra_dnssl_conf *ra_dnssl_conf; ssize_t n; int shut = 0; @@ -335,6 +334,8 @@ engine_dispatch_main(int fd, short event, void *bula) sizeof(struct ra_iface_conf)); ra_iface_conf->autoprefix = NULL; SIMPLEQ_INIT(&ra_iface_conf->ra_prefix_list); + SIMPLEQ_INIT(&ra_iface_conf->ra_rdnss_list); + SIMPLEQ_INIT(&ra_iface_conf->ra_dnssl_list); SIMPLEQ_INSERT_TAIL(&nconf->ra_iface_list, ra_iface_conf, entry); break; @@ -354,6 +355,27 @@ engine_dispatch_main(int fd, short event, void *bula) SIMPLEQ_INSERT_TAIL(&ra_iface_conf->ra_prefix_list, ra_prefix_conf, entry); break; + case IMSG_RECONF_RA_RDNS_LIFETIME: + ra_iface_conf->rdns_lifetime = *((uint32_t *)imsg.data); + break; + case IMSG_RECONF_RA_RDNSS: + if ((ra_rdnss_conf = malloc(sizeof(struct + ra_rdnss_conf))) == NULL) + fatal(NULL); + memcpy(ra_rdnss_conf, imsg.data, sizeof(struct + ra_rdnss_conf)); + SIMPLEQ_INSERT_TAIL(&ra_iface_conf->ra_rdnss_list, + ra_rdnss_conf, entry); + break; + case IMSG_RECONF_RA_DNSSL: + if ((ra_dnssl_conf = malloc(sizeof(struct + ra_dnssl_conf))) == NULL) + fatal(NULL); + memcpy(ra_dnssl_conf, imsg.data, sizeof(struct + ra_dnssl_conf)); + SIMPLEQ_INSERT_TAIL(&ra_iface_conf->ra_dnssl_list, + ra_dnssl_conf, entry); + break; case IMSG_RECONF_END: merge_config(engine_conf, nconf); nconf = NULL; |