33 #define RBWL_ONMATCH_CONTINUE 1 35 #define RBWL_CHECK_ADDR 4 36 #define RBWL_CHECK_NAME 8 37 #define RBWL_CHECK_ALL (RBWL_CHECK_ADDR | RBWL_CHECK_NAME) 55 if ((ip == NULL || strlen(ip) == 0) && (name == NULL || strlen(name) == 0)) {
60 if ((code != NULL) && (size <= 0)) {
65 if ((rbwl == NULL) || (strlen(rbwl) == 0)) {
70 if (ip != NULL && strlen(ip) > 0) {
76 memset(domain, 0,
sizeof (domain));
87 snprintf(s,
sizeof (s),
"%s.", argv[argc]);
88 strlcat(domain, s,
sizeof (domain));
91 strlcat(domain, rbwl,
sizeof (domain));
99 for (i = 0; i < a.
count; i++) {
113 if (name == NULL || strlen(name) == 0)
116 if (strpbrk(name,
"[]") != NULL)
124 snprintf(domain,
sizeof (domain),
"%s.%s", name, rbwl);
130 for (i = 0; i < a.
count; i++) {
176 static pthread_mutex_t rbwl_mutex = PTHREAD_MUTEX_INITIALIZER;
178 #define RBWL_LOCK() \ 179 if (pthread_mutex_lock(&rbwl_mutex) != 0) { \ 180 ZE_LogSysError("pthread_mutex_lock(rbwl_mutex)"); \ 183 #define RBWL_UNLOCK() \ 184 if (pthread_mutex_unlock(&rbwl_mutex) != 0) { \ 185 ZE_LogSysError("pthread_mutex_unlock(rbwl_mutex)"); \ 196 #define KEYVALUE "^[a-z0-9_-]+=[^ \t]+" 199 read_iprbwl_line(v, arg)
203 char *s = (
char *) v;
209 memset(&r, 0,
sizeof (r));
216 n = strcspn(s,
" \t");
221 for (i = 0; i < argc; i++) {
260 for (j = 0; j < argxc; j++) {
282 for (j = 0; j < argxc; j++) {
324 if (strlen(r.
code) == 0)
331 ipRbwl.
rbwl[ipRbwl.
nb] = r;
346 r =
zm_RdFile(path, tag, read_iprbwl_line, NULL);
362 memset(ipRbwl.
rbwl, 0, sizeof (ipRbwl.
rbwl));
384 memset(ipRbwl.
rbwl, 0, sizeof (ipRbwl.
rbwl));
403 printf(
"<DNS-IP-RBWL>\n");
405 for (i = 0; i < ipRbwl.
nb; i++) {
410 printf(
"%-20s netclass=%s; odds=%.4f; code=%s; onmatch=%s; checks=%s\n",
414 printf(
"</DNS-IP-RBWL>\n");
423 get_rbwl_rec(i, rbwl)
431 *rbwl = ipRbwl.
rbwl[i];
455 if (!get_rbwl_rec(i, &r))
458 paddr = pname = NULL;
483 for (j = 0; j < argc; j++) {
509 lodds += log(r.
odds);
512 if (flag == 0 && rbwl != NULL)
516 "%s RBWL check list=(%s) code=(%s) class=(%s) addr=(%s) name=(%s)",
528 rbwl->
odds = exp(lodds);
void dns_free_hostarr(DNS_HOSTARR_T *mx)
int zm_RdFile(char *fname, char *tag, RDFILE_F f, void *arg)
#define STRNCASEEQUAL(a, b, n)
#define RBWL_ONMATCH_CONTINUE
#define ZE_LogMsgError(level,...)
int zeStr2Tokens(char *, int, char **, char *)
bool read_conf_data_file(char *cfdir, char *fname, char *dfile, read_conf_data_file_F func)
DNS_HOST_T host[MAX_HOST]
#define ZE_MessageInfo(level,...)
int zeSafeStrnCpy(char *, size_t, char *, size_t)
#define ZE_MessageWarning(level,...)
#define ZE_MessageError(level,...)
bool check_dns_iprbwl(char *ip, char *name, char *rbwl, char *code, size_t size)
int dns_get_a(char *domain, DNS_HOSTARR_T *a)
#define STRCASEEQUAL(a, b)
bool load_iprbwl_table(char *cfdir, char *fname)
uint32_t check_iprbwl_table(char *id, char *ip, char *name, iprbwl_T *rbwl)