root/trunk/freewrt/package/busybox/patches/960-ifupdown-env.patch
| Revision 3450, 2.7 kB (checked in by spaetzle, 5 years ago) |
|---|
-
old/networking/ifupdown.c
old new 919 919 { 920 920 char **environend; 921 921 int i; 922 const int n_env_entries = iface->n_options + 5; 922 int j = 0; /* iterator pre-up */ 923 int k = 0; /* iterator up */ 924 int l = 0; /* iterator down */ 925 int m = 0; /* iterator post-down */ 926 int t_suffix; /* pre-post-up-down suffix */ 927 const int n_env_entries = iface->n_options + 6; 923 928 char **ppch; 929 char *ifupdown_env; 930 char t_var_name[16]; 924 931 925 932 if (my_environ != NULL) { 926 933 for (ppch = my_environ; *ppch; ppch++) { … … 933 940 environend = my_environ; 934 941 935 942 for (i = 0; i < iface->n_options; i++) { 936 if (strcmp(iface->option[i].name, "up") == 0 937 || strcmp(iface->option[i].name, "down") == 0 938 || strcmp(iface->option[i].name, "pre-up") == 0 939 || strcmp(iface->option[i].name, "post-down") == 0) { 943 if (strcmp(iface->option[i].name, "pre-up") == 0) 944 t_suffix = j++; 945 else if (strcmp(iface->option[i].name, "up") == 0) 946 t_suffix = k++; 947 else if (strcmp(iface->option[i].name, "down") == 0) 948 t_suffix = l++; 949 else if (strcmp(iface->option[i].name, "post-down") == 0) 950 t_suffix = m++; 951 else { 952 *(environend++) = setlocalenv("IF_%s=%s", iface->option[i].name, iface->option[i].value); 940 953 continue; 941 954 } 942 *(environend++) = setlocalenv("IF_%s=%s", iface->option[i].name, iface->option[i].value); 955 956 snprintf(t_var_name, sizeof (t_var_name), "IF_%%s_%i=%%s", t_suffix); 957 *(environend++) = setlocalenv(t_var_name, iface->option[i].name, iface->option[i].value); 943 958 } 959 960 ifupdown_env = getenv("IFUPDOWN_ENV"); 961 if (ifupdown_env == NULL) 962 ifupdown_env = ""; 944 963 945 964 *(environend++) = setlocalenv("%s=%s", "IFACE", iface->iface); 946 965 *(environend++) = setlocalenv("%s=%s", "ADDRFAM", iface->address_family->name); 947 966 *(environend++) = setlocalenv("%s=%s", "METHOD", iface->method->name); 948 967 *(environend++) = setlocalenv("%s=%s", "MODE", mode); 949 968 *(environend++) = setlocalenv("%s=%s", "PATH", startup_PATH); 969 *(environend++) = setlocalenv("%s=%s", "IFUPDOWN_ENV", ifupdown_env); 950 970 } 951 971 952 972 static int doit(char *str) … … 1001 1021 { 1002 1022 if (!iface->method->up(iface, check)) return -1; 1003 1023 set_environ(iface, "start"); 1024 remove("/tmp/ifupdown/env"); /* cleanup */ 1004 1025 if (!execute_all(iface, "pre-up")) return 0; 1005 1026 if (!iface->method->up(iface, doit)) return 0; 1006 1027 if (!execute_all(iface, "up")) return 0; … … 1011 1032 { 1012 1033 if (!iface->method->down(iface,check)) return -1; 1013 1034 set_environ(iface, "stop"); 1035 remove("/tmp/ifupdown/env"); /* cleanup */ 1014 1036 if (!execute_all(iface, "down")) return 0; 1015 1037 if (!iface->method->down(iface, doit)) return 0; 1016 1038 if (!execute_all(iface, "post-down")) return 0;
Note: See TracBrowser for help on using the browser.


