mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-06 15:51:41 +00:00
Compare commits
18
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd1721c799 | ||
|
|
a21e27bc99 | ||
|
|
b0ff858e78 | ||
|
|
54dae552b1 | ||
|
|
25c4198f7c | ||
|
|
4ead40cf67 | ||
|
|
04a0612e8a | ||
|
|
aa608c84b4 | ||
|
|
38365ff040 | ||
|
|
9c4270bcd9 | ||
|
|
46b066565e | ||
|
|
4dc9c657ad | ||
|
|
39595cfe31 | ||
|
|
ffa3d7d6a2 | ||
|
|
aa67fe7a8c | ||
|
|
bb2509fd2c | ||
|
|
61744359de | ||
|
|
095f62551f |
No files matched your search
@@ -27,6 +27,17 @@ version 2.66
|
|||||||
spotting the problem, and doing invaluable discovery of
|
spotting the problem, and doing invaluable discovery of
|
||||||
the obscure and undocumented API required for the solution.
|
the obscure and undocumented API required for the solution.
|
||||||
|
|
||||||
|
Don't send the default DHCP option advertising dnsmasq as
|
||||||
|
the local DNS server if dnsmasq is configured to not act
|
||||||
|
as DNS server, or it's configured to a non-standard port.
|
||||||
|
|
||||||
|
Add DNSMASQ_CIRCUIT_ID, DNSMASQ_SUBCRIBER_ID,
|
||||||
|
DNSMASQ_REMOTE_ID variables to the environment of the
|
||||||
|
lease-change script (and the correponding Lua). These hold
|
||||||
|
information inserted into the DHCP request by a DHCP relay
|
||||||
|
agent. Thanks to Lakefield Communications for providing a
|
||||||
|
bounty for this addition.
|
||||||
|
|
||||||
|
|
||||||
version 2.65
|
version 2.65
|
||||||
Fix regression which broke forwarding of queries sent via
|
Fix regression which broke forwarding of queries sent via
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
# dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -255,10 +255,6 @@ int main(int argc, char **argv)
|
|||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
|
||||||
int nl = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
int nl = socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
|
||||||
struct iovec iov;
|
|
||||||
|
|
||||||
iov.iov_len = 200;
|
|
||||||
iov.iov_base = malloc(iov.iov_len);
|
|
||||||
|
|
||||||
if (argc < 4 || argc > 5)
|
if (argc < 4 || argc > 5)
|
||||||
{
|
{
|
||||||
|
|||||||
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
It was downloaded from: http://www.thekelleys.org.uk/dnsmasq/
|
It was downloaded from: http://www.thekelleys.org.uk/dnsmasq/
|
||||||
|
|
||||||
|
|||||||
+7
-3
@@ -1122,12 +1122,13 @@ create thousands of leases and use lots of memory in the dnsmasq
|
|||||||
process.
|
process.
|
||||||
.TP
|
.TP
|
||||||
.B \-K, --dhcp-authoritative
|
.B \-K, --dhcp-authoritative
|
||||||
(IPv4 only) Should be set when dnsmasq is definitely the only DHCP server on a network.
|
Should be set when dnsmasq is definitely the only DHCP server on a network.
|
||||||
It changes the behaviour from strict RFC compliance so that DHCP requests on
|
For DHCPv4, it changes the behaviour from strict RFC compliance so that DHCP requests on
|
||||||
unknown leases from unknown hosts are not ignored. This allows new hosts
|
unknown leases from unknown hosts are not ignored. This allows new hosts
|
||||||
to get a lease without a tedious timeout under all circumstances. It also
|
to get a lease without a tedious timeout under all circumstances. It also
|
||||||
allows dnsmasq to rebuild its lease database without each client needing to
|
allows dnsmasq to rebuild its lease database without each client needing to
|
||||||
reacquire a lease, if the database is lost.
|
reacquire a lease, if the database is lost. For DHCPv6 it sets the
|
||||||
|
priority in replies to 255 (the maximum) instead of 0 (the minimum).
|
||||||
.TP
|
.TP
|
||||||
.B --dhcp-alternate-port[=<server port>[,<client port>]]
|
.B --dhcp-alternate-port[=<server port>[,<client port>]]
|
||||||
(IPv4 only) Change the ports used for DHCP from the default. If this option is
|
(IPv4 only) Change the ports used for DHCP from the default. If this option is
|
||||||
@@ -1229,6 +1230,9 @@ For IPv4 only:
|
|||||||
|
|
||||||
DNSMASQ_CLIENT_ID if the host provided a client-id.
|
DNSMASQ_CLIENT_ID if the host provided a client-id.
|
||||||
|
|
||||||
|
DNSMASQ_CIRCUIT_ID, DNSMASQ_SUBSCRIBER_ID, DNSMASQ_REMOTE_ID if a
|
||||||
|
DHCP relay-agent added any of these options.
|
||||||
|
|
||||||
If the client provides vendor-class, DNSMASQ_VENDOR_CLASS.
|
If the client provides vendor-class, DNSMASQ_VENDOR_CLASS.
|
||||||
|
|
||||||
For IPv6 only:
|
For IPv6 only:
|
||||||
|
|||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -51,7 +51,7 @@ static int filter_constructed_dhcp(struct auth_zone *zone, int flag, struct all_
|
|||||||
#ifdef HAVE_DHCP6
|
#ifdef HAVE_DHCP6
|
||||||
struct dhcp_context *context;
|
struct dhcp_context *context;
|
||||||
|
|
||||||
if (flag | F_IPV6)
|
if (flag & F_IPV6)
|
||||||
for (context = daemon->dhcp6; context; context = context->next)
|
for (context = daemon->dhcp6; context; context = context->next)
|
||||||
if ((context->flags & CONTEXT_CONSTRUCTED) &&
|
if ((context->flags & CONTEXT_CONSTRUCTED) &&
|
||||||
is_same_net6(&(addr_u->addr.addr6), &context->start6, context->prefix))
|
is_same_net6(&(addr_u->addr.addr6), &context->start6, context->prefix))
|
||||||
@@ -470,7 +470,7 @@ size_t answer_auth(struct dns_header *header, char *limit, size_t qlen, time_t n
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Add auth section */
|
/* Add auth section */
|
||||||
if (auth)
|
if (auth && zone)
|
||||||
{
|
{
|
||||||
char *authname;
|
char *authname;
|
||||||
int newoffset, offset = 0;
|
int newoffset, offset = 0;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+17
-10
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -91,16 +91,19 @@ static dbus_bool_t add_watch(DBusWatch *watch, void *data)
|
|||||||
|
|
||||||
static void remove_watch(DBusWatch *watch, void *data)
|
static void remove_watch(DBusWatch *watch, void *data)
|
||||||
{
|
{
|
||||||
struct watch **up, *w;
|
struct watch **up, *w, *tmp;
|
||||||
|
|
||||||
for (up = &(daemon->watches), w = daemon->watches; w; w = w->next)
|
for (up = &(daemon->watches), w = daemon->watches; w; w = tmp)
|
||||||
if (w->watch == watch)
|
{
|
||||||
{
|
tmp = w->next;
|
||||||
*up = w->next;
|
if (w->watch == watch)
|
||||||
free(w);
|
{
|
||||||
}
|
*up = tmp;
|
||||||
else
|
free(w);
|
||||||
up = &(w->next);
|
}
|
||||||
|
else
|
||||||
|
up = &(w->next);
|
||||||
|
}
|
||||||
|
|
||||||
w = data; /* no warning */
|
w = data; /* no warning */
|
||||||
}
|
}
|
||||||
@@ -340,6 +343,8 @@ static DBusMessage* dbus_read_servers_ex(DBusMessage *message, int strings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* dup the string because it gets modified during parsing */
|
/* dup the string because it gets modified during parsing */
|
||||||
|
if (dup)
|
||||||
|
free(dup);
|
||||||
if (!(dup = str_domain = whine_malloc(strlen(str)+1)))
|
if (!(dup = str_domain = whine_malloc(strlen(str)+1)))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -400,6 +405,8 @@ static DBusMessage* dbus_read_servers_ex(DBusMessage *message, int strings)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* dup the string because it gets modified during parsing */
|
/* dup the string because it gets modified during parsing */
|
||||||
|
if (dup)
|
||||||
|
free(dup);
|
||||||
if (!(dup = str_addr = whine_malloc(strlen(str)+1)))
|
if (!(dup = str_addr = whine_malloc(strlen(str)+1)))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -620,10 +620,10 @@ void dhcp_construct_contexts(time_t now)
|
|||||||
if (context->flags & CONTEXT_GC)
|
if (context->flags & CONTEXT_GC)
|
||||||
{
|
{
|
||||||
*up = context->next;
|
*up = context->next;
|
||||||
free(context);
|
|
||||||
param.newone = 1; /* include deletion */
|
param.newone = 1; /* include deletion */
|
||||||
if (context->flags & CONTEXT_RA_NAME)
|
if (context->flags & CONTEXT_RA_NAME)
|
||||||
param.newname = 1;
|
param.newname = 1;
|
||||||
|
free(context);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
up = &context->next;
|
up = &context->next;
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+10
-5
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -158,10 +158,10 @@ int main (int argc, char **argv)
|
|||||||
|
|
||||||
now = dnsmasq_time();
|
now = dnsmasq_time();
|
||||||
|
|
||||||
/* Create a serial at startup is not configured. */
|
/* Create a serial at startup if not configured. */
|
||||||
if (daemon->authinterface && daemon->soa_sn == 0)
|
if (daemon->authinterface && daemon->soa_sn == 0)
|
||||||
#ifdef HAVE_BROKEN_RTC
|
#ifdef HAVE_BROKEN_RTC
|
||||||
die(_("zone serial must be configured in --auth-soa"));
|
die(_("zone serial must be configured in --auth-soa"), NULL, EC_BADCONF);
|
||||||
#else
|
#else
|
||||||
daemon->soa_sn = now;
|
daemon->soa_sn = now;
|
||||||
#endif
|
#endif
|
||||||
@@ -1345,10 +1345,15 @@ static void check_dns_listeners(fd_set *set, time_t now)
|
|||||||
|
|
||||||
while ((confd = accept(listener->tcpfd, NULL, NULL)) == -1 && errno == EINTR);
|
while ((confd = accept(listener->tcpfd, NULL, NULL)) == -1 && errno == EINTR);
|
||||||
|
|
||||||
if (confd == -1 ||
|
if (confd == -1)
|
||||||
getsockname(confd, (struct sockaddr *)&tcp_addr, &tcp_len) == -1)
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (getsockname(confd, (struct sockaddr *)&tcp_addr, &tcp_len) == -1)
|
||||||
|
{
|
||||||
|
close(confd);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (option_bool(OPT_NOWILD))
|
if (option_bool(OPT_NOWILD))
|
||||||
iface = listener->iface; /* May be NULL */
|
iface = listener->iface; /* May be NULL */
|
||||||
else
|
else
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define COPYRIGHT "Copyright (c) 2000-2012 Simon Kelley"
|
#define COPYRIGHT "Copyright (c) 2000-2013 Simon Kelley"
|
||||||
|
|
||||||
#ifndef NO_LARGEFILE
|
#ifndef NO_LARGEFILE
|
||||||
/* Ensure we can use files >2GB (log files may grow this big) */
|
/* Ensure we can use files >2GB (log files may grow this big) */
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+7
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -397,6 +397,9 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
|
|||||||
buf = grab_extradata_lua(buf, end, "cpewan_oui");
|
buf = grab_extradata_lua(buf, end, "cpewan_oui");
|
||||||
buf = grab_extradata_lua(buf, end, "cpewan_serial");
|
buf = grab_extradata_lua(buf, end, "cpewan_serial");
|
||||||
buf = grab_extradata_lua(buf, end, "cpewan_class");
|
buf = grab_extradata_lua(buf, end, "cpewan_class");
|
||||||
|
buf = grab_extradata_lua(buf, end, "circuit_id");
|
||||||
|
buf = grab_extradata_lua(buf, end, "subscriber_id");
|
||||||
|
buf = grab_extradata_lua(buf, end, "remote_id");
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = grab_extradata_lua(buf, end, "tags");
|
buf = grab_extradata_lua(buf, end, "tags");
|
||||||
@@ -528,6 +531,9 @@ int create_helper(int event_fd, int err_fd, uid_t uid, gid_t gid, long max_fd)
|
|||||||
buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_OUI", &err);
|
buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_OUI", &err);
|
||||||
buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_SERIAL", &err);
|
buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_SERIAL", &err);
|
||||||
buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_CLASS", &err);
|
buf = grab_extradata(buf, end, "DNSMASQ_CPEWAN_CLASS", &err);
|
||||||
|
buf = grab_extradata(buf, end, "DNSMASQ_CIRCUIT_ID", &err);
|
||||||
|
buf = grab_extradata(buf, end, "DNSMASQ_SUBSCRIBER_ID", &err);
|
||||||
|
buf = grab_extradata(buf, end, "DNSMASQ_REMOTE_ID", &err);
|
||||||
}
|
}
|
||||||
|
|
||||||
buf = grab_extradata(buf, end, "DNSMASQ_TAGS", &err);
|
buf = grab_extradata(buf, end, "DNSMASQ_TAGS", &err);
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+11
-8
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -258,14 +258,17 @@ static int iface_allowed(struct irec **irecp, int if_index,
|
|||||||
if (lo->name && strcmp(lo->name, ifr.ifr_name) == 0)
|
if (lo->name && strcmp(lo->name, ifr.ifr_name) == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!lo &&
|
if (!lo && (lo = whine_malloc(sizeof(struct iname))))
|
||||||
(lo = whine_malloc(sizeof(struct iname))) &&
|
|
||||||
(lo->name = whine_malloc(strlen(ifr.ifr_name)+1)))
|
|
||||||
{
|
{
|
||||||
strcpy(lo->name, ifr.ifr_name);
|
if ((lo->name = whine_malloc(strlen(ifr.ifr_name)+1)))
|
||||||
lo->used = 1;
|
{
|
||||||
lo->next = daemon->if_names;
|
strcpy(lo->name, ifr.ifr_name);
|
||||||
daemon->if_names = lo;
|
lo->used = 1;
|
||||||
|
lo->next = daemon->if_names;
|
||||||
|
daemon->if_names = lo;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
free(lo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+8
-7
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -1369,14 +1369,14 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
strcat(path, "/");
|
strcat(path, "/");
|
||||||
strcat(path, ent->d_name);
|
strcat(path, ent->d_name);
|
||||||
|
|
||||||
|
/* files must be readable */
|
||||||
if (stat(path, &buf) == -1)
|
if (stat(path, &buf) == -1)
|
||||||
die(_("cannot access %s: %s"), path, EC_FILE);
|
die(_("cannot access %s: %s"), path, EC_FILE);
|
||||||
/* only reg files allowed. */
|
|
||||||
if (!S_ISREG(buf.st_mode))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* files must be readable */
|
/* only reg files allowed. */
|
||||||
one_file(path, 0);
|
if (S_ISREG(buf.st_mode))
|
||||||
|
one_file(path, 0);
|
||||||
|
|
||||||
free(path);
|
free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2378,7 +2378,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
if (!(*cp >= '0' && *cp <= '9'))
|
if (!(*cp >= '0' && *cp <= '9'))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (!cp || (leasepos+1 < k))
|
if (*cp || (leasepos+1 < k))
|
||||||
ret_err(_("bad dhcp-range"));
|
ret_err(_("bad dhcp-range"));
|
||||||
|
|
||||||
new->lease_time = atoi(a[leasepos]) * fac;
|
new->lease_time = atoi(a[leasepos]) * fac;
|
||||||
@@ -2636,6 +2636,7 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
new->set = NULL;
|
new->set = NULL;
|
||||||
|
free(newtag);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+17
-3
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -1257,6 +1257,19 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
|
|||||||
add_extradata_opt(lease, serial);
|
add_extradata_opt(lease, serial);
|
||||||
add_extradata_opt(lease, class);
|
add_extradata_opt(lease, class);
|
||||||
|
|
||||||
|
if ((opt = option_find(mess, sz, OPTION_AGENT_ID, 1)))
|
||||||
|
{
|
||||||
|
add_extradata_opt(lease, option_find1(option_ptr(opt, 0), option_ptr(opt, option_len(opt)), SUBOPT_CIRCUIT_ID, 1));
|
||||||
|
add_extradata_opt(lease, option_find1(option_ptr(opt, 0), option_ptr(opt, option_len(opt)), SUBOPT_SUBSCR_ID, 1));
|
||||||
|
add_extradata_opt(lease, option_find1(option_ptr(opt, 0), option_ptr(opt, option_len(opt)), SUBOPT_REMOTE_ID, 1));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
add_extradata_opt(lease, NULL);
|
||||||
|
add_extradata_opt(lease, NULL);
|
||||||
|
add_extradata_opt(lease, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
/* space-concat tag set */
|
/* space-concat tag set */
|
||||||
if (!tagif_netid)
|
if (!tagif_netid)
|
||||||
add_extradata_opt(lease, NULL);
|
add_extradata_opt(lease, NULL);
|
||||||
@@ -1739,7 +1752,7 @@ static unsigned char *free_space(struct dhcp_packet *mess, unsigned char *end, i
|
|||||||
if (overload[2] & 2)
|
if (overload[2] & 2)
|
||||||
{
|
{
|
||||||
p = dhcp_skip_opts(mess->sname);
|
p = dhcp_skip_opts(mess->sname);
|
||||||
if (p + len + 3 >= mess->sname + sizeof(mess->file))
|
if (p + len + 3 >= mess->sname + sizeof(mess->sname))
|
||||||
p = NULL;
|
p = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2234,7 +2247,8 @@ static void do_options(struct dhcp_context *context,
|
|||||||
!option_find2(OPTION_ROUTER))
|
!option_find2(OPTION_ROUTER))
|
||||||
option_put(mess, end, OPTION_ROUTER, INADDRSZ, ntohl(context->router.s_addr));
|
option_put(mess, end, OPTION_ROUTER, INADDRSZ, ntohl(context->router.s_addr));
|
||||||
|
|
||||||
if (in_list(req_options, OPTION_DNSSERVER) &&
|
if (daemon->port == NAMESERVER_PORT &&
|
||||||
|
in_list(req_options, OPTION_DNSSERVER) &&
|
||||||
!option_find2(OPTION_DNSSERVER))
|
!option_find2(OPTION_DNSSERVER))
|
||||||
option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr));
|
option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr));
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@@ -1265,7 +1265,7 @@ static int dhcp6_no_relay(int msg_type, struct in6_addr *link_address, struct dh
|
|||||||
end_opt6(o);
|
end_opt6(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!done_dns &&
|
if (daemon->port == NAMESERVER_PORT && !done_dns &&
|
||||||
(!IN6_IS_ADDR_UNSPECIFIED(&context->local6) ||
|
(!IN6_IS_ADDR_UNSPECIFIED(&context->local6) ||
|
||||||
!IN6_IS_ADDR_UNSPECIFIED(fallback)))
|
!IN6_IS_ADDR_UNSPECIFIED(fallback)))
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
/* dnsmasq is Copyright (c) 2000-2012 Simon Kelley
|
/* dnsmasq is Copyright (c) 2000-2013 Simon Kelley
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
Reference in new issue
Block a user