Use dedicated union member for option offsets
[users/jgh/exim.git] / src / src / routers / dnslookup.c
index 33939be4c26cc0c30d337a15c9376e61a6286e00..7e074c23ed02bf90bf6740c1fbac4f2e751a35cf 100644 (file)
 
 
 /* Options specific to the dnslookup router. */
+#define LOFF(field) OPT_OFF(dnslookup_router_options_block, field)
 
 optionlist dnslookup_router_options[] = {
-  { "check_secondary_mx", opt_bool,
-      (void *)(offsetof(dnslookup_router_options_block, check_secondary_mx)) },
-  { "check_srv",          opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, check_srv)) },
-  { "fail_defer_domains", opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, fail_defer_domains)) },
-  { "ipv4_only",          opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, ipv4_only)) },
-  { "ipv4_prefer",        opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, ipv4_prefer)) },
-  { "mx_domains",         opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, mx_domains)) },
-  { "mx_fail_domains",    opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, mx_fail_domains)) },
-  { "qualify_single",     opt_bool,
-      (void *)(offsetof(dnslookup_router_options_block, qualify_single)) },
-  { "rewrite_headers",    opt_bool,
-      (void *)(offsetof(dnslookup_router_options_block, rewrite_headers)) },
-  { "same_domain_copy_routing", opt_bool|opt_public,
-      (void *)(offsetof(router_instance, same_domain_copy_routing)) },
-  { "search_parents",     opt_bool,
-      (void *)(offsetof(dnslookup_router_options_block, search_parents)) },
-  { "srv_fail_domains",   opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, srv_fail_domains)) },
-  { "widen_domains",      opt_stringptr,
-      (void *)(offsetof(dnslookup_router_options_block, widen_domains)) }
+  { "check_secondary_mx", opt_bool,            LOFF(check_secondary_mx) },
+  { "check_srv",          opt_stringptr,       LOFF(check_srv) },
+  { "fail_defer_domains", opt_stringptr,       LOFF(fail_defer_domains) },
+  { "ipv4_only",          opt_stringptr,       LOFF(ipv4_only) },
+  { "ipv4_prefer",        opt_stringptr,       LOFF(ipv4_prefer) },
+  { "mx_domains",         opt_stringptr,       LOFF(mx_domains) },
+  { "mx_fail_domains",    opt_stringptr,       LOFF(mx_fail_domains) },
+  { "qualify_single",     opt_bool,            LOFF(qualify_single) },
+  { "rewrite_headers",    opt_bool,            LOFF(rewrite_headers) },
+  { "same_domain_copy_routing", opt_bool|opt_public, OPT_OFF(router_instance, same_domain_copy_routing) },
+  { "search_parents",     opt_bool,            LOFF(search_parents) },
+  { "srv_fail_domains",   opt_stringptr,       LOFF(srv_fail_domains) },
+  { "widen_domains",      opt_stringptr,       LOFF(widen_domains) }
 };
 
 /* Size of the options list. An extern variable has to be used so that its
@@ -289,7 +277,7 @@ for (;;)
 
   /* Unfortunately, we cannot set the mx_only option in advance, because the
   DNS lookup may extend an unqualified name. Therefore, we must do the test
-  stoubsequently. We use the same logic as that for widen_domains above to avoid
+  subsequently. We use the same logic as that for widen_domains above to avoid
   requesting a header rewrite that cannot work. */
 
   if (verify != v_sender || !ob->rewrite_headers || addr->parent)
@@ -468,7 +456,7 @@ if (rc != OK) return rc;
 /* Get store in which to preserve the original host item, chained on
 to the address. */
 
-addr->host_list = store_get(sizeof(host_item));
+addr->host_list = store_get(sizeof(host_item), FALSE);
 addr->host_list[0] = h;
 
 /* Fill in the transport and queue the address for delivery. */