diff options
-rw-r--r-- | networking/httpd.c | 6 | ||||
-rw-r--r-- | networking/ipcalc.c | 53 |
2 files changed, 32 insertions, 27 deletions
diff --git a/networking/httpd.c b/networking/httpd.c index 60dbba4d6..b27437ab2 100644 --- a/networking/httpd.c +++ b/networking/httpd.c | |||
@@ -1990,9 +1990,6 @@ int httpd_main(int argc, char *argv[]) | |||
1990 | if(uid > 0) | 1990 | if(uid > 0) |
1991 | setuid(uid); | 1991 | setuid(uid); |
1992 | # endif | 1992 | # endif |
1993 | # ifdef CONFIG_FEATURE_HTTPD_CGI | ||
1994 | addEnvPort("SERVER"); | ||
1995 | # endif | ||
1996 | #endif | 1993 | #endif |
1997 | 1994 | ||
1998 | #ifdef CONFIG_FEATURE_HTTPD_CGI | 1995 | #ifdef CONFIG_FEATURE_HTTPD_CGI |
@@ -2005,6 +2002,9 @@ int httpd_main(int argc, char *argv[]) | |||
2005 | if(p) { | 2002 | if(p) { |
2006 | setenv("PATH", p, 0); | 2003 | setenv("PATH", p, 0); |
2007 | } | 2004 | } |
2005 | # ifndef CONFIG_FEATURE_HTTPD_USAGE_FROM_INETD_ONLY | ||
2006 | addEnvPort("SERVER"); | ||
2007 | # endif | ||
2008 | } | 2008 | } |
2009 | #endif | 2009 | #endif |
2010 | 2010 | ||
diff --git a/networking/ipcalc.c b/networking/ipcalc.c index 171c49a26..2f1c02b7b 100644 --- a/networking/ipcalc.c +++ b/networking/ipcalc.c | |||
@@ -43,15 +43,14 @@ static unsigned long get_netmask(unsigned long ipaddr) | |||
43 | #ifdef CONFIG_FEATURE_IPCALC_FANCY | 43 | #ifdef CONFIG_FEATURE_IPCALC_FANCY |
44 | static int get_prefix(unsigned long netmask) | 44 | static int get_prefix(unsigned long netmask) |
45 | { | 45 | { |
46 | unsigned long t; | 46 | unsigned long msk = 0x80000000; |
47 | int ret = 0; | 47 | int ret = 0; |
48 | 48 | ||
49 | for (t = 0; t < 32; t++) { | 49 | netmask = htonl(netmask); |
50 | if (htonl(netmask) & (0x80000000 >> t)) { | 50 | while(msk) { |
51 | ret ++; | 51 | if (netmask & msk) |
52 | } else { | 52 | ret++; |
53 | break; | 53 | msk >>= 1; |
54 | } | ||
55 | } | 54 | } |
56 | return ret; | 55 | return ret; |
57 | } | 56 | } |
@@ -64,14 +63,16 @@ static int get_prefix(unsigned long netmask) | |||
64 | #define HOSTNAME 0x10 | 63 | #define HOSTNAME 0x10 |
65 | #define SILENT 0x20 | 64 | #define SILENT 0x20 |
66 | 65 | ||
66 | |||
67 | int ipcalc_main(int argc, char **argv) | 67 | int ipcalc_main(int argc, char **argv) |
68 | { | 68 | { |
69 | unsigned long mode; | 69 | unsigned long mode; |
70 | 70 | ||
71 | unsigned long netmask = 0; | 71 | unsigned long netmask; |
72 | unsigned long broadcast; | 72 | unsigned long broadcast; |
73 | unsigned long network; | 73 | unsigned long network; |
74 | unsigned long ipaddr; | 74 | unsigned long ipaddr; |
75 | struct in_addr a; | ||
75 | 76 | ||
76 | #ifdef CONFIG_FEATURE_IPCALC_FANCY | 77 | #ifdef CONFIG_FEATURE_IPCALC_FANCY |
77 | unsigned long netprefix = 0; | 78 | unsigned long netprefix = 0; |
@@ -116,20 +117,21 @@ int ipcalc_main(int argc, char **argv) | |||
116 | *prefixstr = (char)0; | 117 | *prefixstr = (char)0; |
117 | prefixstr++; | 118 | prefixstr++; |
118 | if (*prefixstr) { | 119 | if (*prefixstr) { |
120 | unsigned int msk; | ||
121 | |||
119 | netprefix = atol(prefixstr); | 122 | netprefix = atol(prefixstr); |
120 | if (netprefix > 32) { | 123 | if (netprefix > 32) { |
121 | IPCALC_MSG(bb_error_msg_and_die("bad IP prefix: %s\n", prefixstr), | 124 | IPCALC_MSG(bb_error_msg_and_die("bad IP prefix: %s\n", prefixstr), |
122 | exit(EXIT_FAILURE)); | 125 | exit(EXIT_FAILURE)); |
123 | } | 126 | } |
124 | if (netprefix) { | 127 | netmask = 0; |
125 | netmask = 0x80000000; | 128 | msk = 0x80000000; |
126 | netprefix--; | 129 | while (netprefix > 0) { |
127 | while(netprefix) { | 130 | netmask |= msk; |
128 | netmask = 0x80000000 | (netmask >> 1); | 131 | msk >>= 1; |
129 | netprefix--; | 132 | netprefix--; |
130 | } | 133 | } |
131 | netmask = htonl(netmask); | 134 | netmask = htonl(netmask); |
132 | } | ||
133 | /* Even if it was 0, we will signify that we have a netmask. This allows */ | 135 | /* Even if it was 0, we will signify that we have a netmask. This allows */ |
134 | /* for specification of default routes, etc which have a 0 netmask/prefix */ | 136 | /* for specification of default routes, etc which have a 0 netmask/prefix */ |
135 | have_netmask = 1; | 137 | have_netmask = 1; |
@@ -138,34 +140,37 @@ int ipcalc_main(int argc, char **argv) | |||
138 | } | 140 | } |
139 | prefixstr++; | 141 | prefixstr++; |
140 | } | 142 | } |
141 | ipaddr = inet_addr(ipstr); | 143 | ipaddr = inet_aton(ipstr, &a); |
142 | #else | 144 | #else |
143 | ipaddr = inet_addr(argv[optind]); | 145 | ipaddr = inet_aton(argv[optind], &a); |
144 | #endif | 146 | #endif |
145 | 147 | ||
146 | if (ipaddr == INADDR_NONE) { | 148 | if (ipaddr == 0) { |
147 | IPCALC_MSG(bb_error_msg_and_die("bad IP address: %s", argv[optind]), | 149 | IPCALC_MSG(bb_error_msg_and_die("bad IP address: %s", argv[optind]), |
148 | exit(EXIT_FAILURE)); | 150 | exit(EXIT_FAILURE)); |
149 | } | 151 | } |
152 | ipaddr = a.s_addr; | ||
150 | 153 | ||
151 | if (argc - optind == 2) { | 154 | if (argc - optind == 2) { |
152 | #ifdef CONFIG_FEATURE_IPCALC_FANCY | 155 | #ifdef CONFIG_FEATURE_IPCALC_FANCY |
153 | if (have_netmask == 1) { | 156 | if (have_netmask) { |
154 | IPCALC_MSG(bb_error_msg_and_die("Both prefix and netmask were specified, use one or the other.\n"), | 157 | IPCALC_MSG(bb_error_msg_and_die("Both prefix and netmask were specified, use one or the other.\n"), |
155 | exit(EXIT_FAILURE)); | 158 | exit(EXIT_FAILURE)); |
156 | } | 159 | } |
157 | have_netmask = 1; | ||
158 | #endif | ||
159 | netmask = inet_addr(argv[optind + 1]); | ||
160 | } | ||
161 | 160 | ||
162 | if (ipaddr == INADDR_NONE) { | 161 | #endif |
162 | netmask = inet_aton(argv[optind + 1], &a); | ||
163 | if (netmask == 0) { | ||
163 | IPCALC_MSG(bb_error_msg_and_die("bad netmask: %s", argv[optind + 1]), | 164 | IPCALC_MSG(bb_error_msg_and_die("bad netmask: %s", argv[optind + 1]), |
164 | exit(EXIT_FAILURE)); | 165 | exit(EXIT_FAILURE)); |
165 | } | 166 | } |
167 | netmask = a.s_addr; | ||
168 | } else { | ||
169 | #ifdef CONFIG_FEATURE_IPCALC_FANCY | ||
166 | 170 | ||
171 | if (!have_netmask) | ||
172 | #endif | ||
167 | /* JHC - If the netmask wasn't provided then calculate it */ | 173 | /* JHC - If the netmask wasn't provided then calculate it */ |
168 | if (!netmask) { | ||
169 | netmask = get_netmask(ipaddr); | 174 | netmask = get_netmask(ipaddr); |
170 | } | 175 | } |
171 | 176 | ||