summaryrefslogtreecommitdiff
path: root/sbin/dhcp6leased
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/dhcp6leased')
-rw-r--r--sbin/dhcp6leased/engine.c12
-rw-r--r--sbin/dhcp6leased/frontend.c6
-rw-r--r--sbin/dhcp6leased/parse.y6
3 files changed, 12 insertions, 12 deletions
diff --git a/sbin/dhcp6leased/engine.c b/sbin/dhcp6leased/engine.c
index 0e059c19b00..1db15432655 100644
--- a/sbin/dhcp6leased/engine.c
+++ b/sbin/dhcp6leased/engine.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: engine.c,v 1.7 2024/06/03 15:53:26 deraadt Exp $ */
+/* $OpenBSD: engine.c,v 1.8 2024/06/04 15:48:47 florian Exp $ */
/*
* Copyright (c) 2017, 2021, 2024 Florian Obser <florian@openbsd.org>
@@ -484,7 +484,7 @@ engine_dispatch_main(int fd, short event, void *bula)
SIMPLEQ_INIT(&iface_ia_conf->iface_pd_list);
SIMPLEQ_INSERT_TAIL(&iface_conf->iface_ia_list,
iface_ia_conf, entry);
- iface_conf->ia_count++;
+ iface_ia_conf->id = iface_conf->ia_count++;
if (iface_conf->ia_count > MAX_IA)
fatalx("Too many prefix delegation requests.");
break;
@@ -787,11 +787,11 @@ parse_dhcp(struct dhcp6leased_iface *iface, struct imsg_dhcp *dhcp)
log_debug("%s: IA_PD, IAID: %08x, T1: %u, T2: %u",
__func__, ntohl(iapd.iaid), ntohl(iapd.t1),
ntohl(iapd.t2));
- if (ntohl(iapd.iaid) <= iface_conf->ia_count)
+ if (ntohl(iapd.iaid) < iface_conf->ia_count)
parse_ia_pd_options(p +
sizeof(struct dhcp_iapd), opt_hdr.len -
sizeof(struct dhcp_iapd),
- &pds[ntohl(iapd.iaid) -1]);
+ &pds[ntohl(iapd.iaid)]);
break;
case DHO_RAPID_COMMIT:
if (opt_hdr.len != 0) {
@@ -818,7 +818,7 @@ parse_dhcp(struct dhcp6leased_iface *iface, struct imsg_dhcp *dhcp)
SIMPLEQ_FOREACH(ia_conf, &iface_conf->iface_ia_list, entry) {
- struct prefix *pd = &pds[ia_conf->id - 1];
+ struct prefix *pd = &pds[ia_conf->id];
if (pd->prefix_len == 0) {
log_warnx("%s: no IA for IAID %d found", __func__,
@@ -1280,7 +1280,7 @@ configure_interfaces(struct dhcp6leased_iface *iface)
}
SIMPLEQ_FOREACH(ia_conf, &iface_conf->iface_ia_list, entry) {
- struct prefix *pd = &iface->pds[ia_conf->id - 1];
+ struct prefix *pd = &iface->pds[ia_conf->id];
SIMPLEQ_FOREACH(pd_conf, &ia_conf->iface_pd_list, entry) {
send_configure_interface(pd_conf, pd);
diff --git a/sbin/dhcp6leased/frontend.c b/sbin/dhcp6leased/frontend.c
index d683a68239c..6dc1abe5203 100644
--- a/sbin/dhcp6leased/frontend.c
+++ b/sbin/dhcp6leased/frontend.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: frontend.c,v 1.8 2024/06/03 15:53:26 deraadt Exp $ */
+/* $OpenBSD: frontend.c,v 1.9 2024/06/04 15:48:47 florian Exp $ */
/*
* Copyright (c) 2017, 2021, 2024 Florian Obser <florian@openbsd.org>
@@ -362,7 +362,7 @@ frontend_dispatch_main(int fd, short event, void *bula)
SIMPLEQ_INIT(&iface_ia_conf->iface_pd_list);
SIMPLEQ_INSERT_TAIL(&iface_conf->iface_ia_list,
iface_ia_conf, entry);
- iface_conf->ia_count++;
+ iface_ia_conf->id = iface_conf->ia_count++;
if (iface_conf->ia_count > MAX_IA)
fatalx("Too many prefix delegation requests.");
break;
@@ -873,7 +873,7 @@ build_packet(uint8_t message_type, struct iface *iface, char *if_name)
case DHCPREQUEST:
case DHCPRENEW:
case DHCPREBIND:
- pd = &iface->pds[ia_conf->id - 1];
+ pd = &iface->pds[ia_conf->id];
iaprefix.prefix_len = pd->prefix_len;
memcpy(&iaprefix.prefix, &pd->prefix,
sizeof(struct in6_addr));
diff --git a/sbin/dhcp6leased/parse.y b/sbin/dhcp6leased/parse.y
index 0e8a50c7d28..940ec15d1f8 100644
--- a/sbin/dhcp6leased/parse.y
+++ b/sbin/dhcp6leased/parse.y
@@ -1,4 +1,4 @@
-/* $OpenBSD: parse.y,v 1.6 2024/06/03 15:53:26 deraadt Exp $ */
+/* $OpenBSD: parse.y,v 1.7 2024/06/04 15:48:47 florian Exp $ */
/*
* Copyright (c) 2018, 2024 Florian Obser <florian@openbsd.org>
@@ -176,8 +176,8 @@ ia_pd : REQUEST PREFIX DELEGATION ON STRING FOR {
iface_ia_conf = calloc(1, sizeof(*iface_ia_conf));
if (iface_ia_conf == NULL)
err(1, "%s: calloc", __func__);
- iface_ia_conf->id = ++iface_conf->ia_count;
- if (iface_ia_conf->id > MAX_IA) {
+ iface_ia_conf->id = iface_conf->ia_count++;
+ if (iface_conf->ia_count > MAX_IA) {
yyerror("Too many prefix delegation requests");
YYERROR;
}