summaryrefslogtreecommitdiffstats
path: root/src/lib/dhcp/dhcpcd
diff options
context:
space:
mode:
authorJouke Witteveen <j.witteveen@gmail.com>2014-02-25 14:22:22 +0100
committerJouke Witteveen <j.witteveen@gmail.com>2014-02-27 13:48:49 +0100
commit7f497011aee03f141a5bd055222ca337383f43a3 (patch)
tree3e790e15f1e007de95b95e18a71ec020dbc615eb /src/lib/dhcp/dhcpcd
parent03afcdce237b2dc52a6c1fea72b715cf6c34bf05 (diff)
downloadnetctl-7f497011aee03f141a5bd055222ca337383f43a3.tar.gz
netctl-7f497011aee03f141a5bd055222ca337383f43a3.tar.xz
Factor out DHCP client support
Support for additional DHCP clients is now easy to add.
Diffstat (limited to 'src/lib/dhcp/dhcpcd')
-rw-r--r--src/lib/dhcp/dhcpcd28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/lib/dhcp/dhcpcd b/src/lib/dhcp/dhcpcd
new file mode 100644
index 0000000..42f33ef
--- /dev/null
+++ b/src/lib/dhcp/dhcpcd
@@ -0,0 +1,28 @@
+type dhcpcd &> /dev/null || return
+
+dhcpcd_start() {
+ if [[ $1 != "4" ]]; then
+ report_error "Using 'dhcpcd' for IPv6 is currently not possible in netctl"
+ return 1
+ fi
+ rm -f "/run/dhcpcd-$Interface".{pid,cache}
+ # If using own dns, tell dhcpcd to NOT replace resolv.conf
+ [[ $DNS ]] && DhcpcdOptions+=" -C resolv.conf"
+ do_debug dhcpcd -4qL -t "${TimeoutDHCP:-30}" $DhcpcdOptions "$Interface" |& report_debug "$(cat)"
+ # The first array value of PIPESTATUS is the exit status of dhcpcd
+ if (( PIPESTATUS != 0 )); then
+ report_error "DHCP IP lease attempt failed on interface '$Interface'"
+ return 1
+ fi
+}
+
+dhcpcd_stop() {
+ local stop="-x"
+ if [[ -f "/run/dhcpcd-$Interface.pid" ]]; then
+ is_yes "${DHCPReleaseOnStop:-no}" && stop="-k"
+ do_debug dhcpcd -q $stop "$Interface" > /dev/null
+ fi
+}
+
+
+# vim: ft=sh ts=4 et sw=4: