rpz.h revision 4f3a3fc43c6e2de62997d2378e87b4248cf771ae
9cee5bb02863bf191e12cd4297adabf1971020deAutomatic Updater * Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * Permission to use, copy, modify, and/or distribute this software for any
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * purpose with or without fee is hereby granted, provided that the above
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * copyright notice and this permission notice appear in all copies.
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * PERFORMANCE OF THIS SOFTWARE.
7b4b6f361b2fb2291c2019b377a9c0c8e80cfd6bMark Andrews/* $Id: rpz.h,v 1.5 2011/10/28 11:46:50 marka Exp $ */
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewstypedef enum {
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver * Require DNS_RPZ_POLICY_PASSTHRU < DNS_RPZ_POLICY_NXDOMAIN <
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver * DNS_RPZ_POLICY_NODATA < DNS_RPZ_POLICY_CNAME to choose among competing
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewstypedef enum {
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver DNS_RPZ_POLICY_GIVEN = 0, /* 'given': what policy record says */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver DNS_RPZ_POLICY_DISABLED = 1, /* 'cname x': answer with x's rrsets */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver DNS_RPZ_POLICY_PASSTHRU = 2, /* 'passthru': do not rewrite */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver DNS_RPZ_POLICY_NXDOMAIN = 3, /* 'nxdomain': answer with NXDOMAIN */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver DNS_RPZ_POLICY_NODATA = 4, /* 'nodata': answer with ANCOUNT=0 */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver DNS_RPZ_POLICY_CNAME = 5, /* 'cname x': answer with x's rrsets */
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * Specify a response policy zone.
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver dns_name_t nsdname; /* DNS_RPZ_NSDNAME_ZONE.origin */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver dns_rpz_policy_t policy; /* DNS_RPZ_POLICY_GIVEN or override */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver dns_name_t cname; /* override value for ..._CNAME */
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * Radix trees for response policy IP addresses.
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * context for finding the best policy
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewstypedef struct {
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews unsigned int state;
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver# define DNS_RPZ_DONE_QNAME 0x0002 /* qname checked */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver# define DNS_RPZ_DONE_QNAME_IP 0x0004 /* IP addresses of qname checked */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver# define DNS_RPZ_DONE_NSDNAME 0x0008 /* NS name missed; checking addresses */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver# define DNS_RPZ_HAVE_IP 0x0040 /* a policy zone has IP addresses */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver# define DNS_RPZ_HAVE_NSIPv4 0x0080 /* IPv4 NISP addresses */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver# define DNS_RPZ_HAVE_NSIPv6 0x0100 /* IPv6 NISP addresses */
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver# define DNS_RPZ_HAVE_NSDNAME 0x0200 /* NS names */
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * Best match so far.
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver * State for chasing IP addresses and NS names including recursion.
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews unsigned int label;
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * State of real query while recursing for NSIP or NSDNAME.
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews * So various response policy zone messages can be turned up or down.
9fee08f655527a5dd849b171daeeee1dbbccca76Vernon Schryver#define DNS_RPZ_DEBUG_LEVEL3 ISC_LOG_DEBUG(3)
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewsdns_rpz_new_cidr(isc_mem_t *mctx, dns_name_t *origin,
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewsdns_rpz_enabled(dns_rpz_cidr_t *cidr, dns_rpz_st_t *st);
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewsdns_rpz_cidr_deleteip(dns_rpz_cidr_t *cidr, dns_name_t *name);
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewsdns_rpz_cidr_addip(dns_rpz_cidr_t *cidr, dns_name_t *name);
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewsdns_rpz_cidr_find(dns_rpz_cidr_t *cidr, const isc_netaddr_t *netaddr,
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews dns_name_t *search_name, dns_rpz_cidr_bits_t *prefix);
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrewsdns_rpz_decode_cname(dns_rdataset_t *, dns_name_t *selfname);
87708bde16713bc02ff2598f4a82f98c699a2f2dMark Andrews#endif /* DNS_RPZ_H */