From 5a1f2c577db58ea47727f1b6900c0be25e6db205 Mon Sep 17 00:00:00 2001 From: Simon Kelley Date: Tue, 3 Dec 2024 21:22:21 +0000 Subject: [PATCH] Set sa_len field in DHCP relay code. Ommision broke DHCP relay on *BSD. --- CHANGELOG | 5 ++++- src/dhcp.c | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 2f2bbb8..7395b29 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -50,7 +50,10 @@ version 2.91 not legal in IDNA2008. Stop using the :: compression method, so 1234:: becomes 1234-0000-0000-0000-0000-0000-0000-0000.example.com - + + Fix broken dhcp-relay on *BSD. Thanks to Harold for finding + this problem. + version 2.90 Fix reversion in --rev-server introduced in 2.88 which diff --git a/src/dhcp.c b/src/dhcp.c index 009c2a0..8606e71 100644 --- a/src/dhcp.c +++ b/src/dhcp.c @@ -1125,6 +1125,9 @@ static int relay_upstream4(int iface_index, struct dhcp_packet *mess, size_t sz) to.sa.sa_family = AF_INET; to.in.sin_addr = relay->server.addr4; to.in.sin_port = htons(relay->port); +#ifdef HAVE_SOCKADDR_SA_LEN + to.in.sin_len = sizeof(struct sockaddr_in); +#endif /* Broadcasting to server. */ if (relay->server.addr4.s_addr == 0)