#include "util/rbtree.h"
Data Structures | |
| struct | local_zones |
| Authoritative local zones storage, shared. More... | |
| struct | local_zone |
| Local zone. More... | |
| struct | local_data |
| Local data. More... | |
| struct | local_rrset |
| A local data RRset. More... | |
Enumerations | |
| enum | localzone_type { local_zone_deny = 0, local_zone_refuse, local_zone_static, local_zone_transparent, local_zone_redirect, local_zone_nodefault } |
| Local zone type This type determines processing for queries that did not match local-data directly. More... | |
Functions | |
| struct local_zones * | local_zones_create () |
| Create local zones storage. | |
| void | local_zones_delete (struct local_zones *zones) |
| Delete local zones storage. | |
| int | local_zones_apply_cfg (struct local_zones *zones, struct config_file *cfg) |
| Apply config settings; setup the local authoritative data. | |
| int | local_zone_cmp (const void *z1, const void *z2) |
| Compare two local_zone entries in rbtree. | |
| int | local_data_cmp (const void *d1, const void *d2) |
| Compare two local_data entries in rbtree. | |
| void | local_zone_delete (struct local_zone *z) |
| Delete one zone. | |
| struct local_zone * | local_zones_lookup (struct local_zones *zones, uint8_t *name, size_t len, int labs, uint16_t dclass) |
| Lookup zone that contains the given name, class. | |
| void | local_zones_print (struct local_zones *zones) |
| Debug helper. | |
| int | local_zones_answer (struct local_zones *zones, struct query_info *qinfo, struct edns_data *edns, ldns_buffer *buf, struct regional *temp) |
| Answer authoritatively for local zones. | |
| enum localzone_type |
Local zone type This type determines processing for queries that did not match local-data directly.
| struct local_zones* local_zones_create | ( | ) | [read] |
Create local zones storage.
References local_zone_cmp(), rbtree_init(), and local_zones::ztree.
Referenced by context_finalize(), daemon_fork(), and localzonechecks().
| void local_zones_delete | ( | struct local_zones * | zones | ) |
Delete local zones storage.
| zones,: | to delete. |
References lzdel(), traverse_postorder(), and local_zones::ztree.
Referenced by daemon_cleanup(), localzonechecks(), and ub_ctx_delete().
| int local_zones_apply_cfg | ( | struct local_zones * | zones, | |
| struct config_file * | cfg | |||
| ) |
Apply config settings; setup the local authoritative data.
| zones,: | is set up. | |
| cfg,: | config data. |
References fatal_exit(), init_parents(), lz_enter_data(), lz_enter_defaults(), lz_enter_zones(), lz_freeup_cfg(), and lz_setup_implicit().
Referenced by context_finalize(), daemon_fork(), and localzonechecks().
| int local_zone_cmp | ( | const void * | z1, | |
| const void * | z2 | |||
| ) |
Compare two local_zone entries in rbtree.
Sort hierarchical but not canonical
| z1,: | zone 1 | |
| z2,: | zone 2 |
References local_zone::dclass, dname_lab_cmp(), local_zone::name, and local_zone::namelabs.
Referenced by fptr_whitelist_rbtree_cmp(), and local_zones_create().
| int local_data_cmp | ( | const void * | d1, | |
| const void * | d2 | |||
| ) |
Compare two local_data entries in rbtree.
Sort canonical.
| d1,: | data 1 | |
| d2,: | data 2 |
References dname_canon_lab_cmp(), local_data::name, and local_data::namelabs.
Referenced by fptr_whitelist_rbtree_cmp(), and lz_enter_zone_dname().
| void local_zone_delete | ( | struct local_zone * | z | ) |
Delete one zone.
| z,: | to delete. |
References local_zone::name, local_zone::region, and regional_destroy().
Referenced by lz_enter_zone_dname(), and lzdel().
| struct local_zone* local_zones_lookup | ( | struct local_zones * | zones, | |
| uint8_t * | name, | |||
| size_t | len, | |||
| int | labs, | |||
| uint16_t | dclass | |||
| ) | [read] |
Lookup zone that contains the given name, class.
| zones,: | the zones tree | |
| name,: | dname to lookup | |
| len,: | length of name. | |
| labs,: | labelcount of name. | |
| dclass,: | class to lookup. |
References local_zone::dclass, dname_lab_cmp(), rbnode_t::key, local_zone::name, local_zone::namelabs, local_zone::namelen, local_zone::node, local_zone::parent, rbtree_find_less_equal(), and local_zones::ztree.
Referenced by local_zones_answer(), lz_enter_rr_str(), and lz_setup_implicit().
| void local_zones_print | ( | struct local_zones * | zones | ) |
Debug helper.
Print all zones
| zones,: | the zones tree |
References rbtree_t::count, local_zone::dclass, local_zone_deny, local_zone_out(), local_zone_redirect, local_zone_refuse, local_zone_static, local_zone_transparent, log_info(), log_nametypeclass(), local_zone::name, RBTREE_FOR, local_zone::type, and local_zones::ztree.
| int local_zones_answer | ( | struct local_zones * | zones, | |
| struct query_info * | qinfo, | |||
| struct edns_data * | edns, | |||
| ldns_buffer * | buf, | |||
| struct regional * | temp | |||
| ) |
Answer authoritatively for local zones.
| zones,: | the stored zones (shared, read only). | |
| qinfo,: | query info (parsed). | |
| edns,: | edns info (parsed). | |
| buf,: | buffer with query ID and flags, also for reply. | |
| temp,: | temporary storage region. |
References dname_count_labels(), local_data_answer(), local_zones_lookup(), lz_zone_answer(), query_info::qclass, query_info::qname, and query_info::qname_len.
Referenced by handle_newq(), libworker_fg(), and worker_handle_request().
1.5.6