From dcd645ef904d26d83a5cbf976970e57beb4c84ad Mon Sep 17 00:00:00 2001 From: Juan RP Date: Fri, 28 Nov 2014 12:41:11 +0100 Subject: [PATCH] dhcpcd: send STOPPED reason to hooks if iface is not up and down. - Process STOPPED reason in the wpa_supplicant hook to stop it when the interface goes down. This has been suggested by Roy Marples (dhcpcd author) in private email. a final review this seems to DTRT. --- srcpkgs/dhcpcd/patches/stop-wpa-on-term.patch | 21 --------- srcpkgs/dhcpcd/patches/wpa-hook-stop.patch | 46 +++++++++++++++++++ srcpkgs/dhcpcd/template | 2 +- 3 files changed, 47 insertions(+), 22 deletions(-) delete mode 100644 srcpkgs/dhcpcd/patches/stop-wpa-on-term.patch create mode 100644 srcpkgs/dhcpcd/patches/wpa-hook-stop.patch diff --git a/srcpkgs/dhcpcd/patches/stop-wpa-on-term.patch b/srcpkgs/dhcpcd/patches/stop-wpa-on-term.patch deleted file mode 100644 index 2ffd625d127..00000000000 --- a/srcpkgs/dhcpcd/patches/stop-wpa-on-term.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- dhcpcd-hooks/10-wpa_supplicant -+++ dhcpcd-hooks/10-wpa_supplicant -@@ -114,6 +114,6 @@ then - case "$reason" in - PREINIT) wpa_supplicant_start;; - RECONFIGURE) wpa_supplicant_reconfigure;; -- DEPARTED) wpa_supplicant_stop;; -+ DEPARTED|STOP) wpa_supplicant_stop;; - esac - fi -index 5293f9713cbe..8b19ffbcbb1b 100644 ---- dhcpcd.c -+++ dhcpcd.c -@@ -1049,6 +1049,7 @@ handle_signal1(void *arg) - break; - case SIGTERM: - syslog(LOG_INFO, sigmsg, "TERM", (int)si->pid, "stopping"); -+ do_release = 1; - break; - case SIGALRM: - syslog(LOG_INFO, sigmsg, "ALRM", (int)si->pid, "releasing"); diff --git a/srcpkgs/dhcpcd/patches/wpa-hook-stop.patch b/srcpkgs/dhcpcd/patches/wpa-hook-stop.patch new file mode 100644 index 00000000000..c5c55b2a32a --- /dev/null +++ b/srcpkgs/dhcpcd/patches/wpa-hook-stop.patch @@ -0,0 +1,46 @@ +--- dhcpcd-run-hooks.in.orig 2014-11-26 16:34:35.000000000 +0100 ++++ dhcpcd-run-hooks.in 2014-11-28 11:53:13.712853795 +0100 +@@ -2,13 +2,20 @@ + # dhcpcd client configuration script + + # Handy variables and functions for our hooks to use ++: ${if_up:=false} ++: ${if_down:=false} ++: ${syslog_debug:=false} ++ + case "$reason" in + ROUTERADVERT) + ifsuffix=":ra";; + INFORM6|BOUND6|RENEW6|REBIND6|REBOOT6|EXPIRE6|RELEASE6|STOP6) + ifsuffix=":dhcp6";; +- STOPPED) # This reason should never be processed +- exit 0;; ++ STOPPED) # Only process this reason if iface is down. ++ if [ "$if_up" != "false" -o "$if_down" = "false" ]; then ++ exit 0 ++ fi ++ ;; + *) + ifsuffix=;; + esac +@@ -22,10 +29,6 @@ signature_end="$signature_base_end $from + state_dir=@RUNDIR@/dhcpcd + _detected_init=false + +-: ${if_up:=false} +-: ${if_down:=false} +-: ${syslog_debug:=false} +- + # Ensure that all arguments are unique + uniqify() + { +--- dhcpcd-hooks/10-wpa_supplicant.orig 2014-11-26 16:34:35.000000000 +0100 ++++ dhcpcd-hooks/10-wpa_supplicant 2014-11-28 11:53:48.929217243 +0100 +@@ -114,6 +114,6 @@ then + case "$reason" in + PREINIT) wpa_supplicant_start;; + RECONFIGURE) wpa_supplicant_reconfigure;; +- DEPARTED) wpa_supplicant_stop;; ++ DEPARTED|STOPPED) wpa_supplicant_stop;; + esac + fi diff --git a/srcpkgs/dhcpcd/template b/srcpkgs/dhcpcd/template index debbc8cae5c..b8d63c02a77 100644 --- a/srcpkgs/dhcpcd/template +++ b/srcpkgs/dhcpcd/template @@ -1,7 +1,7 @@ # Template file for 'dhcpcd' pkgname=dhcpcd version=6.6.4 -revision=2 +revision=3 lib32disabled=yes build_options="systemd" build_style=configure