mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-07 16:01:41 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fd05f12790 | ||
|
|
ad094275b0 | ||
|
|
c740e4f342 | ||
|
|
132255b5da | ||
|
|
c4c0488ac6 | ||
|
|
a2ce6fcc91 | ||
|
|
12090548d2 |
No files matched your search
@@ -37,6 +37,16 @@ version 2.63
|
|||||||
Allow "w" (for week) as multiplier in lease times, as well
|
Allow "w" (for week) as multiplier in lease times, as well
|
||||||
as seconds, minutes, hours and days. Álvaro Gámez Machado
|
as seconds, minutes, hours and days. Álvaro Gámez Machado
|
||||||
spotted the ommission.
|
spotted the ommission.
|
||||||
|
|
||||||
|
Update French translation. Thanks to Gildas Le Nadan.
|
||||||
|
|
||||||
|
Allow a DBus service name to be given with --enable-dbus
|
||||||
|
which overrides the default,
|
||||||
|
uk.org.thekelleys.dnsmasq. Thanks to Mathieu
|
||||||
|
Trudel-Lapierre for the patch.
|
||||||
|
|
||||||
|
Set the "prefix on-link" bit in Router
|
||||||
|
Advertisements. Thanks to Gui Iribarren for the patch.
|
||||||
|
|
||||||
|
|
||||||
version 2.62
|
version 2.62
|
||||||
|
|||||||
+2
-1
@@ -19,7 +19,8 @@ and avoids startup races with the provider of nameserver information.
|
|||||||
|
|
||||||
|
|
||||||
Dnsmasq provides one service on the DBus: uk.org.thekelleys.dnsmasq
|
Dnsmasq provides one service on the DBus: uk.org.thekelleys.dnsmasq
|
||||||
and a single object: /uk/org/thekelleys/dnsmasq
|
and a single object: /uk/org/thekelleys/dnsmasq
|
||||||
|
The name of the service may be changed by giving an argument to --enable-dbus.
|
||||||
|
|
||||||
1. METHODS
|
1. METHODS
|
||||||
----------
|
----------
|
||||||
|
|||||||
Vendored
+1
@@ -0,0 +1 @@
|
|||||||
|
/etc/dbus-1/system.d/dnsmasq.conf
|
||||||
+7
-5
@@ -207,12 +207,12 @@ dnsmasq which provide DHCP service to run in the same machine.
|
|||||||
.B --bind-dynamic
|
.B --bind-dynamic
|
||||||
Enable a network mode which is a hybrid between
|
Enable a network mode which is a hybrid between
|
||||||
.B --bind-interfaces
|
.B --bind-interfaces
|
||||||
and the default. Dnsmasq binds the address of indivdual interfaces,
|
and the default. Dnsmasq binds the address of individual interfaces,
|
||||||
allowing multiple dnsmasq instances, but if new interfaces or
|
allowing multiple dnsmasq instances, but if new interfaces or
|
||||||
addresses appear, it automatically listens on those (subject to any
|
addresses appear, it automatically listens on those (subject to any
|
||||||
access-control configuration). This makes dynamically created
|
access-control configuration). This makes dynamically created
|
||||||
interfaces work in the same way as the default. Implementing this
|
interfaces work in the same way as the default. Implementing this
|
||||||
option requires non-standard networking APIs and it is only availble
|
option requires non-standard networking APIs and it is only available
|
||||||
under Linux. On other platforms it falls-back to --bind-interfaces mode.
|
under Linux. On other platforms it falls-back to --bind-interfaces mode.
|
||||||
.TP
|
.TP
|
||||||
.B \-y, --localise-queries
|
.B \-y, --localise-queries
|
||||||
@@ -271,11 +271,13 @@ time is the one used.
|
|||||||
Don't read /etc/resolv.conf. Get upstream servers only from the command
|
Don't read /etc/resolv.conf. Get upstream servers only from the command
|
||||||
line or the dnsmasq configuration file.
|
line or the dnsmasq configuration file.
|
||||||
.TP
|
.TP
|
||||||
.B \-1, --enable-dbus
|
.B \-1, --enable-dbus[=<service-name>]
|
||||||
Allow dnsmasq configuration to be updated via DBus method calls. The
|
Allow dnsmasq configuration to be updated via DBus method calls. The
|
||||||
configuration which can be changed is upstream DNS servers (and
|
configuration which can be changed is upstream DNS servers (and
|
||||||
corresponding domains) and cache clear. Requires that dnsmasq has
|
corresponding domains) and cache clear. Requires that dnsmasq has
|
||||||
been built with DBus support.
|
been built with DBus support. If the service name is given, dnsmasq
|
||||||
|
provides service at that name, rather than the default which is
|
||||||
|
.B uk.org.thekelleys.dnsmasq
|
||||||
.TP
|
.TP
|
||||||
.B \-o, --strict-order
|
.B \-o, --strict-order
|
||||||
By default, dnsmasq will send queries to any of the upstream servers
|
By default, dnsmasq will send queries to any of the upstream servers
|
||||||
@@ -470,7 +472,7 @@ is permissable to have more than one cname pointing to the same target.
|
|||||||
.B --dns-rr=<name>,<RR-number>,[<hex data>]
|
.B --dns-rr=<name>,<RR-number>,[<hex data>]
|
||||||
Return an arbitrary DNS Resource Record. The number is the type of the
|
Return an arbitrary DNS Resource Record. The number is the type of the
|
||||||
record (which is always in the C_IN class). The value of the record is
|
record (which is always in the C_IN class). The value of the record is
|
||||||
given by the hex data, which may be of the for 01:23:45 or 01 23 45 or
|
given by the hex data, which may be of the form 01:23:45 or 01 23 45 or
|
||||||
012345 or any mixture of these.
|
012345 or any mixture of these.
|
||||||
.TP
|
.TP
|
||||||
.B --interface-name=<name>,<interface>
|
.B --interface-name=<name>,<interface>
|
||||||
|
|||||||
+34
-55
@@ -232,6 +232,18 @@ autre serveur de nom (ou une autre instance de Dnsmasq) tourne sur la même
|
|||||||
machine. Utiliser cette option permet également d'avoir plusieurs instances de
|
machine. Utiliser cette option permet également d'avoir plusieurs instances de
|
||||||
Dnsmasq fournissant un service DHCP sur la même machine.
|
Dnsmasq fournissant un service DHCP sur la même machine.
|
||||||
.TP
|
.TP
|
||||||
|
.B --bind-dynamic
|
||||||
|
Autorise un mode réseau intermédiaire entre
|
||||||
|
.B --bind-interfaces
|
||||||
|
et le mode par défaut. Dnsmasq s'associe à une seule interface, ce qui permet
|
||||||
|
plusieurs instances de dnsmasq, mais si une interface ou adresse apparaissent,
|
||||||
|
il se mettra automatiquement à écouter sur celles-ci (les règles de contrôle
|
||||||
|
d'accès s'appliquent).
|
||||||
|
De fait, les interfaces créées dynamiquement fonctionnent de la même façon que
|
||||||
|
dans le comportement par défaut. Ce fonctionnement nécessite des APIs réseau
|
||||||
|
non standard et n'est disponible que sous Linux. Sur les autres plateformes,
|
||||||
|
le fonctionnement est celui du mode --bind-interfaces.
|
||||||
|
.TP
|
||||||
.B \-y, --localise-queries
|
.B \-y, --localise-queries
|
||||||
Retourne des réponses aux requêtes DNS dépendantes de l'interface sur laquelle
|
Retourne des réponses aux requêtes DNS dépendantes de l'interface sur laquelle
|
||||||
la requête a été reçue, à partir du fichier /etc/hosts. Si un nom dans
|
la requête a été reçue, à partir du fichier /etc/hosts. Si un nom dans
|
||||||
@@ -532,9 +544,17 @@ Retourne un enregistrement de type NAPTR, tel que spécifié dans le RFC3403.
|
|||||||
Retourne un enregistrement de type CNAME qui indique que <cname> est en
|
Retourne un enregistrement de type CNAME qui indique que <cname> est en
|
||||||
réalité <cible>. Il existe des contraintes significatives sur la valeur
|
réalité <cible>. Il existe des contraintes significatives sur la valeur
|
||||||
de cible; il doit s'agir d'un nom DNS qui est connu de dnsmasq via /etc/hosts
|
de cible; il doit s'agir d'un nom DNS qui est connu de dnsmasq via /etc/hosts
|
||||||
(ou un fichier hôtes additionnel) ou via DHCP. Si une cible ne satisfait
|
(ou un fichier hôtes additionnel), ou via DHCP, ou par un autre
|
||||||
pas ces critères, le CNAME est ignoré. Le CNAME doit être unique, mais
|
.B --cname.
|
||||||
il est autorisé d'avoir plus d'un CNAME pointant vers la même cible.
|
Si une cible ne satisfait pas ces critères, le CNAME est ignoré. Le CNAME
|
||||||
|
doit être unique, mais il est autorisé d'avoir plus d'un CNAME pointant
|
||||||
|
vers la même cible.
|
||||||
|
.TP
|
||||||
|
.B --dns-rr=<nom>,<numéro-RR>,[<données hexadécimales>]
|
||||||
|
Retourne un enregistrement DNS arbitraire. Le numéro correspond au type
|
||||||
|
d'enregistrement (qui est toujours de la classe C_IN). La valeur de
|
||||||
|
l'enregistrement est donnée dans les données hexadécimales, qui peuvent
|
||||||
|
être de la forme 01:23:45, 01 23 45,+012345 ou n'importe quelle combinaison.
|
||||||
.TP
|
.TP
|
||||||
.B --interface-name=<nom>,<interface>
|
.B --interface-name=<nom>,<interface>
|
||||||
Définit un entregistrement DNS associant le nom avec l'adresse primaire sur
|
Définit un entregistrement DNS associant le nom avec l'adresse primaire sur
|
||||||
@@ -601,9 +621,9 @@ avec le support conntrack, le noyau doit également inclure conntrack et être
|
|||||||
configuré pour cela. Cette option ne peut pas être combinée avec
|
configuré pour cela. Cette option ne peut pas être combinée avec
|
||||||
--query-port.
|
--query-port.
|
||||||
.TP
|
.TP
|
||||||
.B \-F, --dhcp-range=[interface:<interface>,][tag:<label>[,tag:<label>],][set:<label>],]<adresse de début>[,<adresse de fin>][,<mode>][,<masque de réseau>[,<broadcast>]][,<durée de bail>]
|
.B \-F, --dhcp-range=[tag:<label>[,tag:<label>],][set:<label>],]<adresse de début>[,<adresse de fin>][,<mode>][,<masque de réseau>[,<broadcast>]][,<durée de bail>]
|
||||||
.TP
|
.TP
|
||||||
.B \-F, --dhcp-range=[interface:<interface>,][tag:<label>[,tag:<label>],][set:<label>],]<addresse IPv6 de début>[,<adresse IPv6 de fin>][,<mode>][,<longueur de préfixe>][,<durée de bail>]
|
.B \-F, --dhcp-range=[tag:<label>[,tag:<label>],][set:<label>],]<addresse IPv6 de début>[,<adresse IPv6 de fin>][,<mode>][,<longueur de préfixe>][,<durée de bail>]
|
||||||
Active le serveur DHCP. Les adresses seront données dans la plage comprise entre
|
Active le serveur DHCP. Les adresses seront données dans la plage comprise entre
|
||||||
<adresse de début> et <adresse de fin> et à partir des adresses définies
|
<adresse de début> et <adresse de fin> et à partir des adresses définies
|
||||||
statiquement dans l'option
|
statiquement dans l'option
|
||||||
@@ -705,8 +725,6 @@ peut-être combiné avec
|
|||||||
et
|
et
|
||||||
.B slaac.
|
.B slaac.
|
||||||
|
|
||||||
La section interface:<nom d'interface> n'est normalement pas utilisée. Se
|
|
||||||
référer aux indications de la section NOTES pour plus de détail à ce sujet.
|
|
||||||
.TP
|
.TP
|
||||||
.B \-G, --dhcp-host=[<adresse matérielle>][,id:<identifiant client>|*][,set:<label>][,<adresse IP>][,<nom d'hôte>][,<durée de bail>][,ignore]
|
.B \-G, --dhcp-host=[<adresse matérielle>][,id:<identifiant client>|*][,set:<label>][,<adresse IP>][,<nom d'hôte>][,<durée de bail>][,ignore]
|
||||||
Spécifie les paramètres DHCP relatifs à un hôte. Cela permet à une machine
|
Spécifie les paramètres DHCP relatifs à un hôte. Cela permet à une machine
|
||||||
@@ -1517,12 +1535,11 @@ dnsmasq est spécifiée comme DNS récursif. Si elles sont fournies, les
|
|||||||
options dns-server et domain-search sont utilisées respectivement pour RDNSS et
|
options dns-server et domain-search sont utilisées respectivement pour RDNSS et
|
||||||
DNSSL.
|
DNSSL.
|
||||||
.TP
|
.TP
|
||||||
.B --enable-tftp[=<interface>]
|
.B --enable-tftp
|
||||||
Active la fonction serveur TFTP. Celui-ci est de manière délibérée limité aux
|
Active la fonction serveur TFTP. Celui-ci est de manière délibérée limité aux
|
||||||
fonctions nécessaires au démarrage par le réseau ("net-boot") d'un client. Seul
|
fonctions nécessaires au démarrage par le réseau ("net-boot") d'un client. Seul
|
||||||
un accès en lecture est possible; les extensions tsize et blksize sont supportées
|
un accès en lecture est possible; les extensions tsize et blksize sont supportées
|
||||||
(tsize est seulement supporté en mode octet). Voir dans la section NOTES les
|
(tsize est seulement supporté en mode octet).
|
||||||
informations relatives à la spécification de l'interface.
|
|
||||||
.TP
|
.TP
|
||||||
.B --tftp-root=<répertoire>[,<interface>]
|
.B --tftp-root=<répertoire>[,<interface>]
|
||||||
Les fichiers à fournir dans les transferts TFTP seront cherchés en prenant le
|
Les fichiers à fournir dans les transferts TFTP seront cherchés en prenant le
|
||||||
@@ -1560,6 +1577,13 @@ Sans cela, en effet, l'accès de tous les fichiers du serveur pour lequel le
|
|||||||
droit de lecture pour tout le monde est positionné ("world-readable") devient
|
droit de lecture pour tout le monde est positionné ("world-readable") devient
|
||||||
possible par n'importe quel hôte sur le réseau.
|
possible par n'importe quel hôte sur le réseau.
|
||||||
.TP
|
.TP
|
||||||
|
.B --tftp-lowercase
|
||||||
|
Converti les noms de fichiers des requêtes TFTP en minuscules. Cela est utile
|
||||||
|
pour les requêtes effectuées depuis les machines Windows, dont les systèmes
|
||||||
|
de fichiers sont insensibles à la casse et pour lesquels la détermination
|
||||||
|
de la casse est parfois un peu aléatoire. A noter que le serveur tftp de
|
||||||
|
dnsmasq converti systématiquement les "\\" en "/" dans les noms de fichiers.
|
||||||
|
.TP
|
||||||
.B --tftp-max=<connexions>
|
.B --tftp-max=<connexions>
|
||||||
Définit le nombre maximum de connexions TFTP simultanées autorisées. La valeur
|
Définit le nombre maximum de connexions TFTP simultanées autorisées. La valeur
|
||||||
par défaut est de 50. Lorsqu'un grand nombre de connexions TFTP est spécifié,
|
par défaut est de 50. Lorsqu'un grand nombre de connexions TFTP est spécifié,
|
||||||
@@ -1823,51 +1847,6 @@ supprime la nécessité des associations statiques). Le paramètre
|
|||||||
que le label "bootp", permettant un certain contrôle sur les options retournées
|
que le label "bootp", permettant un certain contrôle sur les options retournées
|
||||||
aux différentes classes d'hôtes.
|
aux différentes classes d'hôtes.
|
||||||
|
|
||||||
Il est possible de spécifier un nom d'interface à
|
|
||||||
.B dhcp-range
|
|
||||||
sous la forme "interface:<nom d'interface>". La sémantique est comme suit :
|
|
||||||
Pour le DHCP, s'il existe une autre valeur de dhcp-range pour laquelle
|
|
||||||
_aucun_ nom d'interface n'est donné, alors le nom d'interface est ignoré
|
|
||||||
et dnsmasq se comporte comme si la partie spécifiant l'interface n'existait
|
|
||||||
pas, sinon le service DHCP n'est fourni qu'aux interfaces mentionnées dans
|
|
||||||
les déclarations dhcp-range. Pour le DNS, si il n'y a pas d'option
|
|
||||||
.B --interface
|
|
||||||
ou
|
|
||||||
.B --listen-address
|
|
||||||
, alors le comportement n'est pas impacté par la spécification d'interface. Si
|
|
||||||
l'une ou l'autre de ces options est présente, alors les interfaces mentionnées
|
|
||||||
dans les plages d'adresses dhcp-range sont rajoutées à la liste de celles
|
|
||||||
où le service DNS est assuré.
|
|
||||||
|
|
||||||
De manière similaire,
|
|
||||||
.B enable-tftp
|
|
||||||
peut prendre un nom d'interface, ce qui active le TFTP pour cette seule
|
|
||||||
interface, en ignorant les options
|
|
||||||
.B --interface
|
|
||||||
ou
|
|
||||||
.B --listen-address
|
|
||||||
De plus,
|
|
||||||
.B --tftp-secure
|
|
||||||
,
|
|
||||||
.B --tftp-unique-root
|
|
||||||
et
|
|
||||||
.B --tftp-no-blocksize
|
|
||||||
sont ignorées pour les requêtes sur de telles interfaces. (une directive
|
|
||||||
.B --tftp-root
|
|
||||||
donnant le chemin de la racine et une interface doit-être fournie).
|
|
||||||
|
|
||||||
Ces règles peuvent paraître étrange à première vue, mais elles permettent
|
|
||||||
d'ajouter à la configuration de dnsmasq des lignes de configuration de la
|
|
||||||
forme "dhcp-range=interface:virt0,192.168.0.4,192.168.0.200" afin de fournir
|
|
||||||
un service DHCP et DNS sur cette interface, sans pour autant affecter les
|
|
||||||
services fournis sur d'autres interfaces, malgré l'absence de paramètres
|
|
||||||
"interface=<interface>" sur les autres lignes de configuration.
|
|
||||||
"enable-tftp=virt0" et "tftp-root=<root>,virt0" effectuent la même chose pour
|
|
||||||
TFTP.
|
|
||||||
L'idée de tout cela est de permettre l'addition de telles lignes
|
|
||||||
automatiquement par libvirt ou un système équivalent, sans perturbation
|
|
||||||
d'une configuration manuelle existant par ailleurs.
|
|
||||||
|
|
||||||
.SH CODES DE SORTIE
|
.SH CODES DE SORTIE
|
||||||
.PP
|
.PP
|
||||||
0 - Dnsmasq s'est correctement lancé en tâche de fond, ou alors s'est
|
0 - Dnsmasq s'est correctement lancé en tâche de fond, ou alors s'est
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <ifaddrs.h>
|
#include <ifaddrs.h>
|
||||||
|
|
||||||
#if defined(HAVE_BSD_NETWORK) && !defined(__APPLE__)
|
#if defined(HAVE_BSD_NETWORK) && !defined(__APPLE__)
|
||||||
|
#include <sys/param.h>
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <net/if_dl.h>
|
#include <net/if_dl.h>
|
||||||
|
|||||||
+1
-1
@@ -40,7 +40,7 @@
|
|||||||
#define LOG_MAX 5 /* log-queue length */
|
#define LOG_MAX 5 /* log-queue length */
|
||||||
#define RANDFILE "/dev/urandom"
|
#define RANDFILE "/dev/urandom"
|
||||||
#define EDNS0_OPTION_MAC 5 /* dyndns.org temporary assignment */
|
#define EDNS0_OPTION_MAC 5 /* dyndns.org temporary assignment */
|
||||||
#define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq" /* DBUS interface specifics */
|
#define DNSMASQ_SERVICE "uk.org.thekelleys.dnsmasq" /* Default - may be overridden by config */
|
||||||
#define DNSMASQ_PATH "/uk/org/thekelleys/dnsmasq"
|
#define DNSMASQ_PATH "/uk/org/thekelleys/dnsmasq"
|
||||||
|
|
||||||
/* compile-time options: uncomment below to enable or do eg.
|
/* compile-time options: uncomment below to enable or do eg.
|
||||||
|
|||||||
+21
-9
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
#include <dbus/dbus.h>
|
#include <dbus/dbus.h>
|
||||||
|
|
||||||
const char* introspection_xml =
|
const char* introspection_xml_template =
|
||||||
"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
|
"<!DOCTYPE node PUBLIC \"-//freedesktop//DTD D-BUS Object Introspection 1.0//EN\"\n"
|
||||||
"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
|
"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n"
|
||||||
"<node name=\"" DNSMASQ_PATH "\">\n"
|
"<node name=\"" DNSMASQ_PATH "\">\n"
|
||||||
@@ -29,7 +29,7 @@ const char* introspection_xml =
|
|||||||
" <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
|
" <arg name=\"data\" direction=\"out\" type=\"s\"/>\n"
|
||||||
" </method>\n"
|
" </method>\n"
|
||||||
" </interface>\n"
|
" </interface>\n"
|
||||||
" <interface name=\"" DNSMASQ_SERVICE "\">\n"
|
" <interface name=\"%s\">\n"
|
||||||
" <method name=\"ClearCache\">\n"
|
" <method name=\"ClearCache\">\n"
|
||||||
" </method>\n"
|
" </method>\n"
|
||||||
" <method name=\"GetVersion\">\n"
|
" <method name=\"GetVersion\">\n"
|
||||||
@@ -56,6 +56,8 @@ const char* introspection_xml =
|
|||||||
" </interface>\n"
|
" </interface>\n"
|
||||||
"</node>\n";
|
"</node>\n";
|
||||||
|
|
||||||
|
static char *introspection_xml = NULL;
|
||||||
|
|
||||||
struct watch {
|
struct watch {
|
||||||
DBusWatch *watch;
|
DBusWatch *watch;
|
||||||
struct watch *next;
|
struct watch *next;
|
||||||
@@ -266,11 +268,21 @@ DBusHandlerResult message_handler(DBusConnection *connection,
|
|||||||
|
|
||||||
if (dbus_message_is_method_call(message, DBUS_INTERFACE_INTROSPECTABLE, "Introspect"))
|
if (dbus_message_is_method_call(message, DBUS_INTERFACE_INTROSPECTABLE, "Introspect"))
|
||||||
{
|
{
|
||||||
DBusMessage *reply = dbus_message_new_method_return(message);
|
DBusMessage *reply;
|
||||||
|
|
||||||
dbus_message_append_args(reply, DBUS_TYPE_STRING, &introspection_xml, DBUS_TYPE_INVALID);
|
/* string length: "%s" provides space for termination zero */
|
||||||
dbus_connection_send (connection, reply, NULL);
|
if (!introspection_xml &&
|
||||||
dbus_message_unref (reply);
|
(introspection_xml = whine_malloc(strlen(introspection_xml_template) + strlen(daemon->dbus_name))))
|
||||||
|
sprintf(introspection_xml, introspection_xml_template, daemon->dbus_name);
|
||||||
|
|
||||||
|
if (introspection_xml)
|
||||||
|
{
|
||||||
|
reply = dbus_message_new_method_return(message);
|
||||||
|
|
||||||
|
dbus_message_append_args(reply, DBUS_TYPE_STRING, &introspection_xml, DBUS_TYPE_INVALID);
|
||||||
|
dbus_connection_send (connection, reply, NULL);
|
||||||
|
dbus_message_unref (reply);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp(method, "GetVersion") == 0)
|
else if (strcmp(method, "GetVersion") == 0)
|
||||||
{
|
{
|
||||||
@@ -315,7 +327,7 @@ char *dbus_init(void)
|
|||||||
dbus_connection_set_watch_functions(connection, add_watch, remove_watch,
|
dbus_connection_set_watch_functions(connection, add_watch, remove_watch,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
dbus_error_init (&dbus_error);
|
dbus_error_init (&dbus_error);
|
||||||
dbus_bus_request_name (connection, DNSMASQ_SERVICE, 0, &dbus_error);
|
dbus_bus_request_name (connection, daemon->dbus_name, 0, &dbus_error);
|
||||||
if (dbus_error_is_set (&dbus_error))
|
if (dbus_error_is_set (&dbus_error))
|
||||||
return (char *)dbus_error.message;
|
return (char *)dbus_error.message;
|
||||||
|
|
||||||
@@ -325,7 +337,7 @@ char *dbus_init(void)
|
|||||||
|
|
||||||
daemon->dbus = connection;
|
daemon->dbus = connection;
|
||||||
|
|
||||||
if ((message = dbus_message_new_signal(DNSMASQ_PATH, DNSMASQ_SERVICE, "Up")))
|
if ((message = dbus_message_new_signal(DNSMASQ_PATH, daemon->dbus_name, "Up")))
|
||||||
{
|
{
|
||||||
dbus_connection_send(connection, message, NULL);
|
dbus_connection_send(connection, message, NULL);
|
||||||
dbus_message_unref(message);
|
dbus_message_unref(message);
|
||||||
@@ -430,7 +442,7 @@ void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname)
|
|||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!(message = dbus_message_new_signal(DNSMASQ_PATH, DNSMASQ_SERVICE, action_str)))
|
if (!(message = dbus_message_new_signal(DNSMASQ_PATH, daemon->dbus_name, action_str)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dbus_message_iter_init_append(message, &args);
|
dbus_message_iter_init_append(message, &args);
|
||||||
|
|||||||
@@ -777,6 +777,7 @@ extern struct daemon {
|
|||||||
struct tftp_prefix *if_prefix; /* per-interface TFTP prefixes */
|
struct tftp_prefix *if_prefix; /* per-interface TFTP prefixes */
|
||||||
unsigned int duid_enterprise, duid_config_len;
|
unsigned int duid_enterprise, duid_config_len;
|
||||||
unsigned char *duid_config;
|
unsigned char *duid_config;
|
||||||
|
char *dbus_name;
|
||||||
|
|
||||||
/* globally used stuff for DNS */
|
/* globally used stuff for DNS */
|
||||||
char *packet; /* packet buffer */
|
char *packet; /* packet buffer */
|
||||||
|
|||||||
+12
-4
@@ -184,7 +184,7 @@ static const struct myoption opts[] =
|
|||||||
{ "localise-queries", 0, 0, 'y' },
|
{ "localise-queries", 0, 0, 'y' },
|
||||||
{ "txt-record", 1, 0, 'Y' },
|
{ "txt-record", 1, 0, 'Y' },
|
||||||
{ "dns-rr", 1, 0, LOPT_RR },
|
{ "dns-rr", 1, 0, LOPT_RR },
|
||||||
{ "enable-dbus", 0, 0, '1' },
|
{ "enable-dbus", 2, 0, '1' },
|
||||||
{ "bootp-dynamic", 2, 0, '3' },
|
{ "bootp-dynamic", 2, 0, '3' },
|
||||||
{ "dhcp-mac", 1, 0, '4' },
|
{ "dhcp-mac", 1, 0, '4' },
|
||||||
{ "no-ping", 0, 0, '5' },
|
{ "no-ping", 0, 0, '5' },
|
||||||
@@ -326,7 +326,7 @@ static struct {
|
|||||||
{ LOPT_INTNAME, ARG_DUP, "<name>,<interface>", gettext_noop("Give DNS name to IPv4 address of interface."), NULL },
|
{ LOPT_INTNAME, ARG_DUP, "<name>,<interface>", gettext_noop("Give DNS name to IPv4 address of interface."), NULL },
|
||||||
{ 'z', OPT_NOWILD, NULL, gettext_noop("Bind only to interfaces in use."), NULL },
|
{ 'z', OPT_NOWILD, NULL, gettext_noop("Bind only to interfaces in use."), NULL },
|
||||||
{ 'Z', OPT_ETHERS, NULL, gettext_noop("Read DHCP static host information from %s."), ETHERSFILE },
|
{ 'Z', OPT_ETHERS, NULL, gettext_noop("Read DHCP static host information from %s."), ETHERSFILE },
|
||||||
{ '1', OPT_DBUS, NULL, gettext_noop("Enable the DBus interface for setting upstream servers, etc."), NULL },
|
{ '1', ARG_ONE, "[=<busname>]", gettext_noop("Enable the DBus interface for setting upstream servers, etc."), NULL },
|
||||||
{ '2', ARG_DUP, "<interface>", gettext_noop("Do not provide DHCP on this interface, only provide DNS."), NULL },
|
{ '2', ARG_DUP, "<interface>", gettext_noop("Do not provide DHCP on this interface, only provide DNS."), NULL },
|
||||||
{ '3', ARG_DUP, "[=tag:<tag>]...", gettext_noop("Enable dynamic address allocation for bootp."), NULL },
|
{ '3', ARG_DUP, "[=tag:<tag>]...", gettext_noop("Enable dynamic address allocation for bootp."), NULL },
|
||||||
{ '4', ARG_DUP, "set:<tag>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
|
{ '4', ARG_DUP, "set:<tag>,<mac address>", gettext_noop("Map MAC address (with wildcards) to option set."), NULL },
|
||||||
@@ -601,6 +601,8 @@ static void do_usage(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define ret_err(x) do { strcpy(errstr, (x)); return 0; } while (0)
|
||||||
|
|
||||||
#ifdef HAVE_DHCP
|
#ifdef HAVE_DHCP
|
||||||
|
|
||||||
static int is_tag_prefix(char *arg)
|
static int is_tag_prefix(char *arg)
|
||||||
@@ -619,8 +621,6 @@ static char *set_prefix(char *arg)
|
|||||||
return arg;
|
return arg;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ret_err(x) do { strcpy(errstr, (x)); return 0; } while (0)
|
|
||||||
|
|
||||||
/* This is too insanely large to keep in-line in the switch */
|
/* This is too insanely large to keep in-line in the switch */
|
||||||
static int parse_dhcp_opt(char *errstr, char *arg, int flags)
|
static int parse_dhcp_opt(char *errstr, char *arg, int flags)
|
||||||
{
|
{
|
||||||
@@ -1285,6 +1285,14 @@ static int one_opt(int option, char *arg, char *errstr, char *gen_err, int comma
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case '1': /* --enable-dbus */
|
||||||
|
set_option_bool(OPT_DBUS);
|
||||||
|
if (arg)
|
||||||
|
daemon->dbus_name = opt_string_alloc(arg);
|
||||||
|
else
|
||||||
|
daemon->dbus_name = DNSMASQ_SERVICE;
|
||||||
|
break;
|
||||||
|
|
||||||
case '8': /* --log-facility */
|
case '8': /* --log-facility */
|
||||||
/* may be a filename */
|
/* may be a filename */
|
||||||
if (strchr(arg, '/') || strcmp (arg, "-") == 0)
|
if (strchr(arg, '/') || strcmp (arg, "-") == 0)
|
||||||
|
|||||||
+2
-2
@@ -412,8 +412,8 @@ static int add_prefixes(struct in6_addr *local, int prefix,
|
|||||||
opt->type = ICMP6_OPT_PREFIX;
|
opt->type = ICMP6_OPT_PREFIX;
|
||||||
opt->len = 4;
|
opt->len = 4;
|
||||||
opt->prefix_len = prefix;
|
opt->prefix_len = prefix;
|
||||||
/* autonomous only if we're not doing dhcp */
|
/* autonomous only if we're not doing dhcp, always set "on-link" */
|
||||||
opt->flags = do_slaac ? 0x40 : 0x00;
|
opt->flags = do_slaac ? 0xC0 : 0x80;
|
||||||
opt->valid_lifetime = htonl(time);
|
opt->valid_lifetime = htonl(time);
|
||||||
opt->preferred_lifetime = htonl(deprecate ? 0 : time);
|
opt->preferred_lifetime = htonl(deprecate ? 0 : time);
|
||||||
opt->reserved = 0;
|
opt->reserved = 0;
|
||||||
|
|||||||
Reference in new issue
Block a user