From 95829546d0ccbb77a3b8c1875afed2dd345f9a89 Mon Sep 17 00:00:00 2001 From: Philip Prindeville Date: Mon, 17 Jul 2023 15:27:09 -0600 Subject: [PATCH] isc-dhcp: fix handling multiple instances of 'routes' list Signed-off-by: Philip Prindeville --- net/isc-dhcp/Makefile | 2 +- net/isc-dhcp/files/dhcpd.init | 37 ++++++++++++++++++----------------- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/net/isc-dhcp/Makefile b/net/isc-dhcp/Makefile index 906cae6737..8d3be4c91c 100644 --- a/net/isc-dhcp/Makefile +++ b/net/isc-dhcp/Makefile @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=isc-dhcp UPSTREAM_NAME:=dhcp PKG_VERSION:=4.4.3-P1 -PKG_RELEASE:=4 +PKG_RELEASE:=5 PKG_LICENSE:=BSD-3-Clause PKG_LICENSE_FILES:=LICENSE diff --git a/net/isc-dhcp/files/dhcpd.init b/net/isc-dhcp/files/dhcpd.init index fd036c6ea4..309d3ec87a 100755 --- a/net/isc-dhcp/files/dhcpd.init +++ b/net/isc-dhcp/files/dhcpd.init @@ -138,29 +138,20 @@ create_empty_zone() { } append_routes() { - local tuple tuples="$1" - local string= + local tuple tuple="$(trim "$1")" + local network prefix router save octets compacted - local IFS=',' - for tuple in $tuples; do - local network prefix router save octets compacted + save="${tuple% *}" + router="$(trim "${tuple#${save} }")" - tuple="$(trim "$tuple")" + network="$(trim "${save%/[0-9]*}")" - save="${tuple% *}" - router="$(trim "${tuple#${save} }")" + prefix="$(trim "${save##${network}/}")" - network="$(trim "${save%/[0-9]*}")" + octets=$((($prefix + 7) / 8)) + compacted="$(echo "$network" | cut -d. -f1-$octets)" - prefix="$(trim "${save##${network}/}")" - - octets=$((($prefix + 7) / 8)) - compacted="$(echo "$network" | cut -d. -f1-$octets)" - - string="${string:+, }$(explode "$prefix${compacted:+.$compacted}.$router")" - done - - echo " option classless-ipv4-route $string;" + routes="$routes${routes:+, }$(explode "$prefix${compacted:+.$compacted}.$router")" } append_dhcp_options() { @@ -308,6 +299,8 @@ static_host_add() { extra_options="$extra_options${extra_options:+ }0f" ;; fqdn) extra_options="$extra_options${extra_options:+ }51" ;; + routes) + extra_options="$extra_options${extra_options:+ }79" ;; *) echo "unknown option: $option" >&2 ;; esac @@ -344,7 +337,11 @@ static_host_add() { if [ -n "$gateway" ] ; then echo " option routers $gateway;" fi + + local routes= config_list_foreach "$cfg" "routes" append_routes + [ -n "$routes" ] && echo " option classless-ipv4-route $routes;" + config_list_foreach "$cfg" "dhcp_option" append_dhcp_options if [ -n "$extra_options" ]; then echo -e " if exists dhcp-parameter-request-list {\n option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list, $extra_options);\n }" @@ -391,7 +388,11 @@ gen_dhcp_subnet() { echo " option routers $gateway;" fi echo " option domain-name-servers $DNS;" + + local routes= config_list_foreach "$cfg" "routes" append_routes + [ -n "$routes" ] && echo " option classless-ipv4-route $routes;" + config_list_foreach "$cfg" "dhcp_option" append_dhcp_options echo "}" } -- 2.30.2