Changeset 9761c2f27f1d8476cd82892ad939edc6df00ab20 for src
- Timestamp:
- 01/07/11 15:55:57 (7 years ago)
- git-parent:
- Files:
-
- src/modules/dns.c (modified) (4 diffs)
- src/modules/dns.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
src/modules/dns.c
rae6a9eb r9761c2f 220 220 static int dns_interpolate_inaddr_arpa(char *buff, int len, const char *ip) { 221 221 const char *b, *e; 222 char *o = buff; 222 char *o; 223 unsigned char dn[DNS_MAXDN]; 223 224 int il; 225 struct { 226 struct in_addr addr; 227 struct in6_addr addr6; 228 } a; 224 229 /* This function takes a dot delimited string as input and 225 230 * reverses the parts split on dot. 226 231 */ 232 if (dns_pton(AF_INET, ip, &a.addr) > 0) { 233 dns_a4todn(&a.addr, 0, dn, sizeof(dn)); 234 dns_dntop(dn,buff,len); 235 return strlen(buff); 236 } 237 else if (dns_pton(AF_INET6, ip, &a.addr6) > 0) { 238 dns_a6todn(&a.addr6, 0, dn, sizeof(dn)); 239 dns_dntop(dn,buff,len); 240 return strlen(buff); 241 } 242 243 o = buff; 227 244 il = strlen(ip); 228 245 if(len <= il) { … … 246 263 assert((o - buff) == il); 247 264 return o - buff; 265 } 266 static int dns_interpolate_reverse_ip(char *buff, int len, const char *ip) { 267 #define IN4ADDRARPA_LEN 13 // strlen(".in-addr.arpa"); 268 #define IN6ADDRARPA_LEN 9 // strlen(".ip6.arpa"); 269 dns_interpolate_inaddr_arpa(buff,len,ip); 270 if(len > IN4ADDRARPA_LEN && 271 !strcmp(buff+len-IN4ADDRARPA_LEN, ".in-addr.arpa")) 272 buff[len-IN4ADDRARPA_LEN] = '\0'; 273 else if((len > IN6ADDRARPA_LEN) && 274 !strcmp(buff+len-IN6ADDRARPA_LEN, ".ip6.arpa")) 275 buff[len-IN6ADDRARPA_LEN] = '\0'; 276 return strlen(buff); 248 277 } 249 278 … … 267 296 noit_check_interpolate_register_oper_fn("inaddrarpa", 268 297 dns_interpolate_inaddr_arpa); 298 noit_check_interpolate_register_oper_fn("reverseip", 299 dns_interpolate_reverse_ip); 269 300 270 301 if (dns_init(NULL, 0) < 0 || (pctx = dns_new(NULL)) == NULL) { … … 595 626 * nameserver to NULL 596 627 * rtype to PTR 597 * query to %[:inaddrarpa:target] .in-addr.arpa628 * query to %[:inaddrarpa:target] 598 629 */ 599 630 nameserver = NULL; 600 631 rtype = "PTR"; 601 query = "%[:inaddrarpa:target] .in-addr.arpa";632 query = "%[:inaddrarpa:target]"; 602 633 } 603 634 else { src/modules/dns.xml
r1da40d5 r9761c2f 22 22 <parameter name="query" 23 23 required="required" 24 default="%[name]|%[:inaddrarpa:target] .in-addr.arpa"24 default="%[name]|%[:inaddrarpa:target]" 25 25 allowed=".+">The query to send. If the name of the check is in-addr.arpa, the reverse IP octet notation of in-addr.arpa syntax is synthesized by default. Otherwise the default query is the name of the check itself.</parameter> 26 26 <parameter name="want_sort"