aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Korsgaard <jacmet@sunsite.dk>2011-10-19 02:35:54 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2011-10-19 02:35:54 +0200
commitdd82443b921111d7f5570fddc2eaeb634f1f971d (patch)
treeccb82c75ff7dfbc4c1a15dc12bb0dc726358d92b
parentce8c4cf37fcb41b5775bbda9d90a1dadd03e4ced (diff)
downloadbusybox-w32-dd82443b921111d7f5570fddc2eaeb634f1f971d.tar.gz
busybox-w32-dd82443b921111d7f5570fddc2eaeb634f1f971d.tar.bz2
busybox-w32-dd82443b921111d7f5570fddc2eaeb634f1f971d.zip
ifupdown: support post-up / pre-down hooks
function old new delta set_environ 330 371 +41 ifupdown_main 2156 2194 +38 iface_up 97 113 +16 iface_down 97 113 +16 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 4/0 up/down: 111/0) Total: 111 bytes Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/ifupdown.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/networking/ifupdown.c b/networking/ifupdown.c
index 382033038..abc6b5813 100644
--- a/networking/ifupdown.c
+++ b/networking/ifupdown.c
@@ -891,6 +891,8 @@ static struct interfaces_file_t *read_interfaces(const char *filename)
891 if (strcmp(first_word, "up") != 0 891 if (strcmp(first_word, "up") != 0
892 && strcmp(first_word, "down") != 0 892 && strcmp(first_word, "down") != 0
893 && strcmp(first_word, "pre-up") != 0 893 && strcmp(first_word, "pre-up") != 0
894 && strcmp(first_word, "pre-down") != 0
895 && strcmp(first_word, "post-up") != 0
894 && strcmp(first_word, "post-down") != 0 896 && strcmp(first_word, "post-down") != 0
895 ) { 897 ) {
896 int i; 898 int i;
@@ -987,6 +989,8 @@ static void set_environ(struct interface_defn_t *iface, const char *mode)
987 if (strcmp(iface->option[i].name, "up") == 0 989 if (strcmp(iface->option[i].name, "up") == 0
988 || strcmp(iface->option[i].name, "down") == 0 990 || strcmp(iface->option[i].name, "down") == 0
989 || strcmp(iface->option[i].name, "pre-up") == 0 991 || strcmp(iface->option[i].name, "pre-up") == 0
992 || strcmp(iface->option[i].name, "pre-down") == 0
993 || strcmp(iface->option[i].name, "post-up") == 0
990 || strcmp(iface->option[i].name, "post-down") == 0 994 || strcmp(iface->option[i].name, "post-down") == 0
991 ) { 995 ) {
992 continue; 996 continue;
@@ -1056,6 +1060,7 @@ static int iface_up(struct interface_defn_t *iface)
1056 if (!execute_all(iface, "pre-up")) return 0; 1060 if (!execute_all(iface, "pre-up")) return 0;
1057 if (!iface->method->up(iface, doit)) return 0; 1061 if (!iface->method->up(iface, doit)) return 0;
1058 if (!execute_all(iface, "up")) return 0; 1062 if (!execute_all(iface, "up")) return 0;
1063 if (!execute_all(iface, "post-up")) return 0;
1059 return 1; 1064 return 1;
1060} 1065}
1061 1066
@@ -1063,6 +1068,7 @@ static int iface_down(struct interface_defn_t *iface)
1063{ 1068{
1064 if (!iface->method->down(iface,check)) return -1; 1069 if (!iface->method->down(iface,check)) return -1;
1065 set_environ(iface, "stop"); 1070 set_environ(iface, "stop");
1071 if (!execute_all(iface, "pre-down")) return 0;
1066 if (!execute_all(iface, "down")) return 0; 1072 if (!execute_all(iface, "down")) return 0;
1067 if (!iface->method->down(iface, doit)) return 0; 1073 if (!iface->method->down(iface, doit)) return 0;
1068 if (!execute_all(iface, "post-down")) return 0; 1074 if (!execute_all(iface, "post-down")) return 0;