summaryrefslogtreecommitdiff
path: root/networking/libiproute
diff options
context:
space:
mode:
authorGlenn L McGrath <bug1@ihug.co.nz>2002-11-18 07:26:42 +0000
committerGlenn L McGrath <bug1@ihug.co.nz>2002-11-18 07:26:42 +0000
commit50c00f4b4507facb41e01a3561903cc628bf9a49 (patch)
tree3dc475f1041f6408a05a8e789749e7431a4cb0ea /networking/libiproute
parent29d801b834b908bde20984a5fd9a782f04da7e1a (diff)
downloadbusybox-w32-50c00f4b4507facb41e01a3561903cc628bf9a49.tar.gz
busybox-w32-50c00f4b4507facb41e01a3561903cc628bf9a49.tar.bz2
busybox-w32-50c00f4b4507facb41e01a3561903cc628bf9a49.zip
Use error_msg_and_die, style
Diffstat (limited to 'networking/libiproute')
-rw-r--r--networking/libiproute/utils.c85
1 files changed, 50 insertions, 35 deletions
diff --git a/networking/libiproute/utils.c b/networking/libiproute/utils.c
index afc02d9d9..70d6853d2 100644
--- a/networking/libiproute/utils.c
+++ b/networking/libiproute/utils.c
@@ -57,7 +57,7 @@ int get_unsigned(unsigned *val, char *arg, int base)
57 return 0; 57 return 0;
58} 58}
59 59
60int get_u32(__u32 *val, char *arg, int base) 60int get_u32(__u32 * val, char *arg, int base)
61{ 61{
62 unsigned long res; 62 unsigned long res;
63 char *ptr; 63 char *ptr;
@@ -71,7 +71,7 @@ int get_u32(__u32 *val, char *arg, int base)
71 return 0; 71 return 0;
72} 72}
73 73
74int get_u16(__u16 *val, char *arg, int base) 74int get_u16(__u16 * val, char *arg, int base)
75{ 75{
76 unsigned long res; 76 unsigned long res;
77 char *ptr; 77 char *ptr;
@@ -85,7 +85,7 @@ int get_u16(__u16 *val, char *arg, int base)
85 return 0; 85 return 0;
86} 86}
87 87
88int get_u8(__u8 *val, char *arg, int base) 88int get_u8(__u8 * val, char *arg, int base)
89{ 89{
90 unsigned long res; 90 unsigned long res;
91 char *ptr; 91 char *ptr;
@@ -99,7 +99,7 @@ int get_u8(__u8 *val, char *arg, int base)
99 return 0; 99 return 0;
100} 100}
101 101
102int get_s16(__s16 *val, char *arg, int base) 102int get_s16(__s16 * val, char *arg, int base)
103{ 103{
104 long res; 104 long res;
105 char *ptr; 105 char *ptr;
@@ -113,7 +113,7 @@ int get_s16(__s16 *val, char *arg, int base)
113 return 0; 113 return 0;
114} 114}
115 115
116int get_s8(__s8 *val, char *arg, int base) 116int get_s8(__s8 * val, char *arg, int base)
117{ 117{
118 long res; 118 long res;
119 char *ptr; 119 char *ptr;
@@ -127,17 +127,16 @@ int get_s8(__s8 *val, char *arg, int base)
127 return 0; 127 return 0;
128} 128}
129 129
130int get_addr_1(inet_prefix *addr, char *name, int family) 130int get_addr_1(inet_prefix * addr, char *name, int family)
131{ 131{
132 char *cp; 132 char *cp;
133 unsigned char *ap = (unsigned char*)addr->data; 133 unsigned char *ap = (unsigned char *) addr->data;
134 int i; 134 int i;
135 135
136 memset(addr, 0, sizeof(*addr)); 136 memset(addr, 0, sizeof(*addr));
137 137
138 if (strcmp(name, "default") == 0 || 138 if (strcmp(name, "default") == 0 ||
139 strcmp(name, "all") == 0 || 139 strcmp(name, "all") == 0 || strcmp(name, "any") == 0) {
140 strcmp(name, "any") == 0) {
141 addr->family = family; 140 addr->family = family;
142 addr->bytelen = (family == AF_INET6 ? 16 : 4); 141 addr->bytelen = (family == AF_INET6 ? 16 : 4);
143 addr->bitlen = -1; 142 addr->bitlen = -1;
@@ -160,9 +159,9 @@ int get_addr_1(inet_prefix *addr, char *name, int family)
160 return -1; 159 return -1;
161 addr->bytelen = 4; 160 addr->bytelen = 4;
162 addr->bitlen = -1; 161 addr->bitlen = -1;
163 for (cp=name, i=0; *cp; cp++) { 162 for (cp = name, i = 0; *cp; cp++) {
164 if (*cp <= '9' && *cp >= '0') { 163 if (*cp <= '9' && *cp >= '0') {
165 ap[i] = 10*ap[i] + (*cp-'0'); 164 ap[i] = 10 * ap[i] + (*cp - '0');
166 continue; 165 continue;
167 } 166 }
168 if (*cp == '.' && ++i <= 3) 167 if (*cp == '.' && ++i <= 3)
@@ -172,7 +171,7 @@ int get_addr_1(inet_prefix *addr, char *name, int family)
172 return 0; 171 return 0;
173} 172}
174 173
175int get_prefix_1(inet_prefix *dst, char *arg, int family) 174int get_prefix_1(inet_prefix * dst, char *arg, int family)
176{ 175{
177 int err; 176 int err;
178 unsigned plen; 177 unsigned plen;
@@ -192,49 +191,57 @@ int get_prefix_1(inet_prefix *dst, char *arg, int family)
192 *slash = 0; 191 *slash = 0;
193 err = get_addr_1(dst, arg, family); 192 err = get_addr_1(dst, arg, family);
194 if (err == 0) { 193 if (err == 0) {
195 switch(dst->family) { 194 switch (dst->family) {
196 case AF_INET6: 195 case AF_INET6:
197 dst->bitlen = 128; 196 dst->bitlen = 128;
198 break; 197 break;
199 default: 198 default:
200 case AF_INET: 199 case AF_INET:
201 dst->bitlen = 32; 200 dst->bitlen = 32;
202 } 201 }
203 if (slash) { 202 if (slash) {
204 if (get_integer(&plen, slash+1, 0) || plen > dst->bitlen) { 203 if (get_integer(&plen, slash + 1, 0) || plen > dst->bitlen) {
205 err = -1; 204 err = -1;
206 goto done; 205 goto done;
207 } 206 }
208 dst->bitlen = plen; 207 dst->bitlen = plen;
209 } 208 }
210 } 209 }
211done: 210 done:
212 if (slash) 211 if (slash)
213 *slash = '/'; 212 *slash = '/';
214 return err; 213 return err;
215} 214}
216 215
217int get_addr(inet_prefix *dst, char *arg, int family) 216int get_addr(inet_prefix * dst, char *arg, int family)
218{ 217{
219 if (family == AF_PACKET) { 218 if (family == AF_PACKET) {
220 fprintf(stderr, "Error: \"%s\" may be inet address, but it is not allowed in this context.\n", arg); 219 fprintf(stderr,
220 "Error: \"%s\" may be inet address, but it is not allowed in this context.\n",
221 arg);
221 exit(1); 222 exit(1);
222 } 223 }
223 if (get_addr_1(dst, arg, family)) { 224 if (get_addr_1(dst, arg, family)) {
224 fprintf(stderr, "Error: an inet address is expected rather than \"%s\".\n", arg); 225 fprintf(stderr,
226 "Error: an inet address is expected rather than \"%s\".\n",
227 arg);
225 exit(1); 228 exit(1);
226 } 229 }
227 return 0; 230 return 0;
228} 231}
229 232
230int get_prefix(inet_prefix *dst, char *arg, int family) 233int get_prefix(inet_prefix * dst, char *arg, int family)
231{ 234{
232 if (family == AF_PACKET) { 235 if (family == AF_PACKET) {
233 fprintf(stderr, "Error: \"%s\" may be inet prefix, but it is not allowed in this context.\n", arg); 236 fprintf(stderr,
237 "Error: \"%s\" may be inet prefix, but it is not allowed in this context.\n",
238 arg);
234 exit(1); 239 exit(1);
235 } 240 }
236 if (get_prefix_1(dst, arg, family)) { 241 if (get_prefix_1(dst, arg, family)) {
237 fprintf(stderr, "Error: an inet prefix is expected rather than \"%s\".\n", arg); 242 fprintf(stderr,
243 "Error: an inet prefix is expected rather than \"%s\".\n",
244 arg);
238 exit(1); 245 exit(1);
239 } 246 }
240 return 0; 247 return 0;
@@ -243,8 +250,11 @@ int get_prefix(inet_prefix *dst, char *arg, int family)
243__u32 get_addr32(char *name) 250__u32 get_addr32(char *name)
244{ 251{
245 inet_prefix addr; 252 inet_prefix addr;
253
246 if (get_addr_1(&addr, name, AF_INET)) { 254 if (get_addr_1(&addr, name, AF_INET)) {
247 fprintf(stderr, "Error: an IP address is expected rather than \"%s\"\n", name); 255 fprintf(stderr,
256 "Error: an IP address is expected rather than \"%s\"\n",
257 name);
248 exit(1); 258 exit(1);
249 } 259 }
250 return addr.data[0]; 260 return addr.data[0];
@@ -264,25 +274,29 @@ void invarg(char *msg, char *arg)
264 274
265void duparg(char *key, char *arg) 275void duparg(char *key, char *arg)
266{ 276{
267 fprintf(stderr, "Error: duplicate \"%s\": \"%s\" is the second value.\n", key, arg); 277 fprintf(stderr, "Error: duplicate \"%s\": \"%s\" is the second value.\n",
278 key, arg);
268 exit(-1); 279 exit(-1);
269} 280}
270 281
271void duparg2(char *key, char *arg) 282void duparg2(char *key, char *arg)
272{ 283{
273 fprintf(stderr, "Error: either \"%s\" is duplicate, or \"%s\" is a garbage.\n", key, arg); 284 fprintf(stderr,
285 "Error: either \"%s\" is duplicate, or \"%s\" is a garbage.\n",
286 key, arg);
274 exit(-1); 287 exit(-1);
275} 288}
276 289
277int matches(char *cmd, char *pattern) 290int matches(char *cmd, char *pattern)
278{ 291{
279 int len = strlen(cmd); 292 int len = strlen(cmd);
293
280 if (len > strlen(pattern)) 294 if (len > strlen(pattern))
281 return -1; 295 return -1;
282 return memcmp(pattern, cmd, len); 296 return memcmp(pattern, cmd, len);
283} 297}
284 298
285int inet_addr_match(inet_prefix *a, inet_prefix *b, int bits) 299int inet_addr_match(inet_prefix * a, inet_prefix * b, int bits)
286{ 300{
287 __u32 *a1 = a->data; 301 __u32 *a1 = a->data;
288 __u32 *a2 = b->data; 302 __u32 *a2 = b->data;
@@ -319,6 +333,7 @@ int __get_hz(void)
319 333
320 if (fp) { 334 if (fp) {
321 unsigned nom, denom; 335 unsigned nom, denom;
336
322 if (fscanf(fp, "%*08x%*08x%08x%08x", &nom, &denom) == 2) 337 if (fscanf(fp, "%*08x%*08x%08x%08x", &nom, &denom) == 2)
323 if (nom == 1000000) 338 if (nom == 1000000)
324 hz = denom; 339 hz = denom;
@@ -346,6 +361,7 @@ const char *format_host(int af, int len, void *addr, char *buf, int buflen)
346#ifdef RESOLVE_HOSTNAMES 361#ifdef RESOLVE_HOSTNAMES
347 if (resolve_hosts) { 362 if (resolve_hosts) {
348 struct hostent *h_ent; 363 struct hostent *h_ent;
364
349 if (len <= 0) { 365 if (len <= 0) {
350 switch (af) { 366 switch (af) {
351 case AF_INET: 367 case AF_INET:
@@ -354,12 +370,11 @@ const char *format_host(int af, int len, void *addr, char *buf, int buflen)
354 case AF_INET6: 370 case AF_INET6:
355 len = 16; 371 len = 16;
356 break; 372 break;
357 default: ; 373 default:;
358 } 374 }
359 } 375 }
360 if (len > 0 && 376 if (len > 0 && (h_ent = gethostbyaddr(addr, len, af)) != NULL) {
361 (h_ent = gethostbyaddr(addr, len, af)) != NULL) { 377 snprintf(buf, buflen - 1, "%s", h_ent->h_name);
362 snprintf(buf, buflen-1, "%s", h_ent->h_name);
363 return buf; 378 return buf;
364 } 379 }
365 } 380 }