dhcp service example: cater for servers hot giving subnet and/or router
authorDenys Vlasenko <vda.linux@googlemail.com>
Tue, 5 Feb 2019 16:48:24 +0000 (17:48 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Tue, 5 Feb 2019 16:48:24 +0000 (17:48 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
examples/var_service/dhcp_if/convert2ipconf

index 62a288ebf6355955251e5ff53c679faafa750392..038b1f7f1cfb9c95e53f89cdecdb8263e6888f7f 100755 (executable)
@@ -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'"