summaryrefslogtreecommitdiffstats
path: root/src/lib/dhcp/dhclient
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/dhcp/dhclient')
-rw-r--r--src/lib/dhcp/dhclient27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/lib/dhcp/dhclient b/src/lib/dhcp/dhclient
new file mode 100644
index 0000000..42b5f14
--- /dev/null
+++ b/src/lib/dhcp/dhclient
@@ -0,0 +1,27 @@
+type dhclient &> /dev/null || return
+
+dhclient_start() {
+ local options pidfile="/run/dhclient$1-$Interface.pid"
+ case $1 in
+ 4) options=$DhclientOptions;;
+ 6) options=$DhclientOptions6;;
+ *) return 1;;
+ esac
+ [[ $2 == "noaddr" ]] && options+=" -S"
+ rm -f "$pidfile"
+ if ! do_debug dhclient -$1 -q -e "TIMEOUT=${TimeoutDHCP:-30}" -pf "$pidfile" $options "$Interface"; then
+ report_error "DHCP IPv$1 lease attempt failed on interface '$Interface'"
+ return 1
+ fi
+}
+
+dhclient_stop() {
+ local stop="-x" pidfile="/run/dhclient$1-$Interface.pid"
+ if [[ -f $pidfile ]]; then
+ is_yes "${DHCPReleaseOnStop:-no}" && stop="-r"
+ do_debug dhclient -$1 -q $stop "$Interface" -pf "$pidfile" > /dev/null
+ fi
+}
+
+
+# vim: ft=sh ts=4 et sw=4: