Browse Source

isc-dhcp: add support for RFC-3442 classless IPv4 routes

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
lilik-openwrt-22.03
Philip Prindeville 4 years ago
parent
commit
e8fd996c72
2 changed files with 34 additions and 1 deletions
  1. +1
    -1
      net/isc-dhcp/Makefile
  2. +33
    -0
      net/isc-dhcp/files/dhcpd.init

+ 1
- 1
net/isc-dhcp/Makefile View File

@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=isc-dhcp PKG_NAME:=isc-dhcp
UPSTREAM_NAME:=dhcp UPSTREAM_NAME:=dhcp
PKG_VERSION:=4.4.1 PKG_VERSION:=4.4.1
PKG_RELEASE:=7
PKG_RELEASE:=8
PKG_LICENSE:=BSD-3-Clause PKG_LICENSE:=BSD-3-Clause
PKG_LICENSE_FILES:=LICENSE PKG_LICENSE_FILES:=LICENSE


+ 33
- 0
net/isc-dhcp/files/dhcpd.init View File

@ -131,6 +131,36 @@ typeof() {
' '
} }
explode() {
local arg="$1"
echo "$arg" | sed -e 's/\./, /g'
}
append_routes() {
local tuple tuples="$1"
local string=
local IFS=','
for tuple in $tuples; do
local network prefix router save octets compacted
save="${tuple% *}"
router="${tuple#${save} }"
network="${save%/[0-9]*}"
prefix="${save##${network}}"
prefix="${prefix:1}"
octets=$((($prefix + 7) / 8))
compacted="$(echo "$network" | cut -d. -f1-$octets)"
string="${string:+, }$(explode "$prefix.$compacted.$router")"
done
echo " option classless-ipv4-route $string;"
}
append_dhcp_options() { append_dhcp_options() {
local tuple="$1" local tuple="$1"
@ -178,6 +208,7 @@ gen_dhcp_subnet() {
fi fi
echo " option routers $gateway;" echo " option routers $gateway;"
echo " option domain-name-servers $DNS;" echo " option domain-name-servers $DNS;"
config_list_foreach "$cfg" "routes" append_routes
config_list_foreach "$cfg" "dhcp_option" append_dhcp_options config_list_foreach "$cfg" "dhcp_option" append_dhcp_options
echo "}" echo "}"
} }
@ -264,6 +295,8 @@ general_config() {
[ -n "$domain" ] && echo "option domain-name \"$domain\";" [ -n "$domain" ] && echo "option domain-name \"$domain\";"
echo -e "\n# additional codes\noption classless-ipv4-route code 121 = array of { unsigned integer 8 };\n"
rm -f /tmp/resolv.conf rm -f /tmp/resolv.conf
echo "# This file is generated by the DHCPD service" > /tmp/resolv.conf echo "# This file is generated by the DHCPD service" > /tmp/resolv.conf
[ -n "$domain" ] && echo "domain $domain" >> /tmp/resolv.conf [ -n "$domain" ] && echo "domain $domain" >> /tmp/resolv.conf


Loading…
Cancel
Save