[PATCH] ifupdown: support post-up / pre-down hooks

Peter Korsgaard jacmet at sunsite.dk
Thu Oct 6 11:32:23 UTC 2011


The "big" ifupdown supports these, so handle them as well for compatibility.

Signed-off-by: Peter Korsgaard <jacmet at sunsite.dk>
---
 networking/ifupdown.c |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 3820330..abc6b58 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -891,6 +891,8 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
 				if (strcmp(first_word, "up") != 0
 				 && strcmp(first_word, "down") != 0
 				 && strcmp(first_word, "pre-up") != 0
+				 && strcmp(first_word, "pre-down") != 0
+				 && strcmp(first_word, "post-up") != 0
 				 && strcmp(first_word, "post-down") != 0
 				) {
 					int i;
@@ -987,6 +989,8 @@ static void set_environ(struct interface_defn_t *iface, const char *mode)
 		if (strcmp(iface->option[i].name, "up") == 0
 		 || strcmp(iface->option[i].name, "down") == 0
 		 || strcmp(iface->option[i].name, "pre-up") == 0
+		 || strcmp(iface->option[i].name, "pre-down") == 0
+		 || strcmp(iface->option[i].name, "post-up") == 0
 		 || strcmp(iface->option[i].name, "post-down") == 0
 		) {
 			continue;
@@ -1056,6 +1060,7 @@ static int iface_up(struct interface_defn_t *iface)
 	if (!execute_all(iface, "pre-up")) return 0;
 	if (!iface->method->up(iface, doit)) return 0;
 	if (!execute_all(iface, "up")) return 0;
+	if (!execute_all(iface, "post-up")) return 0;
 	return 1;
 }
 
@@ -1063,6 +1068,7 @@ static int iface_down(struct interface_defn_t *iface)
 {
 	if (!iface->method->down(iface,check)) return -1;
 	set_environ(iface, "stop");
+	if (!execute_all(iface, "pre-down")) return 0;
 	if (!execute_all(iface, "down")) return 0;
 	if (!iface->method->down(iface, doit)) return 0;
 	if (!execute_all(iface, "post-down")) return 0;
-- 
1.7.6.3



More information about the busybox mailing list