00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef DNS_GEOIP_H
00018 #define DNS_GEOIP_H 1
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include <isc/lang.h>
00034 #include <isc/magic.h>
00035 #include <isc/netaddr.h>
00036 #include <isc/refcount.h>
00037
00038 #include <dns/name.h>
00039 #include <dns/types.h>
00040 #include <dns/iptable.h>
00041
00042 #ifdef HAVE_GEOIP
00043 #include <GeoIP.h>
00044 #else
00045 typedef void GeoIP;
00046 #endif
00047
00048
00049
00050
00051
00052 typedef enum {
00053 dns_geoip_countrycode,
00054 dns_geoip_countrycode3,
00055 dns_geoip_countryname,
00056 dns_geoip_region,
00057 dns_geoip_regionname,
00058 dns_geoip_country_code,
00059 dns_geoip_country_code3,
00060 dns_geoip_country_name,
00061 dns_geoip_region_countrycode,
00062 dns_geoip_region_code,
00063 dns_geoip_region_name,
00064 dns_geoip_city_countrycode,
00065 dns_geoip_city_countrycode3,
00066 dns_geoip_city_countryname,
00067 dns_geoip_city_region,
00068 dns_geoip_city_regionname,
00069 dns_geoip_city_name,
00070 dns_geoip_city_postalcode,
00071 dns_geoip_city_metrocode,
00072 dns_geoip_city_areacode,
00073 dns_geoip_city_continentcode,
00074 dns_geoip_city_timezonecode,
00075 dns_geoip_isp_name,
00076 dns_geoip_org_name,
00077 dns_geoip_as_asnum,
00078 dns_geoip_domain_name,
00079 dns_geoip_netspeed_id
00080 } dns_geoip_subtype_t;
00081
00082 typedef struct dns_geoip_elem {
00083 dns_geoip_subtype_t subtype;
00084 GeoIP *db;
00085 union {
00086 char as_string[256];
00087 int as_int;
00088 };
00089 } dns_geoip_elem_t;
00090
00091 typedef struct dns_geoip_databases {
00092 GeoIP *country_v4;
00093 GeoIP *city_v4;
00094 GeoIP *region;
00095 GeoIP *isp;
00096 GeoIP *org;
00097 GeoIP *as;
00098 GeoIP *netspeed;
00099 GeoIP *domain;
00100 GeoIP *country_v6;
00101 GeoIP *city_v6;
00102 } dns_geoip_databases_t;
00103
00104
00105
00106
00107
00108 ISC_LANG_BEGINDECLS
00109
00110 isc_boolean_t
00111 dns_geoip_match(const isc_netaddr_t *reqaddr, isc_uint8_t *scope,
00112 const dns_geoip_databases_t *geoip,
00113 const dns_geoip_elem_t *elt);
00114
00115 void
00116 dns_geoip_shutdown(void);
00117
00118 ISC_LANG_ENDDECLS
00119 #endif