00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef DNS_IPTABLE_H
00020 #define DNS_IPTABLE_H 1
00021
00022 #include <isc/lang.h>
00023 #include <isc/magic.h>
00024 #include <isc/radix.h>
00025
00026 #include <dns/types.h>
00027
00028 struct dns_iptable {
00029 unsigned int magic;
00030 isc_mem_t *mctx;
00031 isc_refcount_t refcount;
00032 isc_radix_tree_t *radix;
00033 ISC_LINK(dns_iptable_t) nextincache;
00034 };
00035
00036 #define DNS_IPTABLE_MAGIC ISC_MAGIC('T','a','b','l')
00037 #define DNS_IPTABLE_VALID(a) ISC_MAGIC_VALID(a, DNS_IPTABLE_MAGIC)
00038
00039
00040
00041
00042
00043 ISC_LANG_BEGINDECLS
00044
00045 isc_result_t
00046 dns_iptable_create(isc_mem_t *mctx, dns_iptable_t **target);
00047
00048
00049
00050
00051 isc_result_t
00052 dns_iptable_addprefix(dns_iptable_t *tab, isc_netaddr_t *addr,
00053 isc_uint16_t bitlen, isc_boolean_t pos);
00054 isc_result_t
00055 dns_iptable_addprefix2(dns_iptable_t *tab, isc_netaddr_t *addr,
00056 isc_uint16_t bitlen, isc_boolean_t pos,
00057 isc_boolean_t is_ecs);
00058
00059
00060
00061
00062 isc_result_t
00063 dns_iptable_merge(dns_iptable_t *tab, dns_iptable_t *source, isc_boolean_t pos);
00064
00065
00066
00067
00068 void
00069 dns_iptable_attach(dns_iptable_t *source, dns_iptable_t **target);
00070
00071 void
00072 dns_iptable_detach(dns_iptable_t **tabp);
00073
00074 ISC_LANG_ENDDECLS
00075
00076 #endif