Current File : //proc/thread-self/root/kunden/kunden/usr/include/spf2/spf_dns_zone.h |
/*
* 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