PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` /* * This program is free software; you can redistribute it and/or modify * it under the terms of either: * * a) The GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1, or (at your option) any * later version, * * OR * * b) The two-clause BSD license. * * These licenses can be found with the distribution in the file LICENSES */ #ifndef INC_SPF_DNS_ZONE #define INC_SPF_DNS_ZONE /** * @file * @brief A local DNS zone layer. * * The zone DNS layer allows you to create DNS zone information from * scratch, without calling some sort of external DNS resolver. * * The primary use is to either override real DNS information, or to * provide fallbacks when no DNS information is available. The zone * will override the real DNS information if it is above the resolving * DNS layer in the stack. It will provide a fallback if it is * layered below. * * The zone DNS layer supports wildcard domain names, but not in the * way that wilcards are supported in real DNS zones. Unlike real DNS * zones, a wildcard in the zone layer will match even if there are * other records of a different RR type in the same zone. This makes * wildcarding much more useful, but could cause confusion. * * When using wildcards, it is important to add the most specific DNS * zone data first, and the most general data last. Otherwise, the * more general information will always be returned. This should * probably be considered a bug and may be fixed in the future. * * For example, if you want to add entries with the same RR type for * "foo.foo.example.com", "*.foo.example.com" and "*.example.com", you * should add them in this order. * * You can also add entries with the RR type of ns_t_any, which will * match any type of RR query. This is most useful when you want to * wildcard HOST_NOT_FOUND entries to prevent queries of any type from * being fetched from a lower DNS layer. * * * For an overview of the DNS layer system, see spf_dns.h */ /** * These routines take care of creating/destroying/etc. the objects * that hold the DNS layer configuration. SPF_dns_server_t objects contain * malloc'ed data, so they must be destroyed when you are finished * with them, or you will leak memory. * * The "name" will be used when displaying debugging information so * that you can tell which zone layer in the stack of DNS layers * generated the output. */ SPF_dns_server_t *SPF_dns_zone_new(SPF_dns_server_t *layer_below, const char *name, int debug); /** * Adds an entry to a DNS zone. * * If a given domain name has multiple records of a given RR type, you * can call the add routine multiple times to add to the RR set. */ SPF_errcode_t SPF_dns_zone_add_str(SPF_dns_server_t *spf_dns_server, const char *domain, ns_type rr_type, SPF_dns_stat_t herrno, const char *data); #endif