Lines Matching refs:rpz

97 dns_rpz_update_from_db(dns_rpz_zone_t *rpz);
784 type_from_name(const dns_rpz_zones_t *rpzs, dns_rpz_zone_t *rpz, in type_from_name() argument
786 if (dns_name_issubdomain(name, &rpz->ip)) { in type_from_name()
790 if (dns_name_issubdomain(name, &rpz->client_ip)) { in type_from_name()
794 if ((rpzs->p.nsip_on & DNS_RPZ_ZBIT(rpz->num)) != 0 && in type_from_name()
795 dns_name_issubdomain(name, &rpz->nsip)) in type_from_name()
800 if ((rpzs->p.nsdname_on & DNS_RPZ_ZBIT(rpz->num)) != 0 && in type_from_name()
801 dns_name_issubdomain(name, &rpz->nsdname)) in type_from_name()
819 dns_rpz_zone_t *rpz; in name2ipkey() local
833 rpz = rpzs->zones[rpz_num]; in name2ipkey()
834 REQUIRE(rpz != NULL); in name2ipkey()
840 ip_labels -= dns_name_countlabels(&rpz->origin); in name2ipkey()
842 ip_labels -= dns_name_countlabels(&rpz->nsdname); in name2ipkey()
999 dns_rpz_zone_t *rpz; in name2data() local
1005 rpz = rpzs->zones[rpz_num]; in name2data()
1006 REQUIRE(rpz != NULL); in name2data()
1027 n -= dns_name_countlabels(&rpz->origin); in name2data()
1029 n -= dns_name_countlabels(&rpz->nsdname); in name2data()
1700 setup_update(dns_rpz_zone_t *rpz) { in setup_update() argument
1706 dns_name_format(&rpz->origin, domain, DNS_NAME_FORMATSIZE); in setup_update()
1710 nodecount = dns_db_nodecount(rpz->updb); in setup_update()
1726 result = isc_ht_init(&rpz->newnodes, rpz->rpzs->mctx, hashsize); in setup_update()
1735 result = dns_db_createiterator(rpz->updb, DNS_DB_NONSEC3, &rpz->updbit); in setup_update()
1744 result = dns_dbiterator_first(rpz->updbit); in setup_update()
1753 result = dns_dbiterator_pause(rpz->updbit); in setup_update()
1764 if (rpz->updbit != NULL) { in setup_update()
1765 dns_dbiterator_destroy(&rpz->updbit); in setup_update()
1767 if (rpz->newnodes != NULL) { in setup_update()
1768 isc_ht_destroy(&rpz->newnodes); in setup_update()
1770 dns_db_closeversion(rpz->updb, &rpz->updbversion, false); in setup_update()
1777 finish_update(dns_rpz_zone_t *rpz) { in finish_update() argument
1778 LOCK(&rpz->rpzs->maint_lock); in finish_update()
1779 rpz->updaterunning = false; in finish_update()
1784 if (rpz->updatepending) { in finish_update()
1785 if (rpz->min_update_interval > 0) { in finish_update()
1786 uint64_t defer = rpz->min_update_interval; in finish_update()
1790 dns_name_format(&rpz->origin, dname, in finish_update()
1799 isc_timer_reset(rpz->updatetimer, isc_timertype_once, in finish_update()
1803 INSIST(!ISC_LINK_LINKED(&rpz->updateevent, ev_link)); in finish_update()
1804 ISC_EVENT_INIT(&rpz->updateevent, in finish_update()
1805 sizeof(rpz->updateevent), 0, NULL, in finish_update()
1807 dns_rpz_update_taskaction, rpz, rpz, in finish_update()
1809 event = &rpz->updateevent; in finish_update()
1810 isc_task_send(rpz->rpzs->updater, &event); in finish_update()
1813 UNLOCK(&rpz->rpzs->maint_lock); in finish_update()
1820 dns_rpz_zone_t *rpz = NULL; in cleanup_quantum() local
1831 rpz = (dns_rpz_zone_t *)event->ev_sender; in cleanup_quantum()
1840 result = isc_ht_iter_create(rpz->nodes, &iter); in cleanup_quantum()
1842 dns_name_format(&rpz->origin, domain, in cleanup_quantum()
1855 LOCK(&rpz->rpzs->maint_lock); in cleanup_quantum()
1858 if (rpz->rpzs->zones[rpz->num] == NULL) { in cleanup_quantum()
1859 UNLOCK(&rpz->rpzs->maint_lock); in cleanup_quantum()
1875 dns_rpz_delete(rpz->rpzs, rpz->num, name); in cleanup_quantum()
1885 INSIST(!ISC_LINK_LINKED(&rpz->updateevent, ev_link)); in cleanup_quantum()
1886 ISC_EVENT_INIT(&rpz->updateevent, sizeof(rpz->updateevent), 0, in cleanup_quantum()
1888 iter, rpz, NULL, NULL); in cleanup_quantum()
1889 nevent = &rpz->updateevent; in cleanup_quantum()
1890 isc_task_send(rpz->rpzs->updater, &nevent); in cleanup_quantum()
1891 UNLOCK(&rpz->rpzs->maint_lock); in cleanup_quantum()
1900 tmpht = rpz->nodes; in cleanup_quantum()
1901 rpz->nodes = rpz->newnodes; in cleanup_quantum()
1902 rpz->newnodes = tmpht; in cleanup_quantum()
1904 UNLOCK(&rpz->rpzs->maint_lock); in cleanup_quantum()
1905 finish_update(rpz); in cleanup_quantum()
1906 dns_name_format(&rpz->origin, domain, DNS_NAME_FORMATSIZE); in cleanup_quantum()
1911 UNLOCK(&rpz->rpzs->maint_lock); in cleanup_quantum()
1921 if (rpz->newnodes != NULL) { in cleanup_quantum()
1922 isc_ht_destroy(&rpz->newnodes); in cleanup_quantum()
1924 dns_db_closeversion(rpz->updb, &rpz->updbversion, false); in cleanup_quantum()
1925 dns_db_detach(&rpz->updb); in cleanup_quantum()
1926 rpz_detach(&rpz); in cleanup_quantum()
1933 dns_rpz_zone_t *rpz = NULL; in update_quantum() local
1945 rpz = (dns_rpz_zone_t *)event->ev_arg; in update_quantum()
1948 REQUIRE(rpz->updbit != NULL); in update_quantum()
1949 REQUIRE(rpz->newnodes != NULL); in update_quantum()
1953 dns_name_format(&rpz->origin, domain, DNS_NAME_FORMATSIZE); in update_quantum()
1955 LOCK(&rpz->rpzs->maint_lock); in update_quantum()
1958 if (rpz->rpzs->zones[rpz->num] == NULL) { in update_quantum()
1959 UNLOCK(&rpz->rpzs->maint_lock); in update_quantum()
1967 result = dns_dbiterator_current(rpz->updbit, &node, name); in update_quantum()
1973 dns_db_detachnode(rpz->updb, &node); in update_quantum()
1977 result = dns_db_allrdatasets(rpz->updb, node, rpz->updbversion, in update_quantum()
1985 dns_db_detachnode(rpz->updb, &node); in update_quantum()
2000 dns_db_detachnode(rpz->updb, &node); in update_quantum()
2001 result = dns_dbiterator_next(rpz->updbit); in update_quantum()
2006 result = isc_ht_add(rpz->newnodes, name->ndata, name->length, in update_quantum()
2007 rpz); in update_quantum()
2015 dns_db_detachnode(rpz->updb, &node); in update_quantum()
2016 result = dns_dbiterator_next(rpz->updbit); in update_quantum()
2020 result = isc_ht_find(rpz->nodes, name->ndata, name->length, in update_quantum()
2023 isc_ht_delete(rpz->nodes, name->ndata, name->length); in update_quantum()
2025 result = dns_rpz_add(rpz->rpzs, rpz->num, name); in update_quantum()
2045 dns_db_detachnode(rpz->updb, &node); in update_quantum()
2046 result = dns_dbiterator_next(rpz->updbit); in update_quantum()
2053 dns_dbiterator_pause(rpz->updbit); in update_quantum()
2058 INSIST(!ISC_LINK_LINKED(&rpz->updateevent, ev_link)); in update_quantum()
2059 ISC_EVENT_INIT(&rpz->updateevent, sizeof(rpz->updateevent), 0, in update_quantum()
2060 NULL, DNS_EVENT_RPZUPDATED, update_quantum, rpz, in update_quantum()
2061 rpz, NULL, NULL); in update_quantum()
2062 nevent = &rpz->updateevent; in update_quantum()
2063 isc_task_send(rpz->rpzs->updater, &nevent); in update_quantum()
2064 UNLOCK(&rpz->rpzs->maint_lock); in update_quantum()
2071 dns_dbiterator_destroy(&rpz->updbit); in update_quantum()
2073 INSIST(!ISC_LINK_LINKED(&rpz->updateevent, ev_link)); in update_quantum()
2074 ISC_EVENT_INIT(&rpz->updateevent, sizeof(rpz->updateevent), 0, in update_quantum()
2076 NULL, rpz, NULL, NULL); in update_quantum()
2077 nevent = &rpz->updateevent; in update_quantum()
2078 isc_task_send(rpz->rpzs->updater, &nevent); in update_quantum()
2079 UNLOCK(&rpz->rpzs->maint_lock); in update_quantum()
2086 UNLOCK(&rpz->rpzs->maint_lock); in update_quantum()
2089 if (rpz->updbit != NULL) { in update_quantum()
2090 dns_dbiterator_destroy(&rpz->updbit); in update_quantum()
2092 if (rpz->newnodes != NULL) { in update_quantum()
2093 isc_ht_destroy(&rpz->newnodes); in update_quantum()
2095 dns_db_closeversion(rpz->updb, &rpz->updbversion, false); in update_quantum()
2096 dns_db_detach(&rpz->updb); in update_quantum()
2097 rpz_detach(&rpz); in update_quantum()
2101 dns_rpz_update_from_db(dns_rpz_zone_t *rpz) { in dns_rpz_update_from_db() argument
2105 REQUIRE(rpz != NULL); in dns_rpz_update_from_db()
2106 REQUIRE(DNS_DB_VALID(rpz->db)); in dns_rpz_update_from_db()
2107 REQUIRE(rpz->updb == NULL); in dns_rpz_update_from_db()
2108 REQUIRE(rpz->updbversion == NULL); in dns_rpz_update_from_db()
2109 REQUIRE(rpz->updbit == NULL); in dns_rpz_update_from_db()
2110 REQUIRE(rpz->newnodes == NULL); in dns_rpz_update_from_db()
2112 isc_refcount_increment(&rpz->refs); in dns_rpz_update_from_db()
2113 dns_db_attach(rpz->db, &rpz->updb); in dns_rpz_update_from_db()
2114 rpz->updbversion = rpz->dbversion; in dns_rpz_update_from_db()
2115 rpz->dbversion = NULL; in dns_rpz_update_from_db()
2117 result = setup_update(rpz); in dns_rpz_update_from_db()
2122 event = &rpz->updateevent; in dns_rpz_update_from_db()
2123 INSIST(!ISC_LINK_LINKED(&rpz->updateevent, ev_link)); in dns_rpz_update_from_db()
2124 ISC_EVENT_INIT(&rpz->updateevent, sizeof(rpz->updateevent), 0, NULL, in dns_rpz_update_from_db()
2125 DNS_EVENT_RPZUPDATED, update_quantum, rpz, rpz, NULL, in dns_rpz_update_from_db()
2127 isc_task_send(rpz->rpzs->updater, &event); in dns_rpz_update_from_db()
2131 if (rpz->updbit != NULL) { in dns_rpz_update_from_db()
2132 dns_dbiterator_destroy(&rpz->updbit); in dns_rpz_update_from_db()
2134 if (rpz->newnodes != NULL) { in dns_rpz_update_from_db()
2135 isc_ht_destroy(&rpz->newnodes); in dns_rpz_update_from_db()
2137 dns_db_closeversion(rpz->updb, &rpz->updbversion, false); in dns_rpz_update_from_db()
2138 dns_db_detach(&rpz->updb); in dns_rpz_update_from_db()
2139 rpz_detach(&rpz); in dns_rpz_update_from_db()
2181 dns_rpz_zone_t *rpz; in rpz_detach() local
2186 rpz = *rpzp; in rpz_detach()
2189 if (isc_refcount_decrement(&rpz->refs) == 1) { in rpz_detach()
2190 isc_refcount_destroy(&rpz->refs); in rpz_detach()
2192 rpzs = rpz->rpzs; in rpz_detach()
2193 rpz->rpzs = NULL; in rpz_detach()
2195 if (dns_name_dynamic(&rpz->origin)) { in rpz_detach()
2196 dns_name_free(&rpz->origin, rpzs->mctx); in rpz_detach()
2198 if (dns_name_dynamic(&rpz->client_ip)) { in rpz_detach()
2199 dns_name_free(&rpz->client_ip, rpzs->mctx); in rpz_detach()
2201 if (dns_name_dynamic(&rpz->ip)) { in rpz_detach()
2202 dns_name_free(&rpz->ip, rpzs->mctx); in rpz_detach()
2204 if (dns_name_dynamic(&rpz->nsdname)) { in rpz_detach()
2205 dns_name_free(&rpz->nsdname, rpzs->mctx); in rpz_detach()
2207 if (dns_name_dynamic(&rpz->nsip)) { in rpz_detach()
2208 dns_name_free(&rpz->nsip, rpzs->mctx); in rpz_detach()
2210 if (dns_name_dynamic(&rpz->passthru)) { in rpz_detach()
2211 dns_name_free(&rpz->passthru, rpzs->mctx); in rpz_detach()
2213 if (dns_name_dynamic(&rpz->drop)) { in rpz_detach()
2214 dns_name_free(&rpz->drop, rpzs->mctx); in rpz_detach()
2216 if (dns_name_dynamic(&rpz->tcp_only)) { in rpz_detach()
2217 dns_name_free(&rpz->tcp_only, rpzs->mctx); in rpz_detach()
2219 if (dns_name_dynamic(&rpz->cname)) { in rpz_detach()
2220 dns_name_free(&rpz->cname, rpzs->mctx); in rpz_detach()
2222 if (rpz->db != NULL) { in rpz_detach()
2223 if (rpz->dbversion != NULL) { in rpz_detach()
2224 dns_db_closeversion(rpz->db, &rpz->dbversion, in rpz_detach()
2228 rpz->db, dns_rpz_dbupdate_callback, rpz); in rpz_detach()
2229 dns_db_detach(&rpz->db); in rpz_detach()
2231 if (rpz->updaterunning) { in rpz_detach()
2232 isc_task_purgeevent(rpzs->updater, &rpz->updateevent); in rpz_detach()
2233 if (rpz->updbit != NULL) { in rpz_detach()
2234 dns_dbiterator_destroy(&rpz->updbit); in rpz_detach()
2236 if (rpz->newnodes != NULL) { in rpz_detach()
2237 isc_ht_destroy(&rpz->newnodes); in rpz_detach()
2239 if (rpz->updb != NULL) { in rpz_detach()
2240 if (rpz->updbversion != NULL) { in rpz_detach()
2241 dns_db_closeversion(rpz->updb, in rpz_detach()
2242 &rpz->updbversion, in rpz_detach()
2245 dns_db_detach(&rpz->updb); in rpz_detach()
2249 isc_timer_reset(rpz->updatetimer, isc_timertype_inactive, NULL, in rpz_detach()
2251 isc_timer_detach(&rpz->updatetimer); in rpz_detach()
2253 isc_ht_destroy(&rpz->nodes); in rpz_detach()
2255 isc_mem_put(rpzs->mctx, rpz, sizeof(*rpz)); in rpz_detach()
2284 dns_rpz_zone_t *rpz = rpzs->zones[rpz_num]; in dns_rpz_detach_rpzs() local
2286 if (rpz != NULL) { in dns_rpz_detach_rpzs()
2287 rpz_detach(&rpz); in dns_rpz_detach_rpzs()
2354 dns_rpz_zone_t *rpz; in dns_rpz_add() local
2359 rpz = rpzs->zones[rpz_num]; in dns_rpz_add()
2360 REQUIRE(rpz != NULL); in dns_rpz_add()
2363 rpz_type = type_from_name(rpzs, rpz, src_name); in dns_rpz_add()
2563 dns_rpz_zone_t *rpz; in dns_rpz_delete() local
2567 rpz = rpzs->zones[rpz_num]; in dns_rpz_delete()
2568 REQUIRE(rpz != NULL); in dns_rpz_delete()
2572 rpz_type = type_from_name(rpzs, rpz, src_name); in dns_rpz_delete()
2839 dns_rpz_decode_cname(dns_rpz_zone_t *rpz, dns_rdataset_t *rdataset, in dns_rpz_decode_cname() argument
2881 if (dns_name_equal(&cname.cname, &rpz->tcp_only)) { in dns_rpz_decode_cname()
2888 if (dns_name_equal(&cname.cname, &rpz->drop)) { in dns_rpz_decode_cname()
2895 if (dns_name_equal(&cname.cname, &rpz->passthru)) { in dns_rpz_decode_cname()