localzone.c (11d38a5764295585a2472d5e861fa8abe1a11eb2) localzone.c (0de4f1bf6489bbcbd68ea4cfe2a9c63cc0a1691b)
1/*
2 * services/localzone.c - local zones authority service.
3 *
4 * Copyright (c) 2007, NLnet Labs. All rights reserved.
5 *
6 * This software is open source.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 37 unchanged lines hidden (view full) ---

46#include "util/config_file.h"
47#include "util/data/dname.h"
48#include "util/data/packed_rrset.h"
49#include "util/data/msgencode.h"
50#include "util/net_help.h"
51#include "util/netevent.h"
52#include "util/data/msgreply.h"
53#include "util/data/msgparse.h"
1/*
2 * services/localzone.c - local zones authority service.
3 *
4 * Copyright (c) 2007, NLnet Labs. All rights reserved.
5 *
6 * This software is open source.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 37 unchanged lines hidden (view full) ---

46#include "util/config_file.h"
47#include "util/data/dname.h"
48#include "util/data/packed_rrset.h"
49#include "util/data/msgencode.h"
50#include "util/net_help.h"
51#include "util/netevent.h"
52#include "util/data/msgreply.h"
53#include "util/data/msgparse.h"
54#include "util/as112.h"
54
55struct local_zones*
56local_zones_create(void)
57{
58 struct local_zones* zones = (struct local_zones*)calloc(1,
59 sizeof(*zones));
60 if(!zones)
61 return NULL;

--- 525 unchanged lines hidden (view full) ---

587 return 1;
588}
589
590/** enter default zones */
591static int
592lz_enter_defaults(struct local_zones* zones, struct config_file* cfg)
593{
594 struct local_zone* z;
55
56struct local_zones*
57local_zones_create(void)
58{
59 struct local_zones* zones = (struct local_zones*)calloc(1,
60 sizeof(*zones));
61 if(!zones)
62 return NULL;

--- 525 unchanged lines hidden (view full) ---

588 return 1;
589}
590
591/** enter default zones */
592static int
593lz_enter_defaults(struct local_zones* zones, struct config_file* cfg)
594{
595 struct local_zone* z;
596 const char** zstr;
595
596 /* this list of zones is from RFC 6303 */
597
598 /* block localhost level zones, first, later the LAN zones */
599
600 /* localhost. zone */
601 if(!lz_exists(zones, "localhost.") &&
602 !lz_nodefault(cfg, "localhost.")) {

--- 46 unchanged lines hidden (view full) ---

649 "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN PTR localhost.")) {
650 log_err("out of memory adding default zone");
651 if(z) { lock_rw_unlock(&z->lock); }
652 return 0;
653 }
654 lock_rw_unlock(&z->lock);
655 }
656
597
598 /* this list of zones is from RFC 6303 */
599
600 /* block localhost level zones, first, later the LAN zones */
601
602 /* localhost. zone */
603 if(!lz_exists(zones, "localhost.") &&
604 !lz_nodefault(cfg, "localhost.")) {

--- 46 unchanged lines hidden (view full) ---

651 "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa. 10800 IN PTR localhost.")) {
652 log_err("out of memory adding default zone");
653 if(z) { lock_rw_unlock(&z->lock); }
654 return 0;
655 }
656 lock_rw_unlock(&z->lock);
657 }
658
657 /* if unblock lan-zones, then do not add the zones below.
658 * we do add the zones above, about 127.0.0.1, because localhost is
659 * not on the lan. */
660 if(cfg->unblock_lan_zones)
661 return 1;
662
663 /* block LAN level zones */
664 if ( !add_as112_default(zones, cfg, "10.in-addr.arpa.") ||
665 !add_as112_default(zones, cfg, "16.172.in-addr.arpa.") ||
666 !add_as112_default(zones, cfg, "17.172.in-addr.arpa.") ||
667 !add_as112_default(zones, cfg, "18.172.in-addr.arpa.") ||
668 !add_as112_default(zones, cfg, "19.172.in-addr.arpa.") ||
669 !add_as112_default(zones, cfg, "20.172.in-addr.arpa.") ||
670 !add_as112_default(zones, cfg, "21.172.in-addr.arpa.") ||
671 !add_as112_default(zones, cfg, "22.172.in-addr.arpa.") ||
672 !add_as112_default(zones, cfg, "23.172.in-addr.arpa.") ||
673 !add_as112_default(zones, cfg, "24.172.in-addr.arpa.") ||
674 !add_as112_default(zones, cfg, "25.172.in-addr.arpa.") ||
675 !add_as112_default(zones, cfg, "26.172.in-addr.arpa.") ||
676 !add_as112_default(zones, cfg, "27.172.in-addr.arpa.") ||
677 !add_as112_default(zones, cfg, "28.172.in-addr.arpa.") ||
678 !add_as112_default(zones, cfg, "29.172.in-addr.arpa.") ||
679 !add_as112_default(zones, cfg, "30.172.in-addr.arpa.") ||
680 !add_as112_default(zones, cfg, "31.172.in-addr.arpa.") ||
681 !add_as112_default(zones, cfg, "168.192.in-addr.arpa.") ||
682 !add_as112_default(zones, cfg, "0.in-addr.arpa.") ||
683 !add_as112_default(zones, cfg, "64.100.in-addr.arpa.") ||
684 !add_as112_default(zones, cfg, "65.100.in-addr.arpa.") ||
685 !add_as112_default(zones, cfg, "66.100.in-addr.arpa.") ||
686 !add_as112_default(zones, cfg, "67.100.in-addr.arpa.") ||
687 !add_as112_default(zones, cfg, "68.100.in-addr.arpa.") ||
688 !add_as112_default(zones, cfg, "69.100.in-addr.arpa.") ||
689 !add_as112_default(zones, cfg, "70.100.in-addr.arpa.") ||
690 !add_as112_default(zones, cfg, "71.100.in-addr.arpa.") ||
691 !add_as112_default(zones, cfg, "72.100.in-addr.arpa.") ||
692 !add_as112_default(zones, cfg, "73.100.in-addr.arpa.") ||
693 !add_as112_default(zones, cfg, "74.100.in-addr.arpa.") ||
694 !add_as112_default(zones, cfg, "75.100.in-addr.arpa.") ||
695 !add_as112_default(zones, cfg, "76.100.in-addr.arpa.") ||
696 !add_as112_default(zones, cfg, "77.100.in-addr.arpa.") ||
697 !add_as112_default(zones, cfg, "78.100.in-addr.arpa.") ||
698 !add_as112_default(zones, cfg, "79.100.in-addr.arpa.") ||
699 !add_as112_default(zones, cfg, "80.100.in-addr.arpa.") ||
700 !add_as112_default(zones, cfg, "81.100.in-addr.arpa.") ||
701 !add_as112_default(zones, cfg, "82.100.in-addr.arpa.") ||
702 !add_as112_default(zones, cfg, "83.100.in-addr.arpa.") ||
703 !add_as112_default(zones, cfg, "84.100.in-addr.arpa.") ||
704 !add_as112_default(zones, cfg, "85.100.in-addr.arpa.") ||
705 !add_as112_default(zones, cfg, "86.100.in-addr.arpa.") ||
706 !add_as112_default(zones, cfg, "87.100.in-addr.arpa.") ||
707 !add_as112_default(zones, cfg, "88.100.in-addr.arpa.") ||
708 !add_as112_default(zones, cfg, "89.100.in-addr.arpa.") ||
709 !add_as112_default(zones, cfg, "90.100.in-addr.arpa.") ||
710 !add_as112_default(zones, cfg, "91.100.in-addr.arpa.") ||
711 !add_as112_default(zones, cfg, "92.100.in-addr.arpa.") ||
712 !add_as112_default(zones, cfg, "93.100.in-addr.arpa.") ||
713 !add_as112_default(zones, cfg, "94.100.in-addr.arpa.") ||
714 !add_as112_default(zones, cfg, "95.100.in-addr.arpa.") ||
715 !add_as112_default(zones, cfg, "96.100.in-addr.arpa.") ||
716 !add_as112_default(zones, cfg, "97.100.in-addr.arpa.") ||
717 !add_as112_default(zones, cfg, "98.100.in-addr.arpa.") ||
718 !add_as112_default(zones, cfg, "99.100.in-addr.arpa.") ||
719 !add_as112_default(zones, cfg, "100.100.in-addr.arpa.") ||
720 !add_as112_default(zones, cfg, "101.100.in-addr.arpa.") ||
721 !add_as112_default(zones, cfg, "102.100.in-addr.arpa.") ||
722 !add_as112_default(zones, cfg, "103.100.in-addr.arpa.") ||
723 !add_as112_default(zones, cfg, "104.100.in-addr.arpa.") ||
724 !add_as112_default(zones, cfg, "105.100.in-addr.arpa.") ||
725 !add_as112_default(zones, cfg, "106.100.in-addr.arpa.") ||
726 !add_as112_default(zones, cfg, "107.100.in-addr.arpa.") ||
727 !add_as112_default(zones, cfg, "108.100.in-addr.arpa.") ||
728 !add_as112_default(zones, cfg, "109.100.in-addr.arpa.") ||
729 !add_as112_default(zones, cfg, "110.100.in-addr.arpa.") ||
730 !add_as112_default(zones, cfg, "111.100.in-addr.arpa.") ||
731 !add_as112_default(zones, cfg, "112.100.in-addr.arpa.") ||
732 !add_as112_default(zones, cfg, "113.100.in-addr.arpa.") ||
733 !add_as112_default(zones, cfg, "114.100.in-addr.arpa.") ||
734 !add_as112_default(zones, cfg, "115.100.in-addr.arpa.") ||
735 !add_as112_default(zones, cfg, "116.100.in-addr.arpa.") ||
736 !add_as112_default(zones, cfg, "117.100.in-addr.arpa.") ||
737 !add_as112_default(zones, cfg, "118.100.in-addr.arpa.") ||
738 !add_as112_default(zones, cfg, "119.100.in-addr.arpa.") ||
739 !add_as112_default(zones, cfg, "120.100.in-addr.arpa.") ||
740 !add_as112_default(zones, cfg, "121.100.in-addr.arpa.") ||
741 !add_as112_default(zones, cfg, "122.100.in-addr.arpa.") ||
742 !add_as112_default(zones, cfg, "123.100.in-addr.arpa.") ||
743 !add_as112_default(zones, cfg, "124.100.in-addr.arpa.") ||
744 !add_as112_default(zones, cfg, "125.100.in-addr.arpa.") ||
745 !add_as112_default(zones, cfg, "126.100.in-addr.arpa.") ||
746 !add_as112_default(zones, cfg, "127.100.in-addr.arpa.") ||
747 !add_as112_default(zones, cfg, "254.169.in-addr.arpa.") ||
748 !add_as112_default(zones, cfg, "2.0.192.in-addr.arpa.") ||
749 !add_as112_default(zones, cfg, "100.51.198.in-addr.arpa.") ||
750 !add_as112_default(zones, cfg, "113.0.203.in-addr.arpa.") ||
751 !add_as112_default(zones, cfg, "255.255.255.255.in-addr.arpa.") ||
752 !add_as112_default(zones, cfg, "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa.") ||
753 !add_as112_default(zones, cfg, "d.f.ip6.arpa.") ||
754 !add_as112_default(zones, cfg, "8.e.f.ip6.arpa.") ||
755 !add_as112_default(zones, cfg, "9.e.f.ip6.arpa.") ||
756 !add_as112_default(zones, cfg, "a.e.f.ip6.arpa.") ||
757 !add_as112_default(zones, cfg, "b.e.f.ip6.arpa.") ||
758 !add_as112_default(zones, cfg, "8.b.d.0.1.0.0.2.ip6.arpa.")) {
759 log_err("out of memory adding default zone");
760 return 0;
659 /* block AS112 zones, unless asked not to */
660 if(!cfg->unblock_lan_zones) {
661 for(zstr = as112_zones; *zstr; zstr++) {
662 if(!add_as112_default(zones, cfg, *zstr)) {
663 log_err("out of memory adding default zone");
664 return 0;
665 }
666 }
761 }
762 return 1;
763}
764
765/** setup parent pointers, so that a lookup can be done for closest match */
766static void
767init_parents(struct local_zones* zones)
768{

--- 667 unchanged lines hidden ---
667 }
668 return 1;
669}
670
671/** setup parent pointers, so that a lookup can be done for closest match */
672static void
673init_parents(struct local_zones* zones)
674{

--- 667 unchanged lines hidden ---