aboutsummaryrefslogtreecommitdiff
path: root/net/isc-dhcp/files/dhcpd.init
diff options
context:
space:
mode:
authorPhilip Prindeville <philipp@redfish-solutions.com>2020-08-17 20:07:41 -0600
committerPhilip Prindeville <philipp@redfish-solutions.com>2020-08-28 19:30:42 -0600
commite8fd996c7253b33da5be99e8a05d793b97899fe2 (patch)
tree41ebfd4e390336c274c163959d8d21b660f56d8b /net/isc-dhcp/files/dhcpd.init
parent41d9951575fe890fb91f1e3defa1dd0011dc3815 (diff)
isc-dhcp: add support for RFC-3442 classless IPv4 routes
Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
Diffstat (limited to 'net/isc-dhcp/files/dhcpd.init')
-rwxr-xr-x[-rw-r--r--]net/isc-dhcp/files/dhcpd.init33
1 files changed, 33 insertions, 0 deletions
diff --git a/net/isc-dhcp/files/dhcpd.init b/net/isc-dhcp/files/dhcpd.init
index 33e45ad88..2a1111697 100644..100755
--- a/net/isc-dhcp/files/dhcpd.init
+++ b/net/isc-dhcp/files/dhcpd.init
@@ -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() {
local tuple="$1"
@@ -178,6 +208,7 @@ gen_dhcp_subnet() {
fi
echo " option routers $gateway;"
echo " option domain-name-servers $DNS;"
+ config_list_foreach "$cfg" "routes" append_routes
config_list_foreach "$cfg" "dhcp_option" append_dhcp_options
echo "}"
}
@@ -264,6 +295,8 @@ general_config() {
[ -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
echo "# This file is generated by the DHCPD service" > /tmp/resolv.conf
[ -n "$domain" ] && echo "domain $domain" >> /tmp/resolv.conf