Lines Matching refs:zones

2  * services/localzone.c - local zones authority service.
58 struct local_zones* zones = (struct local_zones*)calloc(1,
59 sizeof(*zones));
60 if(!zones)
62 rbtree_init(&zones->ztree, &local_zone_cmp);
63 lock_rw_init(&zones->lock);
64 lock_protect(&zones->lock, &zones->ztree, sizeof(zones->ztree));
66 return zones;
69 /** helper traverse to delete zones */
78 local_zones_delete(struct local_zones* zones)
80 if(!zones)
82 lock_rw_destroy(&zones->lock);
83 /* walk through zones and delete them all */
84 traverse_postorder(&zones->ztree, lzdel, NULL);
85 free(zones);
162 /* also the zones->lock protects node, parent, name*, class */
168 lz_enter_zone_dname(struct local_zones* zones, uint8_t* nm, size_t len,
178 lock_rw_wrlock(&zones->lock);
180 if(!rbtree_insert(&zones->ztree, &z->node)) {
184 lock_rw_unlock(&zones->lock);
187 lock_rw_unlock(&zones->lock);
193 lz_enter_zone(struct local_zones* zones, const char* name, const char* type,
210 if(!(z=lz_enter_zone_dname(zones, nm, len, labs, t, dclass))) {
481 lz_enter_rr_str(struct local_zones* zones, const char* rr)
494 lock_rw_rdlock(&zones->lock);
495 z = local_zones_lookup(zones, rr_name, len, labs, rr_class);
497 lock_rw_unlock(&zones->lock);
501 lock_rw_unlock(&zones->lock);
510 lz_enter_zones(struct local_zones* zones, struct config_file* cfg)
515 if(!(z=lz_enter_zone(zones, p->str, p->str2,
525 lz_exists(struct local_zones* zones, const char* name)
534 lock_rw_rdlock(&zones->lock);
535 if(rbtree_search(&zones->ztree, &z.node)) {
536 lock_rw_unlock(&zones->lock);
540 lock_rw_unlock(&zones->lock);
566 add_as112_default(struct local_zones* zones, struct config_file* cfg,
571 if(lz_exists(zones, name) || lz_nodefault(cfg, name))
573 if(!(z=lz_enter_zone(zones, name, "static", LDNS_RR_CLASS_IN)))
590 /** enter default zones */
592 lz_enter_defaults(struct local_zones* zones, struct config_file* cfg)
596 /* this list of zones is from RFC 6303 */
598 /* block localhost level zones, first, later the LAN zones */
601 if(!lz_exists(zones, "localhost.") &&
603 if(!(z=lz_enter_zone(zones, "localhost.", "static",
621 if(!lz_exists(zones, "127.in-addr.arpa.") &&
623 if(!(z=lz_enter_zone(zones, "127.in-addr.arpa.", "static",
639 if(!lz_exists(zones, "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.") &&
641 if(!(z=lz_enter_zone(zones, "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.", "static",
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
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.")) {
767 init_parents(struct local_zones* zones)
771 lock_rw_wrlock(&zones->lock);
772 RBTREE_FOR(node, struct local_zone*, &zones->ztree) {
796 lock_rw_unlock(&zones->lock);
801 lz_setup_implicit(struct local_zones* zones, struct config_file* cfg)
815 init_parents(zones); /* to enable local_zones_lookup() */
826 lock_rw_rdlock(&zones->lock);
827 if(!local_zones_lookup(zones, rr_name, len, labs, rr_class)) {
841 lock_rw_unlock(&zones->lock);
852 lock_rw_unlock(&zones->lock);
868 if(!(z=lz_enter_zone_dname(zones, n2, nmlen, match,
876 return lz_setup_implicit(zones, cfg);
883 lz_enter_data(struct local_zones* zones, struct config_file* cfg)
887 if(!lz_enter_rr_str(zones, p->str))
906 local_zones_apply_cfg(struct local_zones* zones, struct config_file* cfg)
908 /* create zones from zone statements. */
909 if(!lz_enter_zones(zones, cfg)) {
912 /* apply default zones+content (unless disabled, or overridden) */
913 if(!lz_enter_defaults(zones, cfg)) {
917 if(!lz_setup_implicit(zones, cfg)) {
922 init_parents(zones);
924 if(!lz_enter_data(zones, cfg)) {
933 local_zones_lookup(struct local_zones* zones,
944 if(rbtree_find_less_equal(&zones->ztree, &key, &res)) {
966 local_zones_find(struct local_zones* zones,
976 return (struct local_zone*)rbtree_search(&zones->ztree, &key);
994 void local_zones_print(struct local_zones* zones)
997 lock_rw_rdlock(&zones->lock);
998 log_info("number of auth zones %u", (unsigned)zones->ztree.count);
999 RBTREE_FOR(z, struct local_zone*, &zones->ztree) {
1038 lock_rw_unlock(&zones->lock);
1193 local_zones_answer(struct local_zones* zones, struct query_info* qinfo,
1204 lock_rw_rdlock(&zones->lock);
1205 z = local_zones_lookup(zones, qinfo->qname,
1208 lock_rw_unlock(&zones->lock);
1212 lock_rw_unlock(&zones->lock);
1266 /* both zones and z are locked already */
1287 struct local_zone* local_zones_add_zone(struct local_zones* zones,
1297 z->parent = local_zones_find(zones, name, len, labs, dclass);
1300 if(!rbtree_insert(&zones->ztree, &z->node)) {
1315 void local_zones_del_zone(struct local_zones* zones, struct local_zone* z)
1322 (void)rbtree_delete(&zones->ztree, z);
1330 local_zones_add_RR(struct local_zones* zones, const char* rr)
1344 lock_rw_wrlock(&zones->lock);
1345 z = local_zones_lookup(zones, rr_name, len, labs, rr_class);
1347 z = local_zones_add_zone(zones, rr_name, len, labs, rr_class,
1350 lock_rw_unlock(&zones->lock);
1357 lock_rw_unlock(&zones->lock);
1397 void local_zones_del_data(struct local_zones* zones,
1403 lock_rw_rdlock(&zones->lock);
1404 z = local_zones_lookup(zones, name, len, labs, dclass);
1407 lock_rw_unlock(&zones->lock);
1411 lock_rw_unlock(&zones->lock);