const char *hostname,
const struct sockaddr_storage *ip_addr,
size_t num_adds,
+ uint32_t ttl,
struct dns_update_request **preq);
/* from dnssock.c */
const char *hostname,
const struct sockaddr_storage *ss_addrs,
size_t num_addrs,
+ uint32_t ttl,
struct dns_update_request **preq)
{
struct dns_update_request *req = NULL;
switch(ss_addrs[i].ss_family) {
case AF_INET:
- err = dns_create_a_record(req, hostname, 3600, &ss_addrs[i], &rec);
+ err = dns_create_a_record(req,
+ hostname,
+ ttl,
+ &ss_addrs[i],
+ &rec);
break;
#ifdef HAVE_IPV6
case AF_INET6:
- err = dns_create_aaaa_record(req, hostname, 3600, &ss_addrs[i], &rec);
+ err = dns_create_aaaa_record(req,
+ hostname,
+ ttl,
+ &ss_addrs[i],
+ &rec);
break;
#endif
default:
.arg = &c->opt_follow_symlink,
.descrip = "follow symlinks",
},
+ /* Options for 'net ads dns register' */
+ {
+ .longName = "dns-ttl",
+ .argInfo = POPT_ARG_INT,
+ .arg = &c->opt_dns_ttl,
+ .descrip = "TTL in seconds of DNS records",
+ },
POPT_COMMON_SAMBA
POPT_COMMON_CONNECTION
POPT_COMMON_CREDENTIALS
int opt_continue_on_error;
int opt_recursive;
int opt_follow_symlink;
+ int opt_dns_ttl;
int opt_have_ip;
struct sockaddr_storage opt_dest_ip;
fstring dns_server;
const char *dnsdomain = NULL;
char *root_domain = NULL;
+ uint32_t ttl = 3600;
+
+ if (c->opt_dns_ttl > 0) {
+ ttl = MIN(c->opt_dns_ttl, UINT32_MAX);
+ }
if ( (dnsdomain = strchr_m( machine_name, '.')) == NULL ) {
d_printf(_("No DNS domain configured for %s. "
addrs,
num_addrs,
flags,
+ ttl,
remove_host);
if (ERR_DNS_IS_OK(dns_err)) {
status = NT_STATUS_OK;
*********************************************************************/
DNS_ERROR DoDNSUpdate(char *pszServerName,
- const char *pszDomainName, const char *pszHostName,
- const struct sockaddr_storage *sslist, size_t num_addrs,
- uint32_t flags, bool remove_host)
+ const char *pszDomainName,
+ const char *pszHostName,
+ const struct sockaddr_storage *sslist,
+ size_t num_addrs,
+ uint32_t flags,
+ uint32_t ttl,
+ bool remove_host)
{
DNS_ERROR err;
struct dns_connection *conn;
* First try without signing
*/
- err = dns_create_update_request(mem_ctx, pszDomainName, pszHostName,
- sslist, num_addrs, &req);
+ err = dns_create_update_request(mem_ctx,
+ pszDomainName,
+ pszHostName,
+ sslist,
+ num_addrs,
+ ttl,
+ &req);
if (!ERR_DNS_IS_OK(err)) goto error;
err = dns_update_transaction(mem_ctx, conn, req, &resp);
gss_ctx_id_t gss_context;
char *keyname;
- err = dns_create_update_request(mem_ctx, pszDomainName, pszHostName,
- sslist, num_addrs, &req);
+ err = dns_create_update_request(mem_ctx,
+ pszDomainName,
+ pszHostName,
+ sslist,
+ num_addrs,
+ ttl,
+ &req);
if (!ERR_DNS_IS_OK(err)) goto error;
if (!(keyname = dns_generate_keyname( mem_ctx ))) {
#include "../lib/addns/dns.h"
DNS_ERROR DoDNSUpdate(char *pszServerName,
- const char *pszDomainName, const char *pszHostName,
+ const char *pszDomainName,
+ const char *pszHostName,
const struct sockaddr_storage *sslist,
size_t num_addrs,
- uint32_t flags, bool remove_host);
+ uint32_t flags,
+ uint32_t ttl,
+ bool remove_host);
#endif /* defined(HAVE_KRB5) */