mirror of
https://github.com/pi-hole/dnsmasq.git
synced 2025-12-19 10:18:25 +00:00
Add --dhcp-ttl option.
This commit is contained in:
@@ -60,7 +60,7 @@ in the same way as for DHCP-derived names. Note that this does not
|
|||||||
apply to domain names in cnames, PTR records, TXT records etc.
|
apply to domain names in cnames, PTR records, TXT records etc.
|
||||||
.TP
|
.TP
|
||||||
.B \-T, --local-ttl=<time>
|
.B \-T, --local-ttl=<time>
|
||||||
When replying with information from /etc/hosts or the DHCP leases
|
When replying with information from /etc/hosts or configuration or the DHCP leases
|
||||||
file dnsmasq by default sets the time-to-live field to zero, meaning
|
file dnsmasq by default sets the time-to-live field to zero, meaning
|
||||||
that the requester should not itself cache the information. This is
|
that the requester should not itself cache the information. This is
|
||||||
the correct thing to do in almost all situations. This option allows a
|
the correct thing to do in almost all situations. This option allows a
|
||||||
@@ -68,6 +68,9 @@ time-to-live (in seconds) to be given for these replies. This will
|
|||||||
reduce the load on the server at the expense of clients using stale
|
reduce the load on the server at the expense of clients using stale
|
||||||
data under some circumstances.
|
data under some circumstances.
|
||||||
.TP
|
.TP
|
||||||
|
.B --dhcp-ttl=<time>
|
||||||
|
As for --local-ttl, but affects only replies with information from DHCP leases. If both are given, --dhcp-ttl applies for DHCP information, and --local-ttl for others. Setting this to zero eliminates the effect of --local-ttl for DHCP.
|
||||||
|
.TP
|
||||||
.B --neg-ttl=<time>
|
.B --neg-ttl=<time>
|
||||||
Negative replies from upstream servers normally contain time-to-live
|
Negative replies from upstream servers normally contain time-to-live
|
||||||
information in SOA records which dnsmasq uses for caching. If the
|
information in SOA records which dnsmasq uses for caching. If the
|
||||||
|
|||||||
@@ -955,7 +955,7 @@ extern struct daemon {
|
|||||||
int max_logs; /* queue limit */
|
int max_logs; /* queue limit */
|
||||||
int cachesize, ftabsize;
|
int cachesize, ftabsize;
|
||||||
int port, query_port, min_port, max_port;
|
int port, query_port, min_port, max_port;
|
||||||
unsigned long local_ttl, neg_ttl, max_ttl, min_cache_ttl, max_cache_ttl, auth_ttl;
|
unsigned long local_ttl, neg_ttl, max_ttl, min_cache_ttl, max_cache_ttl, auth_ttl, dhcp_ttl, use_dhcp_ttl;
|
||||||
char *dns_client_id;
|
char *dns_client_id;
|
||||||
struct hostsfile *addn_hosts;
|
struct hostsfile *addn_hosts;
|
||||||
struct dhcp_context *dhcp, *dhcp6;
|
struct dhcp_context *dhcp, *dhcp6;
|
||||||
|
|||||||
13
src/option.c
13
src/option.c
@@ -157,6 +157,7 @@ struct myoption {
|
|||||||
#define LOPT_MAXPORT 345
|
#define LOPT_MAXPORT 345
|
||||||
#define LOPT_CPE_ID 346
|
#define LOPT_CPE_ID 346
|
||||||
#define LOPT_SCRIPT_ARP 347
|
#define LOPT_SCRIPT_ARP 347
|
||||||
|
#define LOPT_DHCPTTL 348
|
||||||
|
|
||||||
#ifdef HAVE_GETOPT_LONG
|
#ifdef HAVE_GETOPT_LONG
|
||||||
static const struct option opts[] =
|
static const struct option opts[] =
|
||||||
@@ -319,6 +320,7 @@ static const struct myoption opts[] =
|
|||||||
{ "quiet-ra", 0, 0, LOPT_QUIET_RA },
|
{ "quiet-ra", 0, 0, LOPT_QUIET_RA },
|
||||||
{ "dns-loop-detect", 0, 0, LOPT_LOOP_DETECT },
|
{ "dns-loop-detect", 0, 0, LOPT_LOOP_DETECT },
|
||||||
{ "script-arp", 0, 0, LOPT_SCRIPT_ARP },
|
{ "script-arp", 0, 0, LOPT_SCRIPT_ARP },
|
||||||
|
{ "dhcp-ttl", 1, 0 , LOPT_DHCPTTL },
|
||||||
{ NULL, 0, 0, 0 }
|
{ NULL, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -485,9 +487,10 @@ static struct {
|
|||||||
{ LOPT_QUIET_DHCP, OPT_QUIET_DHCP, NULL, gettext_noop("Do not log routine DHCP."), NULL },
|
{ LOPT_QUIET_DHCP, OPT_QUIET_DHCP, NULL, gettext_noop("Do not log routine DHCP."), NULL },
|
||||||
{ LOPT_QUIET_DHCP6, OPT_QUIET_DHCP6, NULL, gettext_noop("Do not log routine DHCPv6."), NULL },
|
{ LOPT_QUIET_DHCP6, OPT_QUIET_DHCP6, NULL, gettext_noop("Do not log routine DHCPv6."), NULL },
|
||||||
{ LOPT_QUIET_RA, OPT_QUIET_RA, NULL, gettext_noop("Do not log RA."), NULL },
|
{ LOPT_QUIET_RA, OPT_QUIET_RA, NULL, gettext_noop("Do not log RA."), NULL },
|
||||||
{ LOPT_LOCAL_SERVICE, OPT_LOCAL_SERVICE, NULL, gettext_noop("Accept queries only from directly-connected networks"), NULL },
|
{ LOPT_LOCAL_SERVICE, OPT_LOCAL_SERVICE, NULL, gettext_noop("Accept queries only from directly-connected networks."), NULL },
|
||||||
{ LOPT_LOOP_DETECT, OPT_LOOP_DETECT, NULL, gettext_noop("Detect and remove DNS forwarding loops"), NULL },
|
{ LOPT_LOOP_DETECT, OPT_LOOP_DETECT, NULL, gettext_noop("Detect and remove DNS forwarding loops."), NULL },
|
||||||
{ LOPT_IGNORE_ADDR, ARG_DUP, "<ipaddr>", gettext_noop("Ignore DNS responses containing ipaddr."), NULL },
|
{ LOPT_IGNORE_ADDR, ARG_DUP, "<ipaddr>", gettext_noop("Ignore DNS responses containing ipaddr."), NULL },
|
||||||
|
{ LOPT_DHCPTTL, ARG_ONE, "<ttl>", gettext_noop("Set TTL in DNS responses with DHCP-derived addresses."), NULL },
|
||||||
{ 0, 0, NULL, NULL, NULL }
|
{ 0, 0, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -2580,6 +2583,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
case LOPT_MINCTTL: /* --min-cache-ttl */
|
case LOPT_MINCTTL: /* --min-cache-ttl */
|
||||||
case LOPT_MAXCTTL: /* --max-cache-ttl */
|
case LOPT_MAXCTTL: /* --max-cache-ttl */
|
||||||
case LOPT_AUTHTTL: /* --auth-ttl */
|
case LOPT_AUTHTTL: /* --auth-ttl */
|
||||||
|
case LOPT_DHCPTTL: /* --dhcp-ttl */
|
||||||
{
|
{
|
||||||
int ttl;
|
int ttl;
|
||||||
if (!atoi_check(arg, &ttl))
|
if (!atoi_check(arg, &ttl))
|
||||||
@@ -2598,6 +2602,11 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
daemon->max_cache_ttl = (unsigned long)ttl;
|
daemon->max_cache_ttl = (unsigned long)ttl;
|
||||||
else if (option == LOPT_AUTHTTL)
|
else if (option == LOPT_AUTHTTL)
|
||||||
daemon->auth_ttl = (unsigned long)ttl;
|
daemon->auth_ttl = (unsigned long)ttl;
|
||||||
|
else if (option == LOPT_DHCPTTL)
|
||||||
|
{
|
||||||
|
daemon->dhcp_ttl = (unsigned long)ttl;
|
||||||
|
daemon->use_dhcp_ttl = 1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
daemon->local_ttl = (unsigned long)ttl;
|
daemon->local_ttl = (unsigned long)ttl;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -1170,7 +1170,7 @@ static unsigned long crec_ttl(struct crec *crecp, time_t now)
|
|||||||
before the lease expires. */
|
before the lease expires. */
|
||||||
|
|
||||||
if (crecp->flags & F_DHCP)
|
if (crecp->flags & F_DHCP)
|
||||||
return daemon->local_ttl;
|
return daemon->use_dhcp_ttl ? daemon->dhcp_ttl : daemon->local_ttl;
|
||||||
|
|
||||||
/* Immortal entries other than DHCP are local, and hold TTL in TTD field. */
|
/* Immortal entries other than DHCP are local, and hold TTL in TTD field. */
|
||||||
if (crecp->flags & F_IMMORTAL)
|
if (crecp->flags & F_IMMORTAL)
|
||||||
|
|||||||
Reference in New Issue
Block a user