regdomain.c (181463) | regdomain.c (183244) |
---|---|
1/*- 2 * Copyright (c) 2008 Sam Leffler, Errno Consulting 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25#ifndef lint | 1/*- 2 * Copyright (c) 2008 Sam Leffler, Errno Consulting 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 19 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 21 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25#ifndef lint |
26static const char rcsid[] = "$FreeBSD: head/sbin/ifconfig/regdomain.c 181463 2008-08-09 11:14:05Z des $"; | 26static const char rcsid[] = "$FreeBSD: head/sbin/ifconfig/regdomain.c 183244 2008-09-21 22:16:03Z sam $"; |
27#endif /* not lint */ 28 29#include <sys/types.h> 30#include <sys/errno.h> 31#include <sys/mman.h> 32#include <sys/sbuf.h> 33#include <sys/stat.h> 34 --- 350 unchanged lines hidden (view full) --- 385{ 386 XML_Parser parser; 387 struct mystate *mt; 388 struct regdomain *dp; 389 struct country *cp; 390 struct freqband *fp; 391 struct netband *nb; 392 const void *id; | 27#endif /* not lint */ 28 29#include <sys/types.h> 30#include <sys/errno.h> 31#include <sys/mman.h> 32#include <sys/sbuf.h> 33#include <sys/stat.h> 34 --- 350 unchanged lines hidden (view full) --- 385{ 386 XML_Parser parser; 387 struct mystate *mt; 388 struct regdomain *dp; 389 struct country *cp; 390 struct freqband *fp; 391 struct netband *nb; 392 const void *id; |
393 int i; | 393 int i, errors; |
394 395 memset(rdp, 0, sizeof(struct regdata)); 396 mt = calloc(1, sizeof(struct mystate)); 397 if (mt == NULL) 398 return ENOMEM; 399 /* parse the XML input */ 400 mt->rdp = rdp; 401 parser = XML_ParserCreate(NULL); --- 8 unchanged lines hidden (view full) --- 410 } 411 XML_ParserFree(parser); 412 413 /* setup the identifer table */ 414 rdp->ident = calloc(sizeof(struct ident), mt->nident + 1); 415 if (rdp->ident == NULL) 416 return ENOMEM; 417 free(mt); | 394 395 memset(rdp, 0, sizeof(struct regdata)); 396 mt = calloc(1, sizeof(struct mystate)); 397 if (mt == NULL) 398 return ENOMEM; 399 /* parse the XML input */ 400 mt->rdp = rdp; 401 parser = XML_ParserCreate(NULL); --- 8 unchanged lines hidden (view full) --- 410 } 411 XML_ParserFree(parser); 412 413 /* setup the identifer table */ 414 rdp->ident = calloc(sizeof(struct ident), mt->nident + 1); 415 if (rdp->ident == NULL) 416 return ENOMEM; 417 free(mt); |
418 419 errors = 0; |
|
418 i = 0; 419 LIST_FOREACH(dp, &rdp->domains, next) { 420 rdp->ident[i].id = dp->name; 421 rdp->ident[i].p = dp; 422 rdp->ident[i].type = DOMAIN; 423 i++; 424 } 425 LIST_FOREACH(fp, &rdp->freqbands, next) { --- 9 unchanged lines hidden (view full) --- 435 i++; 436 } 437 438 /* patch references */ 439 LIST_FOREACH(dp, &rdp->domains, next) { 440 if (dp->cc != NULL) { 441 id = dp->cc; 442 dp->cc = findid(rdp, id, COUNTRY); | 420 i = 0; 421 LIST_FOREACH(dp, &rdp->domains, next) { 422 rdp->ident[i].id = dp->name; 423 rdp->ident[i].p = dp; 424 rdp->ident[i].type = DOMAIN; 425 i++; 426 } 427 LIST_FOREACH(fp, &rdp->freqbands, next) { --- 9 unchanged lines hidden (view full) --- 437 i++; 438 } 439 440 /* patch references */ 441 LIST_FOREACH(dp, &rdp->domains, next) { 442 if (dp->cc != NULL) { 443 id = dp->cc; 444 dp->cc = findid(rdp, id, COUNTRY); |
445 if (dp->cc == NULL) { 446 warnx("undefined country \"%s\"", 447 __DECONST(char *, id)); 448 errors++; 449 } |
|
443 free(__DECONST(char *, id)); 444 } | 450 free(__DECONST(char *, id)); 451 } |
445 LIST_FOREACH(nb, &dp->bands_11b, next) 446 nb->band = findid(rdp, nb->band, FREQBAND); 447 LIST_FOREACH(nb, &dp->bands_11g, next) 448 nb->band = findid(rdp, nb->band, FREQBAND); 449 LIST_FOREACH(nb, &dp->bands_11a, next) 450 nb->band = findid(rdp, nb->band, FREQBAND); 451 LIST_FOREACH(nb, &dp->bands_11ng, next) 452 nb->band = findid(rdp, nb->band, FREQBAND); 453 LIST_FOREACH(nb, &dp->bands_11na, next) 454 nb->band = findid(rdp, nb->band, FREQBAND); | 452 LIST_FOREACH(nb, &dp->bands_11b, next) { 453 id = findid(rdp, nb->band, FREQBAND); 454 if (id == NULL) { 455 warnx("undefined 11b band \"%s\"", 456 __DECONST(char *, nb->band)); 457 errors++; 458 } 459 nb->band = id; 460 } 461 LIST_FOREACH(nb, &dp->bands_11g, next) { 462 id = findid(rdp, nb->band, FREQBAND); 463 if (id == NULL) { 464 warnx("undefined 11g band \"%s\"", 465 __DECONST(char *, nb->band)); 466 errors++; 467 } 468 nb->band = id; 469 } 470 LIST_FOREACH(nb, &dp->bands_11a, next) { 471 id = findid(rdp, nb->band, FREQBAND); 472 if (id == NULL) { 473 warnx("undefined 11a band \"%s\"", 474 __DECONST(char *, nb->band)); 475 errors++; 476 } 477 nb->band = id; 478 } 479 LIST_FOREACH(nb, &dp->bands_11ng, next) { 480 id = findid(rdp, nb->band, FREQBAND); 481 if (id == NULL) { 482 warnx("undefined 11ng band \"%s\"", 483 __DECONST(char *, nb->band)); 484 errors++; 485 } 486 nb->band = id; 487 } 488 LIST_FOREACH(nb, &dp->bands_11na, next) { 489 id = findid(rdp, nb->band, FREQBAND); 490 if (id == NULL) { 491 warnx("undefined 11na band \"%s\"", 492 __DECONST(char *, nb->band)); 493 errors++; 494 } 495 nb->band = id; 496 } |
455 } 456 LIST_FOREACH(cp, &rdp->countries, next) { 457 id = cp->rd; 458 cp->rd = findid(rdp, id, DOMAIN); | 497 } 498 LIST_FOREACH(cp, &rdp->countries, next) { 499 id = cp->rd; 500 cp->rd = findid(rdp, id, DOMAIN); |
501 if (cp->rd == NULL) { 502 warnx("undefined country \"%s\"", 503 __DECONST(char *, id)); 504 errors++; 505 } |
|
459 free(__DECONST(char *, id)); 460 } 461 | 506 free(__DECONST(char *, id)); 507 } 508 |
462 return 0; | 509 return errors ? EINVAL : 0; |
463} 464 465static void 466cleanup_bands(netband_head *head) 467{ 468 struct netband *nb; 469 470 for (;;) { --- 166 unchanged lines hidden --- | 510} 511 512static void 513cleanup_bands(netband_head *head) 514{ 515 struct netband *nb; 516 517 for (;;) { --- 166 unchanged lines hidden --- |