X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsrc%2Frouters%2Fiplookup.c;h=fe0f961aed1789f8eed43f961ef4f5530a215af7;hb=5903c6ff59527362e869fedb565c56935ce8dd68;hp=310e4d66d48f8585462c40bbb17668e0667478bd;hpb=3386088d5af4d4c61faa12ae29560e2c5bd43304;p=user%2Fhenk%2Fcode%2Fexim.git diff --git a/src/src/routers/iplookup.c b/src/src/routers/iplookup.c index 310e4d66d..fe0f961ae 100644 --- a/src/src/routers/iplookup.c +++ b/src/src/routers/iplookup.c @@ -44,6 +44,20 @@ address can appear in the tables drtables.c. */ int iplookup_router_options_count = sizeof(iplookup_router_options)/sizeof(optionlist); + +#ifdef MACRO_PREDEF + +/* Dummy entries */ +iplookup_router_options_block iplookup_router_option_defaults = {0}; +void iplookup_router_init(router_instance *rblock) {} +int iplookup_router_entry(router_instance *rblock, address_item *addr, + struct passwd *pw, int verify, address_item **addr_local, + address_item **addr_remote, address_item **addr_new, + address_item **addr_succeed) {return 0;} + +#else /*!MACRO_PREDEF*/ + + /* Default private options block for the iplookup router. */ iplookup_router_options_block iplookup_router_option_defaults = { @@ -191,7 +205,7 @@ being a host list. */ listptr = ob->hosts; while ((hostname = string_nextinlist(&listptr, &sep, host_buffer, - sizeof(host_buffer))) != NULL) + sizeof(host_buffer)))) { host_item *h; @@ -214,19 +228,20 @@ while ((hostname = string_nextinlist(&listptr, &sep, host_buffer, /* Loop for possible multiple IP addresses for the given name. */ - for (h = host; h != NULL; h = h->next) + for (h = host; h; h = h->next) { int host_af, query_socket; /* Skip any hosts for which we have no address */ - if (h->address == NULL) continue; + if (!h->address) continue; /* Create a socket, for UDP or TCP, as configured. IPv6 addresses are detected by checking for a colon in the address. */ host_af = (Ustrchr(h->address, ':') != NULL)? AF_INET6 : AF_INET; - query_socket = ip_socket((ob->protocol == ip_udp)? SOCK_DGRAM:SOCK_STREAM, + + query_socket = ip_socket(ob->protocol == ip_udp ? SOCK_DGRAM:SOCK_STREAM, host_af); if (query_socket < 0) { @@ -240,7 +255,8 @@ while ((hostname = string_nextinlist(&listptr, &sep, host_buffer, here only for TCP calls; for a UDP socket, "connect" always works (the router will timeout later on the read call). */ - if (ip_connect(query_socket, host_af, h->address,ob->port, ob->timeout) < 0) + if (ip_connect(query_socket, host_af, h->address,ob->port, ob->timeout, + ob->protocol != ip_udp) < 0) { close(query_socket); DEBUG(D_route) @@ -282,7 +298,7 @@ while ((hostname = string_nextinlist(&listptr, &sep, host_buffer, /* If h == NULL we have tried all the IP addresses and failed on all of them, so we must continue to try more host names. Otherwise we have succeeded. */ - if (h != NULL) break; + if (h) break; } @@ -380,9 +396,9 @@ new_addr->parent = addr; copyflag(new_addr, addr, af_propagate); new_addr->prop = addr->prop; -if (addr->child_count == SHRT_MAX) +if (addr->child_count == USHRT_MAX) log_write(0, LOG_MAIN|LOG_PANIC_DIE, "%s router generated more than %d " - "child addresses for <%s>", rblock->name, SHRT_MAX, addr->address); + "child addresses for <%s>", rblock->name, USHRT_MAX, addr->address); addr->child_count++; new_addr->next = *addr_new; *addr_new = new_addr; @@ -400,4 +416,5 @@ if (rc != OK) return rc; return OK; } +#endif /*!MACRO_PREDEF*/ /* End of routers/iplookup.c */