Changeset 212da6e4b6f6b0af9ea0a9ceba106f42a1ea04df for src
- Timestamp:
- 09/14/11 15:59:49 (2 years ago)
- git-parent:
- Files:
-
- src/modules/check_test.c (modified) (4 diffs)
- src/noit_check.c (modified) (5 diffs)
- src/noit_check.h (modified) (2 diffs)
- src/noit_check_rest.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
src/modules/check_test.c
rbb10f44 r212da6e 96 96 noit_check_t * 97 97 noit_fire_check(xmlNodePtr attr, xmlNodePtr config, const char **error) { 98 char *target = NULL, *name = NULL, *module = NULL, *filterset = NULL ;98 char *target = NULL, *name = NULL, *module = NULL, *filterset = NULL, *resolve_rtype = NULL; 99 99 int timeout = 0; 100 100 noit_module_t *m; … … 116 116 timeout = atoi(timeout_str); 117 117 free(timeout_str); 118 } 118 } else if(!strcmp((char *)a->name, "resolve_rtype")) 119 resolve_rtype = (char *)xmlNodeGetContent(a); 119 120 } 120 121 m = noit_module_lookup(module); … … 137 138 goto error; 138 139 } 140 int flags = NP_TRANSIENT; 141 flags |= strcmp(resolve_rtype, PREFER_IPV6) == 0 || strcmp(resolve_rtype, FORCE_IPV6) == 0 ? NP_PREFER_IPV6 : 0; 142 flags |= strcmp(resolve_rtype, FORCE_IPV4) == 0 || strcmp(resolve_rtype, FORCE_IPV6) == 0 ? NP_SINGLE_RESOLVE : 0; 139 143 c = calloc(1, sizeof(*c)); 140 144 noit_check_update(c, target, name, filterset, 141 conf_hash, 0, timeout, NULL, NP_TRANSIENT);145 conf_hash, 0, timeout, NULL, flags); 142 146 c->module = strdup(module); 143 147 uuid_generate(c->checkid); … … 155 159 if(module) xmlFree(module); 156 160 if(filterset) xmlFree(filterset); 161 if (resolve_rtype) xmlFree(resolve_rtype); 157 162 return c; 158 163 } src/noit_check.c
rf207009 r212da6e 150 150 char filterset[256] = ""; 151 151 char oncheck[1024] = ""; 152 char resolve_rtype[16] = ""; 152 153 int no_period = 0; 153 154 int no_oncheck = 0; … … 183 184 if(!INHERIT(stringbuf, filterset, filterset, sizeof(filterset))) 184 185 filterset[0] = '\0'; 186 187 if (!INHERIT(stringbuf, resolve_rtype, resolve_rtype, sizeof(resolve_rtype))) 188 strlcpy(resolve_rtype, PREFER_IPV4, sizeof(resolve_rtype)); 185 189 186 190 if(!MYATTR(stringbuf, name, name, sizeof(name))) … … 217 221 if(busted) flags |= (NP_UNCONFIG|NP_DISABLED); 218 222 else if(disabled) flags |= NP_DISABLED; 223 224 flags |= strcmp(resolve_rtype, PREFER_IPV6) == 0 || strcmp(resolve_rtype, FORCE_IPV6) == 0 ? NP_PREFER_IPV6 : 0; 225 flags |= strcmp(resolve_rtype, FORCE_IPV4) == 0 || strcmp(resolve_rtype, FORCE_IPV6) == 0 ? NP_SINGLE_RESOLVE : 0; 219 226 220 227 if(noit_hash_retrieve(&polls, (char *)uuid, UUID_SIZE, … … 569 576 } a; 570 577 571 572 family = AF_INET; 578 family = NOIT_CHECK_PREFER_V6(new_check) ? AF_INET6 : AF_INET; 573 579 rv = inet_pton(family, ip_str, &a); 574 if(rv != 1 ) {575 family = AF_INET6;580 if(rv != 1 && !NOIT_CHECK_SINGLE_RESOLVE(new_check)) { 581 family = family == AF_INET ? AF_INET6 : AF_INET; 576 582 rv = inet_pton(family, ip_str, &a); 577 583 if(rv != 1) { … … 624 630 if(new_check->target) free(new_check->target); 625 631 new_check->target = strdup(target); 632 633 // apply resolution flags to check. 634 if (flags & NP_PREFER_IPV6) 635 new_check->flags |= NP_PREFER_IPV6; 636 else 637 new_check->flags &= ~NP_PREFER_IPV6; 638 if (flags & NP_SINGLE_RESOLVE) 639 new_check->flags |= NP_SINGLE_RESOLVE; 640 else 641 new_check->flags &= ~NP_SINGLE_RESOLVE; 626 642 627 643 if(noit_check_set_ip(new_check, target)) { src/noit_check.h
ra33aa52 r212da6e 73 73 #define NP_SUPPRESS_METRICS 0x00002000 74 74 75 #define NP_PREFER_IP 0x0000400076 #define NP_ TRY_OTHER_RESOLVE 0x0000800077 78 #define NP_PREFER_IPV4 "prefer-ipv4"79 #define NP_PREFER_IPV6 "prefer-ipv6"80 #define NP_FORCE_IPV4 "force-ipv4"81 #define NP_FORCE_IPV6 "force-ipv6"75 #define NP_PREFER_IPV6 0x00004000 76 #define NP_SINGLE_RESOLVE 0x00008000 77 78 #define PREFER_IPV4 "prefer-ipv4" 79 #define PREFER_IPV6 "prefer-ipv6" 80 #define FORCE_IPV4 "force-ipv4" 81 #define FORCE_IPV6 "force-ipv6" 82 82 83 83 #define NP_UNKNOWN '0' /* stats_t.{available,state} */ … … 164 164 /* It is resolved if it is resolved or never needed to be resolved */ 165 165 #define NOIT_CHECK_RESOLVED(a) (((a)->flags & NP_RESOLVED) || (((a)->flags & NP_RESOLVE) == 0)) 166 #define NOIT_CHECK_PREFER_V 4(a) (((a)->flags & NP_PREFER_IP) == 0)167 #define NOIT_CHECK_ TRY_OTHER_RESOLVE(a) ((a)->flags & NP_TRY_OTHER_RESOLVE)166 #define NOIT_CHECK_PREFER_V6(a) (((a)->flags & NP_PREFER_IPV6) == NP_PREFER_IPV6) 167 #define NOIT_CHECK_SINGLE_RESOLVE(a) (((a)->flags & NP_SINGLE_RESOLVE) == NP_SINGLE_RESOLVE) 168 168 169 169 API_EXPORT(void) noit_poller_init(); src/noit_check_rest.c
ra33aa52 r212da6e 289 289 noit_boolean invalid; 290 290 tmp = xmlNodeGetContent(an); 291 invalid = strcmp((char *)tmp, NP_PREFER_IPV4) && strcmp((char *)tmp, NP_PREFER_IPV6) && strcmp((char *)tmp, NP_FORCE_IPV4) && strcmp((char *)tmp, NP_FORCE_IPV6);291 invalid = strcmp((char *)tmp, PREFER_IPV4) && strcmp((char *)tmp,PREFER_IPV6) && strcmp((char *)tmp, FORCE_IPV4) && strcmp((char *)tmp, FORCE_IPV6); 292 292 xmlFree(tmp); 293 293 if(invalid) {
