[git commit] dhcp service example: cater for servers hot giving subnet and/or router

Denys Vlasenko vda.linux at googlemail.com
Tue Feb 5 16:48:24 UTC 2019


commit: https://git.busybox.net/busybox/commit/?id=2feaba1d8dc2893d9f1064673e500312eaa70777
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 examples/var_service/dhcp_if/convert2ipconf | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/examples/var_service/dhcp_if/convert2ipconf b/examples/var_service/dhcp_if/convert2ipconf
index 62a288ebf..038b1f7f1 100755
--- a/examples/var_service/dhcp_if/convert2ipconf
+++ b/examples/var_service/dhcp_if/convert2ipconf
@@ -26,6 +26,25 @@ exec 2>&1
 test "$interface" || exit 1
 test "$ip" || exit 1
 
+# some servers do not return subnet option.
+# guess it for standard private networks.
+if ! test "$mask"; then
+	if test "$ip" != "${ip#192.168.}"; then
+		mask=16
+	elif test "$ip" != "${ip#172.16.}"; then
+		mask=12
+		# repeat for each in 172.17. - 172.31. range?
+	elif test "$ip" != "${ip#10.}"; then
+		mask=8
+	fi
+fi
+
+# some servers do not return router option.
+# assume DHCP server is the router.
+if ! test "$router"; then
+	test "$serverid" && router="$serverid"
+fi
+
 {
 echo "let cfg=cfg+1"
 test "$interface"	&& echo "if[\$cfg]='$interface'"


More information about the busybox-cvs mailing list