mirror of
http://thekelleys.org.uk/git/dnsmasq.git
synced 2026-11-06 15:51:41 +00:00
Compare commits
28
Commits
v2.60rc2
...
v2.61test3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2a82db4caf | ||
|
|
dd88c17f15 | ||
|
|
8b37270410 | ||
|
|
760169fc43 | ||
|
|
7023e38294 | ||
|
|
a7cf58cc47 | ||
|
|
e25d1a2ea2 | ||
|
|
70969c1757 | ||
|
|
3803437dcc | ||
|
|
eabc6dd76a | ||
|
|
e28d2e2b77 | ||
|
|
96fafe2ed6 | ||
|
|
c81d390f84 | ||
|
|
08456c61f6 | ||
|
|
bc26f9a03f | ||
|
|
6ffeff86be | ||
|
|
f444cddbaf | ||
|
|
d13191a46c | ||
|
|
801ca9a7b7 | ||
|
|
df66e341de | ||
|
|
71ee7ee254 | ||
|
|
a156cae901 | ||
|
|
22b135a116 | ||
|
|
0f08983d85 | ||
|
|
e3e86343fc | ||
|
|
7b6dd880f7 | ||
|
|
b7f4020133 | ||
|
|
c46c7c7584 |
No files matched your search
@@ -1,3 +1,15 @@
|
|||||||
|
version 2.61
|
||||||
|
Re-write interface discovery code on *BSD to use
|
||||||
|
getifaddrs. This is more portable, more straightforward,
|
||||||
|
and allows us to find the prefix length for IPv6
|
||||||
|
addresses.
|
||||||
|
|
||||||
|
Add ra-names DHCPv6 keyword which adds AAAA records
|
||||||
|
for dual-stack hosts which get IPv6 addresses via SLAAC.
|
||||||
|
|
||||||
|
Add --dhcp-duid to allow DUID-EN uids to be used.
|
||||||
|
|
||||||
|
|
||||||
version 2.60
|
version 2.60
|
||||||
Fix compilation problem in Mac OS X Lion. Thanks to Olaf
|
Fix compilation problem in Mac OS X Lion. Thanks to Olaf
|
||||||
Flebbe for the patch.
|
Flebbe for the patch.
|
||||||
@@ -76,6 +88,10 @@ version 2.60
|
|||||||
via an interface other than the expected one. Thanks to
|
via an interface other than the expected one. Thanks to
|
||||||
Lorenzo Milesi and John Hanks for spotting this one.
|
Lorenzo Milesi and John Hanks for spotting this one.
|
||||||
|
|
||||||
|
Update French translation. Thanks to Gildas Le Nadan.
|
||||||
|
|
||||||
|
Update Polish translation. Thanks to Jan Psota.
|
||||||
|
|
||||||
|
|
||||||
version 2.59
|
version 2.59
|
||||||
Fix regression in 2.58 which caused failure to start up
|
Fix regression in 2.58 which caused failure to start up
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ MAN = man
|
|||||||
|
|
||||||
#################################################################
|
#################################################################
|
||||||
|
|
||||||
# pmake way.
|
# pmake way. (NB no spaces to keep gmake 3.82 happy)
|
||||||
top != pwd
|
top!=pwd
|
||||||
# GNU make way.
|
# GNU make way.
|
||||||
top ?= $(shell pwd)
|
top?=$(CURDIR)
|
||||||
|
|
||||||
dbus_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --cflags dbus-1`
|
dbus_cflags = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --cflags dbus-1`
|
||||||
dbus_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --libs dbus-1`
|
dbus_libs = `echo $(COPTS) | $(top)/bld/pkg-wrapper HAVE_DBUS $(PKG_CONFIG) --libs dbus-1`
|
||||||
|
|||||||
Vendored
+8
@@ -1,3 +1,11 @@
|
|||||||
|
dnsmasq (2.61-1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream.
|
||||||
|
* Provide "dump-stats" initscript method. (closes: #654656)
|
||||||
|
* Add (empty) build-indep and build-arch rules targets.
|
||||||
|
|
||||||
|
-- Simon Kelley <simon@thekelleys.org.uk> Tue, 6 Mar 2012 19:45:43 +0000
|
||||||
|
|
||||||
dnsmasq (2.60-1) unstable; urgency=low
|
dnsmasq (2.60-1) unstable; urgency=low
|
||||||
|
|
||||||
* New upstream.
|
* New upstream.
|
||||||
|
|||||||
Vendored
+4
-1
@@ -256,8 +256,11 @@ case "$1" in
|
|||||||
*) log_success_msg "(unknown)" ; exit 4 ;;
|
*) log_success_msg "(unknown)" ; exit 4 ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
dump-stats)
|
||||||
|
kill -s USR1 `cat /var/run/dnsmasq/$NAME.pid`
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|status}" >&2
|
echo "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|dump-stats|status}" >&2
|
||||||
exit 3
|
exit 3
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Vendored
+3
@@ -184,7 +184,10 @@ endef
|
|||||||
# Below here is fairly generic really
|
# Below here is fairly generic really
|
||||||
|
|
||||||
binary: binary-arch binary-indep
|
binary: binary-arch binary-indep
|
||||||
|
|
||||||
build:
|
build:
|
||||||
|
build-arch:
|
||||||
|
build-indep:
|
||||||
|
|
||||||
checkroot:
|
checkroot:
|
||||||
test root = "`whoami`"
|
test root = "`whoami`"
|
||||||
|
|||||||
@@ -164,6 +164,15 @@
|
|||||||
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
||||||
#dhcp-range=1234::, ra-only
|
#dhcp-range=1234::, ra-only
|
||||||
|
|
||||||
|
# Do Router Advertisements, BUT NOT DHCP for this subnet, also try and
|
||||||
|
# add names to the DNS for the IPv6 address of SLAAC-configured dual-stack
|
||||||
|
# hosts. Use the DHCPv4 lease to derive the name, network segment and
|
||||||
|
# MAC address and assume that the host will also have an
|
||||||
|
# IPv6 address calculated using the SLAAC alogrithm.
|
||||||
|
# This will generate an erroneous AAAA record if a host is using privacy
|
||||||
|
# extensions or does not support IPv6. Use with care.
|
||||||
|
#dhcp-range=1234::, ra-names
|
||||||
|
|
||||||
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
# Do Router Advertisements, BUT NOT DHCP for this subnet.
|
||||||
# Set the lifetime to 46 hours. (Note: minimum lifetime is 2 hours.)
|
# Set the lifetime to 46 hours. (Note: minimum lifetime is 2 hours.)
|
||||||
#dhcp-range=1234::, ra-only, 48h
|
#dhcp-range=1234::, ra-only, 48h
|
||||||
|
|||||||
+25
-4
@@ -23,7 +23,7 @@ options. It includes a secure, read-only,
|
|||||||
TFTP server to allow net/PXE boot of DHCP hosts and also supports BOOTP.
|
TFTP server to allow net/PXE boot of DHCP hosts and also supports BOOTP.
|
||||||
.PP
|
.PP
|
||||||
Dnsmasq
|
Dnsmasq
|
||||||
supports IPv6 for DNS and TFTP, but not DHCP.
|
supports IPv6 for all functions and a minimal router-advertisemnet daemon.
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
Note that in general missing parameters are allowed and switch off
|
Note that in general missing parameters are allowed and switch off
|
||||||
functions, for instance "--pid-file" disables writing a PID file. On
|
functions, for instance "--pid-file" disables writing a PID file. On
|
||||||
@@ -556,7 +556,18 @@ the keyword
|
|||||||
which tells dnsmasq to offer Router Advertisement only on this subnet,
|
which tells dnsmasq to offer Router Advertisement only on this subnet,
|
||||||
and not DHCP. This applies to IPv6 only, see
|
and not DHCP. This applies to IPv6 only, see
|
||||||
.B enable-ra
|
.B enable-ra
|
||||||
for details.
|
for details. Instead, the keyword
|
||||||
|
.B ra-names
|
||||||
|
may be used. This does the same at ra-only, but also enables a mode
|
||||||
|
which gives DNS names to dual-stack hosts which do SLAAC for
|
||||||
|
IPv6. Dnsmasq uses the hosts IPv4 lease to derive the name, network
|
||||||
|
segment and MAC address and assumes that the host will also have an
|
||||||
|
IPv6 address calculated using the SLAAC alogrithm, on the same network
|
||||||
|
segment. An AAAA record is added to the DNS for this IPv6
|
||||||
|
address. Note that this is only happens for directly-connected
|
||||||
|
networks, (not one doing DHCP via a relay) and it will generate an
|
||||||
|
erroneous AAAA record if a host is using privacy extensions or does
|
||||||
|
not support IPv6. Use with care.
|
||||||
|
|
||||||
The interface:<interface name> section is not normally used. See the
|
The interface:<interface name> section is not normally used. See the
|
||||||
NOTES section for details of this.
|
NOTES section for details of this.
|
||||||
@@ -595,7 +606,7 @@ A single
|
|||||||
.B dhcp-host
|
.B dhcp-host
|
||||||
may contain an IPv4 address or an IPv6 address, or both. IPv6 addresses must be bracketed by square brackets thus:
|
may contain an IPv4 address or an IPv6 address, or both. IPv6 addresses must be bracketed by square brackets thus:
|
||||||
.B --dhcp-host=laptop,[1234::56]
|
.B --dhcp-host=laptop,[1234::56]
|
||||||
Note that in IPv6 DHCP, the hardware address is not normally available, so a client must be identified by client-id (called client DUID) in IPv6-land) or hostname.
|
Note that in IPv6 DHCP, the hardware address is not normally available, so a client must be identified by client-id (called client DUID in IPv6-land) or hostname.
|
||||||
|
|
||||||
The special option id:* means "ignore any client-id
|
The special option id:* means "ignore any client-id
|
||||||
and use MAC addresses only." This is useful when a client presents a client-id sometimes
|
and use MAC addresses only." This is useful when a client presents a client-id sometimes
|
||||||
@@ -1031,6 +1042,16 @@ the tags used to determine them.
|
|||||||
.B \-l, --dhcp-leasefile=<path>
|
.B \-l, --dhcp-leasefile=<path>
|
||||||
Use the specified file to store DHCP lease information.
|
Use the specified file to store DHCP lease information.
|
||||||
.TP
|
.TP
|
||||||
|
.B --dhcp-duid=<enterprise-id>,<uid>
|
||||||
|
(IPv6 only) Specify the server persistent UID which the DHCPv6 server
|
||||||
|
will use. This option is not normally required as dnsmasq creates a
|
||||||
|
DUID automatically when it is first needed. When given, this option
|
||||||
|
provides dnsmasq the data required to create a DUID-EN type DUID. Note
|
||||||
|
that once set, the DUID is stored in the lease database, so to change between DUID-EN and
|
||||||
|
automatically created DUIDs or vice-versa, the lease database must be
|
||||||
|
re-intialised. The enterprise-id is assigned by IANA, and the uid is a
|
||||||
|
string of hex octets unique to a particular device.
|
||||||
|
.TP
|
||||||
.B \-6 --dhcp-script=<path>
|
.B \-6 --dhcp-script=<path>
|
||||||
Whenever a new DHCP lease is created, or an old one destroyed, the
|
Whenever a new DHCP lease is created, or an old one destroyed, the
|
||||||
executable specified by this option is run. <path>
|
executable specified by this option is run. <path>
|
||||||
@@ -1257,7 +1278,7 @@ dnsmasq will advertise a prefix for each dhcp-range, with default
|
|||||||
router and recursive DNS server as the relevant link-local address on
|
router and recursive DNS server as the relevant link-local address on
|
||||||
the machine running dnsmasq. The "managed address" bits are set,
|
the machine running dnsmasq. The "managed address" bits are set,
|
||||||
except for a dhcp-range which is marked as "ra-only", in which case RA
|
except for a dhcp-range which is marked as "ra-only", in which case RA
|
||||||
is provided by no DHCPv6 service and the managed address bits are
|
is provided but no DHCPv6 service and the managed address bits are
|
||||||
cleared.
|
cleared.
|
||||||
.B enable-ra
|
.B enable-ra
|
||||||
enables router advertisement for prefixes where dnsmasq is doing
|
enables router advertisement for prefixes where dnsmasq is doing
|
||||||
|
|||||||
+218
-86
@@ -579,7 +579,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>[,<masque de réseau>[,<broadcast>]][,<durée de bail>]
|
.B \-F, --dhcp-range=[interface:<interface>,][tag:<label>[,tag:<label>],][set:<label>],]<adresse de début>,<adresse de fin>[,<masque de réseau>[,<broadcast>]][,<durée de bail>]
|
||||||
|
.TP
|
||||||
|
.B \-F, --dhcp-range=[interface:<interface>,][tag:<label>[,tag:<label>],][set:<label>],]<addresse IPv6 de début>,<adresse IPv6 de fin>[,<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
|
||||||
@@ -604,6 +606,14 @@ est toujours optionnelle.
|
|||||||
|
|
||||||
Il est toujours possible d'avoir plus d'une plage DHCP pour un même
|
Il est toujours possible d'avoir plus d'une plage DHCP pour un même
|
||||||
sous-réseau.
|
sous-réseau.
|
||||||
|
|
||||||
|
Pour IPv6, les paramètres sont légèrement différents : au lieu d'un masque de
|
||||||
|
réseau et d'une adresse de broadcast, il existe une longueur de préfixe
|
||||||
|
optionnelle. Si elle est omise, la valeur par défaut est 64. À la différence
|
||||||
|
d'IPv4, la longueur de préfixe n'est pas automatiquement déduite de la
|
||||||
|
configuration de l'interface. La taille minimale pour la longueur de préfixe
|
||||||
|
est 64.
|
||||||
|
|
||||||
L'identifiant de label optionnel
|
L'identifiant de label optionnel
|
||||||
.B set:<label>
|
.B set:<label>
|
||||||
fournie une étiquette alphanumérique qui identifie ce réseau, afin de permettre
|
fournie une étiquette alphanumérique qui identifie ce réseau, afin de permettre
|
||||||
@@ -627,7 +637,15 @@ spécifié. (voir
|
|||||||
.B pxe-prompt
|
.B pxe-prompt
|
||||||
et
|
et
|
||||||
.B pxe-service
|
.B pxe-service
|
||||||
pour plus de détails).
|
pour plus de détails, s'applique à IPv4 seulement).
|
||||||
|
|
||||||
|
L'adresse de fin peut être remplacée par le mot-clef
|
||||||
|
.B ra-only
|
||||||
|
qui indique à dnsmasq de n'effectuer que des annonces de routeur (Router
|
||||||
|
Advertisement, RA) sur ce sous-réseau, et de ne pas faire de DHCP. Ceci
|
||||||
|
s'applique uniquement à IPv6, voir
|
||||||
|
.B enable-ra
|
||||||
|
pour plus de détails.
|
||||||
|
|
||||||
La section interface:<nom d'interface> n'est normalement pas utilisée. Se
|
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.
|
référer aux indications de la section NOTES pour plus de détail à ce sujet.
|
||||||
@@ -663,6 +681,15 @@ spécifier l'identifiant client sous la forme d'une chaîne de caractères, comm
|
|||||||
ceci :
|
ceci :
|
||||||
.B --dhcp-host=id:identifiantclientsousformedechaine,.....
|
.B --dhcp-host=id:identifiantclientsousformedechaine,.....
|
||||||
|
|
||||||
|
Un seul
|
||||||
|
.B dhcp-host
|
||||||
|
peut contenir une adresse IPv4, une adresse IPv6, ou les deux en même temps.
|
||||||
|
Les adresses IPv6 doivent-être mises entre crochets comme suit :
|
||||||
|
.B --dhcp-host=laptop,[1234::56]
|
||||||
|
A noter que pour le DHCP IPv6, l'adresse matérielle n'est en principe pas
|
||||||
|
disponible, aussi un client doit-être identifié par un identifiant de client
|
||||||
|
(appellé "DUID client") ou un nom d'hôte.
|
||||||
|
|
||||||
L'option spéciale id:* signifie : "ignorer tout identifiant client et n'utiliser
|
L'option spéciale id:* signifie : "ignorer tout identifiant client et n'utiliser
|
||||||
que l'adresse matérielle". Cela est utile lorsqu'un client présente un
|
que l'adresse matérielle". Cela est utile lorsqu'un client présente un
|
||||||
identifiant client mais pas les autres.
|
identifiant client mais pas les autres.
|
||||||
@@ -709,7 +736,7 @@ ARP en les précédant du type ARP (en Hexadécimal) et de "-". Ainsi
|
|||||||
coïncidera uniquement avec des adresses matérielles Token-Ring, puisque le type
|
coïncidera uniquement avec des adresses matérielles Token-Ring, puisque le type
|
||||||
ARP pour une adresse Token-Ring est 6.
|
ARP pour une adresse Token-Ring est 6.
|
||||||
|
|
||||||
Un cas spécial correspond à l'inclusion d'une ou plusieurs adresses
|
Un cas spécial, pour IPv4, correspond à l'inclusion d'une ou plusieurs adresses
|
||||||
matérielles, c-à-d :
|
matérielles, c-à-d :
|
||||||
.B --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2.
|
.B --dhcp-host=11:22:33:44:55:66,12:34:56:78:90:12,192.168.0.2.
|
||||||
Cela permet à une adresse IP d'être associé à plusieurs adresses
|
Cela permet à une adresse IP d'être associé à plusieurs adresses
|
||||||
@@ -750,22 +777,22 @@ une adresse IP sous la forme de 4 chiffres séparés par des points. Lorsque lu
|
|||||||
par Dnsmasq, ces lignes ont exactement le même effet que l'option
|
par Dnsmasq, ces lignes ont exactement le même effet que l'option
|
||||||
.B --dhcp-host
|
.B --dhcp-host
|
||||||
contenant les mêmes informations. /etc/ethers est relu à la réception d'un
|
contenant les mêmes informations. /etc/ethers est relu à la réception d'un
|
||||||
signal SIGHUP par Dnsmasq.
|
signal SIGHUP par Dnsmasq. Les adresses IPv6 ne sont PAS lues dans /etc/ethers.
|
||||||
.TP
|
.TP
|
||||||
.B \-O, --dhcp-option=[tag:<label>,[tag:<label>]][encap:<option>,][vi-encap:<entreprise>,][vendor:[<classe_vendeur>],][<option>|option:<nom d'option>],[<valeur>[,<valeur>]]
|
.B \-O, --dhcp-option=[tag:<label>,[tag:<label>]][encap:<option>,][vi-encap:<entreprise>,][vendor:[<classe_vendeur>],][<option>|option:<nom d'option>|option6:<option>|option6:<nom d'option>],[<valeur>[,<valeur>]]
|
||||||
Spécifie des options différentes ou supplémentaires pour des clients DHCP. Par
|
Spécifie des options différentes ou supplémentaires pour des clients DHCP. Par
|
||||||
défaut, Dnsmasq envoie un ensemble standard d'options aux clients DHCP : le
|
défaut, Dnsmasq envoie un ensemble standard d'options aux clients DHCP : le
|
||||||
masque de réseau et l'adresse de broadcast sont les mêmes que pour l'hôte
|
masque de réseau et l'adresse de broadcast sont les mêmes que pour l'hôte
|
||||||
sur lequel tourne Dnsmasq, et le serveur DNS ainsi que la route par défaut
|
sur lequel tourne Dnsmasq, et le serveur DNS ainsi que la route par défaut
|
||||||
prennent comme valeur l'adresse de la machine sur laquelle tourne Dnsmasq. Si
|
prennent comme valeur l'adresse de la machine sur laquelle tourne Dnsmasq.
|
||||||
une option de nom de domaine a été définie, son contenu est transmis. Cette
|
(Des règles équivalentes s'appliquent en IPv6). Si une option de nom de domaine
|
||||||
option de configuration permet de changer toutes ces valeurs par défaut, ou de
|
a été définie, son contenu est transmis. Cette option de configuration permet
|
||||||
spécifier d'autres options. L'option DHCP à transmettre peut être fournie sous
|
de changer toutes ces valeurs par défaut, ou de spécifier d'autres options.
|
||||||
forme d'un nombre décimal ou sous la forme "option:<nom d'option>". Les nombres
|
L'option DHCP à transmettre peut être fournie sous forme d'un nombre décimal
|
||||||
correspondants aux options sont définis dans la RFC2132 et suivants. Les noms
|
ou sous la forme "option:<nom d'option>". Les nombres correspondants aux options
|
||||||
d'options connus par Dnsmasq peuvent être obtenus via "Dnsmasq --help dhcp".
|
sont définis dans la RFC2132 et suivants. Les noms d'options connus par Dnsmasq
|
||||||
Par exemple, pour définir la route par défaut à 192.168.4.4, il est possible de
|
peuvent être obtenus via "Dnsmasq --help dhcp". Par exemple, pour définir la
|
||||||
faire
|
route par défaut à 192.168.4.4, il est possible de faire
|
||||||
.B --dhcp-option=3,192.168.4.4
|
.B --dhcp-option=3,192.168.4.4
|
||||||
ou
|
ou
|
||||||
.B --dhcp-option = option:router, 192.168.4.4
|
.B --dhcp-option = option:router, 192.168.4.4
|
||||||
@@ -788,6 +815,13 @@ de l'option 120 sont traités conforméments à la RFC 3361. Les adresses IP sou
|
|||||||
forme de 4 chiffres séparés par des points suivies par une barre montante "/",
|
forme de 4 chiffres séparés par des points suivies par une barre montante "/",
|
||||||
puis une taille de masque sont encodés conforméments à la RFC 3442.
|
puis une taille de masque sont encodés conforméments à la RFC 3442.
|
||||||
|
|
||||||
|
Les options IPv6 sont fournies en utilisant le mot-clef
|
||||||
|
.B option6:
|
||||||
|
suivi par le numéro d'option ou le nom d'option. L'espace de nommage des options
|
||||||
|
IPv6 est disjint de l'espace de nommage des options IPv4. Les adresses IPv6
|
||||||
|
en option doivent être entourées de crochets, comme par exemple :
|
||||||
|
.B --dhcp-option=option6:ntp-server,[1234::56]
|
||||||
|
|
||||||
Attention : aucun test n'étant fait pour vérifier que des données d'un type
|
Attention : aucun test n'étant fait pour vérifier que des données d'un type
|
||||||
adéquat sont envoyées pour un numéro d'option donné, il est tout à fait possible
|
adéquat sont envoyées pour un numéro d'option donné, il est tout à fait possible
|
||||||
de persuader Dnsmasq de générer des paquets DHCP illégaux par une utilisation
|
de persuader Dnsmasq de générer des paquets DHCP illégaux par une utilisation
|
||||||
@@ -806,8 +840,8 @@ d'une chaîne de caractères comme nom de serveur TFTP, il est nécessaire de fa
|
|||||||
comme suit :
|
comme suit :
|
||||||
.B --dhcp-option=66,"1.2.3.4"
|
.B --dhcp-option=66,"1.2.3.4"
|
||||||
|
|
||||||
Les options encapsulées de classes de vendeurs peuvent-être aussi spécifiées en
|
Les options encapsulées de classes de vendeurs peuvent-être aussi spécifiées
|
||||||
utilisant
|
(pour IPv4 seulement) en utilisant
|
||||||
.B --dhcp-option
|
.B --dhcp-option
|
||||||
: par exemple
|
: par exemple
|
||||||
.B --dhcp-option=vendor:PXEClient,1,0.0.0.0
|
.B --dhcp-option=vendor:PXEClient,1,0.0.0.0
|
||||||
@@ -823,7 +857,7 @@ par le client. Il est possible d'omettre complètement une classe de vendeur :
|
|||||||
.B --dhcp-option=vendor:,1,0.0.0.0
|
.B --dhcp-option=vendor:,1,0.0.0.0
|
||||||
Dans ce cas l'option encapsulée est toujours envoyée.
|
Dans ce cas l'option encapsulée est toujours envoyée.
|
||||||
|
|
||||||
Les options peuvent-être encapsulées au sein d'autres options :
|
En IPv4, les options peuvent-être encapsulées au sein d'autres options :
|
||||||
par exemple
|
par exemple
|
||||||
.B --dhcp-option=encap:175, 190, "iscsi-client0"
|
.B --dhcp-option=encap:175, 190, "iscsi-client0"
|
||||||
enverra l'option 175, au sein de laquelle se trouve l'option 190.
|
enverra l'option 175, au sein de laquelle se trouve l'option 190.
|
||||||
@@ -836,7 +870,8 @@ identifiant le vendeur" ("Vendor-Identifying Vendor Options") telle que
|
|||||||
décrite dans le RFC3925. Celles-ci sont spécifiées comme suit :
|
décrite dans le RFC3925. Celles-ci sont spécifiées comme suit :
|
||||||
.B --dhcp-option=vi-encap:2, 10, "text"
|
.B --dhcp-option=vi-encap:2, 10, "text"
|
||||||
Le numéro dans la section vi-encap: est le numéro IANA de l'entreprise servant
|
Le numéro dans la section vi-encap: est le numéro IANA de l'entreprise servant
|
||||||
à identifier cette option.
|
à identifier cette option. Cette forme d'encapsulation est également supportée
|
||||||
|
en IPv6.
|
||||||
|
|
||||||
L'adresse 0.0.0.0 n'est pas traitée de manière particulière lorsque fournie dans
|
L'adresse 0.0.0.0 n'est pas traitée de manière particulière lorsque fournie dans
|
||||||
une option encapsulée.
|
une option encapsulée.
|
||||||
@@ -849,8 +884,8 @@ dans la liste de paramêtres requis. Cela est parfois nécessaire, par exemple l
|
|||||||
de la fourniture d'options à PXELinux.
|
de la fourniture d'options à PXELinux.
|
||||||
.TP
|
.TP
|
||||||
.B --dhcp-no-override
|
.B --dhcp-no-override
|
||||||
Désactive la réutilisation des champs DHCP nom de serveur et nom de
|
(IPv4 seulement) Désactive la réutilisation des champs DHCP nom de serveur et
|
||||||
fichier comme espace supplémentaire pour les options. Si cela est
|
nom de fichier comme espace supplémentaire pour les options. Si cela est
|
||||||
possible, dnsmasq déplace les informations sur le serveur de démarrage
|
possible, dnsmasq déplace les informations sur le serveur de démarrage
|
||||||
et le nom de fichier (fournis par 'dhcp-boot') en dehors des champs
|
et le nom de fichier (fournis par 'dhcp-boot') en dehors des champs
|
||||||
dédiés à cet usage dans les options DHCP. Cet espace supplémentaire est
|
dédiés à cet usage dans les options DHCP. Cet espace supplémentaire est
|
||||||
@@ -859,7 +894,8 @@ quelques rares cas, perturber des clients vieux ou défectueux. Cette
|
|||||||
option force le comportement à l'utilisation des valeurs "simples et sûres"
|
option force le comportement à l'utilisation des valeurs "simples et sûres"
|
||||||
afin d'éviter des problèmes dans de tels cas.
|
afin d'éviter des problèmes dans de tels cas.
|
||||||
.TP
|
.TP
|
||||||
.B \-U, --dhcp-vendorclass=set:<label>,<classe de vendeur>
|
.B \-U, --dhcp-vendorclass=set:<label>,[enterprise:<numéro IANA d'enterprise>,]<classe de vendeur>
|
||||||
|
|
||||||
Associe une chaîne de classe de vendeur à un label. La plupart
|
Associe une chaîne de classe de vendeur à un label. La plupart
|
||||||
des clients DHCP fournissent une "classe de vendeur" ("vendor class") qui
|
des clients DHCP fournissent une "classe de vendeur" ("vendor class") qui
|
||||||
représente, d'une certaine façon, le type d'hôte. Cette option associe des
|
représente, d'une certaine façon, le type d'hôte. Cette option associe des
|
||||||
@@ -875,6 +911,11 @@ en temps que sous-chaîne de caractères au sein de la classe de vendeur fournie
|
|||||||
par le client, de façon à permettre la recherche d'un sous-ensemble de la chaîne
|
par le client, de façon à permettre la recherche d'un sous-ensemble de la chaîne
|
||||||
de caractères ("fuzzy matching"). Le préfixe set: est optionnel mais autorisé
|
de caractères ("fuzzy matching"). Le préfixe set: est optionnel mais autorisé
|
||||||
afin de conserver une certaine homogénéité.
|
afin de conserver une certaine homogénéité.
|
||||||
|
|
||||||
|
Notez qu'en IPv6 (et seulement en IPv6), les noms de classes de vendeurs
|
||||||
|
sont dans un espace de nom associé au numéro attribué à l'entreprise par
|
||||||
|
l'IANA. Ce numéro est fourni par le biais du mot-clef enterprise: et seules
|
||||||
|
les classes de vendeurs associées au numéro spécifié seront cherchées.
|
||||||
.TP
|
.TP
|
||||||
.B \-j, --dhcp-userclass=set:<label>,<classe utilisateur>
|
.B \-j, --dhcp-userclass=set:<label>,<classe utilisateur>
|
||||||
Associe une chaîne de classe d'utilisateur à un label (effectue la
|
Associe une chaîne de classe d'utilisateur à un label (effectue la
|
||||||
@@ -887,7 +928,7 @@ d'impression différent pour les hôtes de la classe "comptes" et ceux de la
|
|||||||
classe "ingénierie".
|
classe "ingénierie".
|
||||||
.TP
|
.TP
|
||||||
.B \-4, --dhcp-mac=set:<label>,<adresse MAC>
|
.B \-4, --dhcp-mac=set:<label>,<adresse MAC>
|
||||||
Associe une adresse matérielle (MAC) à un label. L'adresse
|
(IPv4 uniquement) Associe une adresse matérielle (MAC) à un label. L'adresse
|
||||||
matérielle peut inclure des jokers. Par exemple
|
matérielle peut inclure des jokers. Par exemple
|
||||||
.B --dhcp-mac=set:3com,01:34:23:*:*:*
|
.B --dhcp-mac=set:3com,01:34:23:*:*:*
|
||||||
permet de définir le label "3com" pour n'importe quel hôte dont l'adresse
|
permet de définir le label "3com" pour n'importe quel hôte dont l'adresse
|
||||||
@@ -901,16 +942,19 @@ chaîne de valeurs hexadécimales séparées par des ":", mais il est également
|
|||||||
possible qu'elle le soit sous la forme d'une simple chaîne de caractères. Si
|
possible qu'elle le soit sous la forme d'une simple chaîne de caractères. Si
|
||||||
l'identifiant de circuit ou d'agent correspond exactement à celui fourni par le
|
l'identifiant de circuit ou d'agent correspond exactement à celui fourni par le
|
||||||
relais DHCP, alors le label est apposé.
|
relais DHCP, alors le label est apposé.
|
||||||
|
.B dhcp-remoteid
|
||||||
|
est supporté en IPv6 (mais non dhcp-circuitid).
|
||||||
.TP
|
.TP
|
||||||
.B --dhcp-subscrid=set:<label>,<identifiant d'abonné>
|
.B --dhcp-subscrid=set:<label>,<identifiant d'abonné>
|
||||||
Associe des options de relais DHCP issues de la RFC3993 à des labels.
|
(IPv4 et IPv6) Associe des options de relais DHCP issues de la RFC3993 à des
|
||||||
|
labels.
|
||||||
.TP
|
.TP
|
||||||
.B --dhcp-proxy[=<adresse ip>]......
|
.B --dhcp-proxy[=<adresse ip>]......
|
||||||
Un agent relai DHCP normal est uniquement utilisé pour faire suivre les
|
(IPv4 seulement) Un agent relai DHCP normal est uniquement utilisé pour faire
|
||||||
éléments initiaux de l'interaction avec le serveur DHCP. Une fois que le
|
suivre les éléments initiaux de l'interaction avec le serveur DHCP. Une fois
|
||||||
client est configuré, il communique directement avec le serveur. Cela n'est pas
|
que le client est configuré, il communique directement avec le serveur. Cela
|
||||||
souhaitable si le relais rajoute des informations supplémentaires aux paquets
|
n'est pas souhaitable si le relais rajoute des informations supplémentaires
|
||||||
DHCP, telles que celles utilisées dans
|
aux paquets DHCP, telles que celles utilisées dans
|
||||||
.B dhcp-circuitid
|
.B dhcp-circuitid
|
||||||
et
|
et
|
||||||
.B dhcp-remoteid.
|
.B dhcp-remoteid.
|
||||||
@@ -973,26 +1017,28 @@ configuration dhcp-host de Dnsmasq, ainsi que le contenu des fichiers /etc/hosts
|
|||||||
et /etc/ethers.
|
et /etc/ethers.
|
||||||
.TP
|
.TP
|
||||||
.B --dhcp-generate-names=tag:<label>[,tag:<label>]
|
.B --dhcp-generate-names=tag:<label>[,tag:<label>]
|
||||||
Générer un nom pour les clients DHCP qui autrement n'en aurait pas, en
|
(IPv4 seulement) Générer un nom pour les clients DHCP qui autrement n'en aurait
|
||||||
utilisant l'adresse MAC sous sa forme hexadécimale, séparée par des tirets.
|
pas, en utilisant l'adresse MAC sous sa forme hexadécimale, séparée par des
|
||||||
|
tirets.
|
||||||
Noter que si un hôte fourni un nom, celui-ci sera utilisé de préférence au nom
|
Noter que si un hôte fourni un nom, celui-ci sera utilisé de préférence au nom
|
||||||
autogénéré, à moins que
|
autogénéré, à moins que
|
||||||
.B --dhcp-ignore-names
|
.B --dhcp-ignore-names
|
||||||
ne soit positionné.
|
ne soit positionné.
|
||||||
.TP
|
.TP
|
||||||
.B --dhcp-broadcast=[tag:<label>[,tag:<label>]]
|
.B --dhcp-broadcast=[tag:<label>[,tag:<label>]]
|
||||||
Lorsque tous les labels fournis dans l'option sont présents, toujours utiliser
|
(IPv4 seulement) Lorsque tous les labels fournis dans l'option sont présents,
|
||||||
le broadcast pour communiquer avec l'hôte lorsque celui-ci n'est
|
toujours utiliser le broadcast pour communiquer avec l'hôte lorsque celui-ci
|
||||||
pas configuré. Il est possible de ne spécifier aucun label, auquel cas cette
|
n'est pas configuré. Il est possible de ne spécifier aucun label, auquel cas
|
||||||
option s'applique inconditionnellement. La plupart des clients DHCP nécessitant une réponse par le biais
|
cette option s'applique inconditionnellement. La plupart des clients DHCP
|
||||||
d'un broadcast activent une option dans leur requête, ce qui fait que cela
|
nécessitant une réponse par le biais d'un broadcast activent une option dans
|
||||||
se fait automatiquement, mais ce n'est pas la cas de certains vieux clients BOOTP.
|
leur requête, ce qui fait que cela se fait automatiquement, mais ce n'est pas
|
||||||
|
le cas de certains vieux clients BOOTP.
|
||||||
.TP
|
.TP
|
||||||
.B \-M, --dhcp-boot=[tag:<label>,]<nom de fichier>,[<nom de serveur>[,<adresse de serveur>|<nom du serveur tftp>]]
|
.B \-M, --dhcp-boot=[tag:<label>,]<nom de fichier>,[<nom de serveur>[,<adresse de serveur>|<nom du serveur tftp>]]
|
||||||
Spécifie les options BOOTP devant être retournées par le serveur DHCP. Le nom de
|
(IPv4 seulement) Spécifie les options BOOTP devant être retournées par le
|
||||||
serveur ainsi que l'adresse sont optionnels : s'ils ne sont pas fournis, le nom
|
serveur DHCP. Le nom de serveur ainsi que l'adresse sont optionnels : s'ils
|
||||||
est laissé vide et l'adresse fournie est celle de la machine sur laquelle
|
ne sont pas fournis, le nom est laissé vide et l'adresse fournie est celle de
|
||||||
s'exécute Dnsmasq. Si Dnsmasq founit un service TFTP (voir
|
la machine sur laquelle s'exécute Dnsmasq. Si Dnsmasq founit un service TFTP (voir
|
||||||
.B --enable-tftp
|
.B --enable-tftp
|
||||||
), alors seul un nom de fichier est requis ici pour permettre un démarrage par
|
), alors seul un nom de fichier est requis ici pour permettre un démarrage par
|
||||||
le réseau.
|
le réseau.
|
||||||
@@ -1018,7 +1064,7 @@ Veuillez noter que dans ce mode séquentiel, les clients qui laissent expirer
|
|||||||
leur bail ont beaucoup plus de chance de voir leur adresse IP changer, aussi
|
leur bail ont beaucoup plus de chance de voir leur adresse IP changer, aussi
|
||||||
cette option ne devrait pas être utilisée dans un cas général.
|
cette option ne devrait pas être utilisée dans un cas général.
|
||||||
.TP
|
.TP
|
||||||
.B --pxe-service=[tag:<label>,]<CSA>,<entrée de menu>[,<nom de fichier>|<type de service de démarrage>][,<adresse de serveur>]
|
.B --pxe-service=[tag:<label>,]<CSA>,<entrée de menu>[,<nom de fichier>|<type de service de démarrage>][,<adresse de serveur>|<nom de serveur>]
|
||||||
La plupart des ROMS de démarrage PXE ne permettent au système PXE que la simple
|
La plupart des ROMS de démarrage PXE ne permettent au système PXE que la simple
|
||||||
obtention d'une adresse IP, le téléchargement du fichier spécifié dans
|
obtention d'une adresse IP, le téléchargement du fichier spécifié dans
|
||||||
.B dhcp-boot
|
.B dhcp-boot
|
||||||
@@ -1036,17 +1082,20 @@ client PXE qu'il faut télécharger ce fichier via TFTP, soit depuis ce serveur
|
|||||||
(l'option
|
(l'option
|
||||||
.B enable-tftp
|
.B enable-tftp
|
||||||
doit être spécifiée pour que cela marche), soit depuis un autre serveur TFTP
|
doit être spécifiée pour que cela marche), soit depuis un autre serveur TFTP
|
||||||
si une adresse de serveur est fournie.
|
si une adresse ou un nom de serveur est fournie.
|
||||||
Veuillez noter que le suffixe de "couche" (en principe ".0") est fourni par PXE
|
Veuillez noter que le suffixe de "couche" (en principe ".0") est fourni par PXE
|
||||||
et ne doit pas être rajouté au nom de fichier. Si une valeur numérique entière
|
et ne doit pas être rajouté au nom de fichier. Si une valeur numérique entière
|
||||||
est fournir pour le type de démarrage, en remplacement du nom de fichier, le
|
est fournir pour le type de démarrage, en remplacement du nom de fichier, le
|
||||||
client PXE devra chercher un service de démarrage de ce type sur le réseau.
|
client PXE devra chercher un service de démarrage de ce type sur le réseau.
|
||||||
Cette recherche peut être faite via broadcast ou directement auprès d'un
|
Cette recherche peut être faite via broadcast ou directement auprès d'un
|
||||||
serveur si son adresse IP est fournie dans l'option.
|
serveur si son adresse IP ou son nom sont fournis dans l'option.
|
||||||
Si aucun nom de fichier n'est donné ni aucune valeur de type de service de
|
Si aucun nom de fichier n'est donné ni aucune valeur de type de service de
|
||||||
démarrage n'est fournie (ou qu'une valeur de 0 est donnée pour le type de
|
démarrage n'est fournie (ou qu'une valeur de 0 est donnée pour le type de
|
||||||
service), alors l'entrée de menu provoque l'interruption du démarrage par
|
service), alors l'entrée de menu provoque l'interruption du démarrage par
|
||||||
le réseau et la poursuite du démarrage sur un média local.
|
le réseau et la poursuite du démarrage sur un média local. L'adresse de serveur
|
||||||
|
peut être donnée sous la forme de nom de domaine qui est recherché dans
|
||||||
|
/etc/hosts. Ce nom peut-être associé à plusieurs adresses IP, qui dans ce cas
|
||||||
|
sont utilisées à tour de rôle (en "round-robin").
|
||||||
.TP
|
.TP
|
||||||
.B --pxe-prompt=[tag:<label>,]<invite>[,<délai>]
|
.B --pxe-prompt=[tag:<label>,]<invite>[,<délai>]
|
||||||
Cette option permet d'afficher une invite à la suite du démarrage PXE. Si un
|
Cette option permet d'afficher une invite à la suite du démarrage PXE. Si un
|
||||||
@@ -1079,38 +1128,39 @@ créant des milliers de baux et utilisant beaucoup de mémoire dans le processus
|
|||||||
Dnsmasq.
|
Dnsmasq.
|
||||||
.TP
|
.TP
|
||||||
.B \-K, --dhcp-authoritative
|
.B \-K, --dhcp-authoritative
|
||||||
Cette option doit être donnée lorsque Dnsmasq est le seul serveur DHCP sur le
|
(IPv4 seulement) Cette option doit être donnée lorsque Dnsmasq est le seul
|
||||||
réseau. Cela change le comportement par défaut qui est celui d'un strict respect
|
serveur DHCP sur le réseau. Cela change le comportement par défaut qui est
|
||||||
des RFC, afin que les requêtes DHCP pour des baux inconnus par des hôtes
|
celui d'un strict respect des RFC, afin que les requêtes DHCP pour des baux
|
||||||
inconnus ne soient pas ignorées. Cela permet à de nouveaux hôtes d'obtenir des
|
inconnus par des hôtes inconnus ne soient pas ignorées. Cela permet à de
|
||||||
baux sans tenir compte de fastidieuses temporisations ("timeout"). Cela permet
|
nouveaux hôtes d'obtenir des baux sans tenir compte de fastidieuses
|
||||||
également à Dnsmasq de reconstruire sa base de donnée contenant les baux sans
|
temporisations ("timeout"). Cela permet également à Dnsmasq de reconstruire
|
||||||
que les clients n'aient besoin de redemander un bail, si celle-ci est perdue.
|
sa base de données contenant les baux sans que les clients n'aient besoin de
|
||||||
|
redemander un bail, si celle-ci est perdue.
|
||||||
.TP
|
.TP
|
||||||
.B --dhcp-alternate-port[=<port serveur>[,<port client>]]
|
.B --dhcp-alternate-port[=<port serveur>[,<port client>]]
|
||||||
Change les ports utilisés par défaut pour le DHCP. Si cette option est donnée
|
(IPv4 seulement) Change les ports utilisés par défaut pour le DHCP. Si cette
|
||||||
toute seule sans arguments, alors change les ports utilisés pour le DHCP
|
option est donnée seule sans argument, alors change les ports utilisés pour le
|
||||||
de 67 et 68 respectivement à 1067 et 1068. Si un seul argument est donné, ce
|
DHCP de 67 et 68 respectivement à 1067 et 1068. Si un seul argument est donné, ce
|
||||||
numéro est utilisé pour le port serveur et ce numéro plus 1 est utilisé pour le
|
numéro est utilisé pour le port serveur et ce numéro plus 1 est utilisé pour le
|
||||||
port client. Enfin, en fournissant deux numéros de ports, il est possible de
|
port client. Enfin, en fournissant deux numéros de ports, il est possible de
|
||||||
spécifier arbitrairement 2 ports à la fois pour le serveur et pour le client DHCP.
|
spécifier arbitrairement 2 ports à la fois pour le serveur et pour le client DHCP.
|
||||||
.TP
|
.TP
|
||||||
.B \-3, --bootp-dynamic[=<identifiant de réseau>[,<identifiant de réseau>]]
|
.B \-3, --bootp-dynamic[=<identifiant de réseau>[,<identifiant de réseau>]]
|
||||||
Permet l'allocation dynamique d'adresses IP à des clients BOOTP. Utiliser cette
|
(IPv4 seulement) Permet l'allocation dynamique d'adresses IP à des clients BOOTP.
|
||||||
option avec précaution, une adresse allouée à un client BOOTP étant perpétuelle,
|
Utiliser cette option avec précaution, une adresse allouée à un client BOOTP
|
||||||
et de fait n'est plus disponibles pour d'autres hôtes. Si aucun argument n'est
|
étant perpétuelle, et de fait n'est plus disponibles pour d'autres hôtes. Si
|
||||||
donné, alors cette option permet une allocation dynamique dans tous les cas. Si
|
aucun argument n'est donné, alors cette option permet une allocation dynamique
|
||||||
des arguments sont spécifiés, alors l'allocation ne se fait que lorsque tous
|
dans tous les cas. Si des arguments sont spécifiés, alors l'allocation ne se
|
||||||
les identifiants coïncident. Il est possible de répeter cette option avec
|
fait que lorsque tous les identifiants coïncident. Il est possible de répeter
|
||||||
plusieurs jeux d'arguments.
|
cette option avec plusieurs jeux d'arguments.
|
||||||
.TP
|
.TP
|
||||||
.B \-5, --no-ping
|
.B \-5, --no-ping
|
||||||
Par défaut, le serveur DHCP tente de s'assurer qu'une adresse n'est pas utilisée
|
(IPv4 seulement) Par défaut, le serveur DHCP tente de s'assurer qu'une adresse
|
||||||
avant de l'allouer à un hôte. Cela est fait en envoyant une requête ICMP de type
|
n'est pas utilisée avant de l'allouer à un hôte. Cela est fait en envoyant une
|
||||||
"echo request" (aussi connue sous le nom de "ping") à l'adresse en question. Si
|
requête ICMP de type "echo request" (aussi connue sous le nom de "ping") à
|
||||||
le serveur obtient une réponse, alors l'adresse doit déjà être utilisée et une
|
l'adresse en question. Si le serveur obtient une réponse, alors l'adresse doit
|
||||||
autre est essayée. Cette option permet de supprimer cette vérification. A
|
déjà être utilisée et une autre est essayée. Cette option permet de supprimer
|
||||||
utiliser avec précaution.
|
cette vérification. A utiliser avec précaution.
|
||||||
.TP
|
.TP
|
||||||
.B --log-dhcp
|
.B --log-dhcp
|
||||||
Traces additionnelles pour le service DHCP : enregistre toutes les options
|
Traces additionnelles pour le service DHCP : enregistre toutes les options
|
||||||
@@ -1127,11 +1177,11 @@ chemin est spécifié est exécuté. Le <chemin de fichier> doit être un chemi
|
|||||||
absolu, aucune recherche n'est effectuée via la variable d'environnement PATH.
|
absolu, aucune recherche n'est effectuée via la variable d'environnement PATH.
|
||||||
Les arguments fournis à celui-ci sont soit
|
Les arguments fournis à celui-ci sont soit
|
||||||
"add" ("ajouter"), "old" ("ancien") ou "del" ("supprimer"), suivi de l'adresse
|
"add" ("ajouter"), "old" ("ancien") ou "del" ("supprimer"), suivi de l'adresse
|
||||||
MAC de l'hôte puis l'adresse IP et le nom d'hôte si celui-ci est
|
MAC de l'hôte (ou le DUID pour IPv6) puis l'adresse IP et le nom d'hôte si
|
||||||
connu."add" signifie qu'un bail a été créé, "del" signifie qu'il a été supprimé,
|
celui-ci est connu."add" signifie qu'un bail a été créé, "del" signifie qu'il a
|
||||||
"old" notifie que le bail existait au lancement de Dnsmasq, ou un changement
|
été supprimé, "old" notifie que le bail existait au lancement de Dnsmasq, ou un
|
||||||
d'adresse MAC ou de nom d'hôte pour un bail existant (ou, dans le cas où
|
changement d'adresse MAC ou de nom d'hôte pour un bail existant (ou, dans le cas
|
||||||
leasefile-ro est spécifié, un changement de durée de bail ou d'identifiant
|
où leasefile-ro est spécifié, un changement de durée de bail ou d'identifiant
|
||||||
d'hôte). Si l'adresse Mac est d'un type de réseau autre qu'ethernet, il est
|
d'hôte). Si l'adresse Mac est d'un type de réseau autre qu'ethernet, il est
|
||||||
nécessaire de la préceder du type de réseau, par exemple "06-01:23:45:67:89:ab"
|
nécessaire de la préceder du type de réseau, par exemple "06-01:23:45:67:89:ab"
|
||||||
pour du token ring. Le processus est exécuté en temps que super-utilisateur
|
pour du token ring. Le processus est exécuté en temps que super-utilisateur
|
||||||
@@ -1141,18 +1191,16 @@ pour changer son UID pour celle d'un utilisateur non-privilégié.
|
|||||||
L'environnement est hérité de celui de l'invocation du processus Dnsmasq,
|
L'environnement est hérité de celui de l'invocation du processus Dnsmasq,
|
||||||
auquel se rajoute quelques unes ou toutes les variables décrites ci-dessous :
|
auquel se rajoute quelques unes ou toutes les variables décrites ci-dessous :
|
||||||
|
|
||||||
DNSMASQ_CLIENT_ID, si l'hôte a fourni un identifiant de client.
|
Pour IPv4 et IPv6 :
|
||||||
|
|
||||||
DNSMASQ_DOMAIN si le nom de domaine pleinement qualifié de l'hôte est connu, la
|
DNSMASQ_DOMAIN si le nom de domaine pleinement qualifié de l'hôte est connu, la
|
||||||
part relative au domaine y est stockée. (Notez que le nom d'hôte transmis comme
|
part relative au domaine y est stockée. (Notez que le nom d'hôte transmis comme
|
||||||
argument au script n'est jamais pleinement qualifié).
|
argument au script n'est jamais pleinement qualifié).
|
||||||
|
|
||||||
Si le client fournit une information de classe de vendeur, un nom d'hôte, ou
|
Si le client fournit un nom d'hôte, DNSMASQ_SUPPLIED_HOSTNAME.
|
||||||
des classes d'utilisateur, celles-ci sont fournies dans les
|
|
||||||
variables DNSMASQ_VENDOR_CLASS et DNSMASQ_USER_CLASS0 à DNSMASQ_USER_CLASSn
|
Si le client fournit des classes d'utilisateur, DNSMASQ_USER_CLASS0 à
|
||||||
et DNSMASQ_SUPPLIED_HOSTNAME respectivement, mais seulement pour les actions
|
DNSMASQ_USER_CLASSn.
|
||||||
"add" et "old" lorsqu'un hôte reprend un bail existant, ces variables n'étant
|
|
||||||
pas stockées dans la base de baux de Dnsmasq.
|
|
||||||
|
|
||||||
Si Dnsmasq a été compilé avec l'option HAVE_BROKEN_RTC ("horloge RTC
|
Si Dnsmasq a été compilé avec l'option HAVE_BROKEN_RTC ("horloge RTC
|
||||||
défectueuse"), alors la durée du bail (en secondes) est stockée dans la
|
défectueuse"), alors la durée du bail (en secondes) est stockée dans la
|
||||||
@@ -1175,6 +1223,29 @@ relai DHCP pour contacter Dnsmasq, si l'adresse IP du relai est connue.
|
|||||||
DNSMASQ_TAGS contient tous les labels fournis pendant la transaction DHCP,
|
DNSMASQ_TAGS contient tous les labels fournis pendant la transaction DHCP,
|
||||||
séparés par des espaces.
|
séparés par des espaces.
|
||||||
|
|
||||||
|
Pour IPv4 seulement :
|
||||||
|
|
||||||
|
DNSMASQ_CLIENT_ID, si l'hôte a fourni un identifiant de client.
|
||||||
|
|
||||||
|
Si le client fournit une information de classe de vendeur, DNSMASQ_VENDOR_CLASS.
|
||||||
|
|
||||||
|
Pour IPv6 seulement :
|
||||||
|
|
||||||
|
Si le client fournit une classe de vendeur (vendor-class), positionne
|
||||||
|
DNSMASQ_VENDOR_CLASS_ID avec comme contenu le numéro IANA de l'entreprise pour
|
||||||
|
la classe, et DNSMASQ_VENDOR_CLASS0..DNSMASQ_VENDOR_CLASSn pour les données.
|
||||||
|
|
||||||
|
DNSMASQ_SERVER_DUID contient le DUID du serveur : cette valeur est la même
|
||||||
|
pour chaque appel au script.
|
||||||
|
|
||||||
|
DNSMASQ_IAID contenant l'IAID pour le bail. Si le bail est une allocation
|
||||||
|
temporaire, cela est préfixé par le caractère 'T'.
|
||||||
|
|
||||||
|
A noter que le nom d'hôte fourni, la classe de vendeur ou les données de classe
|
||||||
|
d'utilisateur sont uniquement fournies pour les actions "add" ou l'action "old"
|
||||||
|
lorsqu'un hôte reprend un bail existant, puisque ces informations ne sont pas
|
||||||
|
conservées dans la base de baux de dnsmasq.
|
||||||
|
|
||||||
Tous les descripteurs de fichiers sont fermés, sauf stdin, stdout et stderr qui
|
Tous les descripteurs de fichiers sont fermés, sauf stdin, stdout et stderr qui
|
||||||
sont ouverts sur /dev/null (sauf en mode déverminage).
|
sont ouverts sur /dev/null (sauf en mode déverminage).
|
||||||
|
|
||||||
@@ -1192,10 +1263,49 @@ dans le fichier des baux. Le script sera lancé avec l'action "del" pour les
|
|||||||
baux expirés, et "old" pour les autres. Lorsque Dnsmasq reçoit un signal HUP,
|
baux expirés, et "old" pour les autres. Lorsque Dnsmasq reçoit un signal HUP,
|
||||||
le script sera invoqué avec une action "old" pour tous les baux existants.
|
le script sera invoqué avec une action "old" pour tous les baux existants.
|
||||||
.TP
|
.TP
|
||||||
|
.B --dhcp-luascript=<chemin>
|
||||||
|
Spécifie un script écrit en Lua, devant être exécuté lorsque des baux sont
|
||||||
|
créés, détruits ou modifiés. Pour utiliser cette option, dnsmasq doit être
|
||||||
|
compilé avec avec le support de Lua. L'interpréteur Lua est initialisé une
|
||||||
|
seule fois, lorsque dnsmasq démarre, ce qui fait que les variables globales
|
||||||
|
persistent entre les évênements liés aux baux. Le code Lua doit définir une
|
||||||
|
fonction
|
||||||
|
.B lease
|
||||||
|
et peut fournir des fonctions
|
||||||
|
.B init
|
||||||
|
et
|
||||||
|
.B shutdown
|
||||||
|
qui sont appellées, sans arguments, lorsque dnsmasq démarre ou s'arrête.
|
||||||
|
|
||||||
|
La méthode
|
||||||
|
.B lease
|
||||||
|
reçoit les informations détaillées dans
|
||||||
|
.B --dhcp-script.
|
||||||
|
Il reçoit deux arguments. Le premier spécifie l'action, qui est une chaîne de
|
||||||
|
caractères contenant les valeurs "add" (ajout), "old" (réactivation d'un bail
|
||||||
|
existant) ou "del" (suppression). Le deuxième est une table contenant des
|
||||||
|
paires de valeurs de labels. Les labels correspondent pour l'essentiel aux
|
||||||
|
valeurs d'environnement détaillées ci-dessus, ainsi le label "domain" (domaine)
|
||||||
|
contient les mêmes données que la variable d'environnement DNSMASQ_DOMAIN. Il
|
||||||
|
existe quelques labels supplémentaires contenant les données fournies comme
|
||||||
|
arguments à
|
||||||
|
.B --dhcp-script.
|
||||||
|
Ces labels sont
|
||||||
|
.B mac_address, ip_address
|
||||||
|
(pour respectivement l'adresse MAC et l'adresse IP)
|
||||||
|
et
|
||||||
|
.B hostname
|
||||||
|
(le nom d'hôte) dans le cas d'IPv4, et
|
||||||
|
.B client_duid, ip_address
|
||||||
|
(valeur DUID du client et adresse IP respectivement)
|
||||||
|
ainsi que
|
||||||
|
.B hostname
|
||||||
|
(le nom d'hôte) dans le cas d'IPv6.
|
||||||
|
.TP
|
||||||
.B --dhcp-scriptuser
|
.B --dhcp-scriptuser
|
||||||
Spécifie l'utilisateur sous lequel le script lease-change doit être exécuté. La
|
Spécifie l'utilisateur sous lequel le script shell lease-change ou le script
|
||||||
valeur par défaut correspond à l'utilisateur root mais peut-être changée par le
|
doivent être exécutés. La valeur par défaut correspond à l'utilisateur root
|
||||||
biais de cette option.
|
mais peut-être changée par le biais de cette option.
|
||||||
.TP
|
.TP
|
||||||
.B \-9, --leasefile-ro
|
.B \-9, --leasefile-ro
|
||||||
Supprimer complètement l'usage du fichier servant de base de donnée pour les
|
Supprimer complètement l'usage du fichier servant de base de donnée pour les
|
||||||
@@ -1280,6 +1390,32 @@ sans gamme d'adresses de spécifié lorsque l'option
|
|||||||
.B --dhcp-fqdn
|
.B --dhcp-fqdn
|
||||||
est configurée.
|
est configurée.
|
||||||
.TP
|
.TP
|
||||||
|
.B --dhcp-client-update
|
||||||
|
Normalement, lorsque dnsmasq fournit un bail DHCP, il positionne un label
|
||||||
|
dans l'option FQDN pour indiquer au client qu'il ne doit pas tenter de faire
|
||||||
|
une mise à jour DDNS avec son nom et son adresse IP. Ceci parce que la paire
|
||||||
|
Nom-IP est rajoutée automatiquement dans la partie DNS de dnsmasq. Cette option
|
||||||
|
inhibe ce comportement ce qui est utile, par exemple, pour permettre aux clients
|
||||||
|
Windows de la mise à jour de serveurs Active Directory. Voir la RFC 4702 pour
|
||||||
|
plus de détails.
|
||||||
|
.TP
|
||||||
|
.B --enable-ra
|
||||||
|
Active la fonctionalité d'annonces routeurs IPv6 ("IPv6 Router Advertisement").
|
||||||
|
DHCPv6 ne gère pas la configuration complète du réseau de la même façon que
|
||||||
|
DHCPv4. La découverte de routeurs et la découverte (éventuelle) de préfixes pour
|
||||||
|
la création autonome d'adresse sont gérées par un protocole différent.
|
||||||
|
Lorsque DHCP est utilisé, seul un sous-ensemble de tout ceci est nécessaire et
|
||||||
|
dnsmasq est à même de le gérer, en utilisant la configuration DHCP présente pour
|
||||||
|
fournir la majorité des données. Lorsque les annonces routeurs (RA pour "Router
|
||||||
|
Advertisement") sont activées, dnsmasq va annoncer un préfixe pour chaque
|
||||||
|
dhcp-range et, par défaut, fournir comme valeur de routeur et de DNS récursif
|
||||||
|
la valeur d'adresse link-local appropriée parmi celles de la machine sur
|
||||||
|
laquelle tourne dnsmasq.
|
||||||
|
Les bits "managed address" sont positionnés, sauf pour un dhcp-range marqué
|
||||||
|
comme "ra-only" (annonce routeur uniquement). Dans ce cas le service d'annonce
|
||||||
|
routeur est rendu mais aucun service DHCPv6 n'est assuré, et les bits "managed
|
||||||
|
address" ne sont pas positionnés.
|
||||||
|
.TP
|
||||||
.B --enable-tftp[=<interface>]
|
.B --enable-tftp[=<interface>]
|
||||||
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
|
||||||
@@ -1547,10 +1683,6 @@ ligne de commande au lieu d'un fichier de configuration, ne pas oublier
|
|||||||
d'échapper le caractère !, qui est un méta-caractère d'interpréteur de commande
|
d'échapper le caractère !, qui est un méta-caractère d'interpréteur de commande
|
||||||
shell).
|
shell).
|
||||||
|
|
||||||
+When selecting dhcp-options, a tag from dhcp-range is second class
|
|
||||||
+relative to other tags, to make it easy to override options for
|
|
||||||
+individual hosts, so
|
|
||||||
|
|
||||||
Lors de la sélection d'une option, une étiquette spécifiée par dhcp-range
|
Lors de la sélection d'une option, une étiquette spécifiée par dhcp-range
|
||||||
passe après les autres étiquettes, ce qui permet de facilement remplacer des
|
passe après les autres étiquettes, ce qui permet de facilement remplacer des
|
||||||
option génériques pour des hôtes spécifiques, ainsi :
|
option génériques pour des hôtes spécifiques, ainsi :
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ msgstr ""
|
|||||||
"Project-Id-Version: dnsmasq 2.56\n"
|
"Project-Id-Version: dnsmasq 2.56\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2009-06-18 12:24+0100\n"
|
"POT-Creation-Date: 2009-06-18 12:24+0100\n"
|
||||||
"PO-Revision-Date: 2011-08-16 14:17+0100\n"
|
"PO-Revision-Date: 2012-03-02 16:26+0100\n"
|
||||||
"Last-Translator: Gildas Le Nadan <3ntr0p13@gmail.com>\n"
|
"Last-Translator: Gildas Le Nadan <3ntr0p13@gmail.com>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
"Content-Type: text/plain; charset=ISO-8859-1\n"
|
||||||
@@ -410,17 +410,14 @@ msgid "Disable ICMP echo address checking in the DHCP server."
|
|||||||
msgstr "Supprime la vérification d'adresse sur le serveur au moyen de paquets ICMP echo"
|
msgstr "Supprime la vérification d'adresse sur le serveur au moyen de paquets ICMP echo"
|
||||||
|
|
||||||
#: option.c:325
|
#: option.c:325
|
||||||
#, fuzzy
|
|
||||||
msgid "Shell script to run on DHCP lease creation and destruction."
|
msgid "Shell script to run on DHCP lease creation and destruction."
|
||||||
msgstr "Script à exécuter lors de la création ou destruction de bail DHCP."
|
msgstr "Script shell à exécuter lors de la création ou destruction de bail DHCP."
|
||||||
|
|
||||||
#: option.c:326
|
#: option.c:326
|
||||||
#, fuzzy
|
|
||||||
msgid "Lua script to run on DHCP lease creation and destruction."
|
msgid "Lua script to run on DHCP lease creation and destruction."
|
||||||
msgstr "Script à exécuter lors de la création ou destruction de bail DHCP."
|
msgstr "Script Lua à exécuter lors de la création ou destruction de bail DHCP."
|
||||||
|
|
||||||
#: option.c:327
|
#: option.c:327
|
||||||
#, fuzzy
|
|
||||||
msgid "Run lease-change scripts as this user."
|
msgid "Run lease-change scripts as this user."
|
||||||
msgstr "Lancer le script 'lease-change' avec cet utilisateur."
|
msgstr "Lancer le script 'lease-change' avec cet utilisateur."
|
||||||
|
|
||||||
@@ -573,11 +570,11 @@ msgstr "Copie les marques de suivi de connexion pour les requ
|
|||||||
|
|
||||||
#: option.c:363
|
#: option.c:363
|
||||||
msgid "Allow DHCP clients to do their own DDNS updates."
|
msgid "Allow DHCP clients to do their own DDNS updates."
|
||||||
msgstr ""
|
msgstr "Autoriser les clients DHCP à faire leurs propres mises à jour DDNS (Dynamic DNS)"
|
||||||
|
|
||||||
#: option.c:364
|
#: option.c:364
|
||||||
msgid "Send router-advertisements for interfaces doing DHCPv6"
|
msgid "Send router-advertisements for interfaces doing DHCPv6"
|
||||||
msgstr ""
|
msgstr "envoyer des annonces de routeurs pour toutes les interfaces faisant du DHCPv6"
|
||||||
|
|
||||||
#: option.c:782
|
#: option.c:782
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -604,13 +601,13 @@ msgid "Known DHCP options:\n"
|
|||||||
msgstr "Options DHCP connues :\n"
|
msgstr "Options DHCP connues :\n"
|
||||||
|
|
||||||
#: option.c:838
|
#: option.c:838
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Known DHCPv6 options:\n"
|
msgid "Known DHCPv6 options:\n"
|
||||||
msgstr "Options DHCP connues :\n"
|
msgstr "Options DHCPv6 connues :\n"
|
||||||
|
|
||||||
#: option.c:973
|
#: option.c:973
|
||||||
msgid "unsupported encapsulation for IPv6 option"
|
msgid "unsupported encapsulation for IPv6 option"
|
||||||
msgstr ""
|
msgstr "encapsulation d'option non supportée pour IPv6"
|
||||||
|
|
||||||
#: option.c:1001
|
#: option.c:1001
|
||||||
msgid "bad dhcp-option"
|
msgid "bad dhcp-option"
|
||||||
@@ -623,9 +620,8 @@ msgstr "mauvaise adresse IP"
|
|||||||
|
|
||||||
#
|
#
|
||||||
#: option.c:1071 option.c:1177 option.c:2511
|
#: option.c:1071 option.c:1177 option.c:2511
|
||||||
#, fuzzy
|
|
||||||
msgid "bad IPv6 address"
|
msgid "bad IPv6 address"
|
||||||
msgstr "mauvaise adresse IP"
|
msgstr "mauvaise adresse IPv6"
|
||||||
|
|
||||||
#: option.c:1205
|
#: option.c:1205
|
||||||
msgid "bad domain in dhcp-option"
|
msgid "bad domain in dhcp-option"
|
||||||
@@ -683,12 +679,11 @@ msgstr "ne peut ex
|
|||||||
|
|
||||||
#: option.c:1603
|
#: option.c:1603
|
||||||
msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
|
msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
|
||||||
msgstr "pour permettre l'exécution de scripts au changement de bail (lease-change), recompiler en définissant HAVE_SCRIPT"
|
msgstr "recompiler en définissant HAVE_SCRIPT pour permettre l'exécution de scripts shell au changement de bail (lease-change)"
|
||||||
|
|
||||||
#: option.c:1607
|
#: option.c:1607
|
||||||
#, fuzzy
|
|
||||||
msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
|
msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
|
||||||
msgstr "pour permettre l'exécution de scripts au changement de bail (lease-change), recompiler en définissant HAVE_SCRIPT"
|
msgstr "recompiler en définissant HAVE_LUASCRIPT pour permettre l'exécution de scripts LUA au changement de bail (lease-change)"
|
||||||
|
|
||||||
#: option.c:1988 option.c:1992
|
#: option.c:1988 option.c:1992
|
||||||
msgid "bad port"
|
msgid "bad port"
|
||||||
@@ -726,12 +721,11 @@ msgstr "plage d'adresses DHCP incoh
|
|||||||
|
|
||||||
#: option.c:2374
|
#: option.c:2374
|
||||||
msgid "prefix must be at least 64"
|
msgid "prefix must be at least 64"
|
||||||
msgstr ""
|
msgstr "la valeur de préfixe doit être au minimum 64"
|
||||||
|
|
||||||
#: option.c:2378
|
#: option.c:2378
|
||||||
#, fuzzy
|
|
||||||
msgid "inconsistent DHCPv6 range"
|
msgid "inconsistent DHCPv6 range"
|
||||||
msgstr "plage d'adresses DHCP incohérente"
|
msgstr "plage d'adresses DHCPv6 incohérente"
|
||||||
|
|
||||||
#: option.c:2481 option.c:2521
|
#: option.c:2481 option.c:2521
|
||||||
msgid "bad hex constant"
|
msgid "bad hex constant"
|
||||||
@@ -851,7 +845,7 @@ msgid "Dnsmasq version %s %s\n"
|
|||||||
msgstr "Version de Dnsmasq %s %s\n"
|
msgstr "Version de Dnsmasq %s %s\n"
|
||||||
|
|
||||||
#: option.c:3781
|
#: option.c:3781
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Compile time options: %s\n"
|
"Compile time options: %s\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -919,9 +913,9 @@ msgid "syntax check OK"
|
|||||||
msgstr "vérification de syntaxe OK"
|
msgstr "vérification de syntaxe OK"
|
||||||
|
|
||||||
#: forward.c:113
|
#: forward.c:113
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to send packet: %s"
|
msgid "failed to send packet: %s"
|
||||||
msgstr "impossible de lire sur la socket : %s"
|
msgstr "impossible d'envoyer le paquet : %s"
|
||||||
|
|
||||||
#: forward.c:474
|
#: forward.c:474
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1108,7 +1102,7 @@ msgstr "mode asynchrone d'
|
|||||||
|
|
||||||
#: dnsmasq.c:524
|
#: dnsmasq.c:524
|
||||||
msgid "IPv6 router advertisement enabled"
|
msgid "IPv6 router advertisement enabled"
|
||||||
msgstr ""
|
msgstr "annonces de routeur IPv6 activées"
|
||||||
|
|
||||||
#: dnsmasq.c:554
|
#: dnsmasq.c:554
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1116,9 +1110,9 @@ msgid "DHCP, static leases only on %.0s%s, lease time %s"
|
|||||||
msgstr "baux statiques DHCP seulement sur %.0s%s, durée de validité de bail %s"
|
msgstr "baux statiques DHCP seulement sur %.0s%s, durée de validité de bail %s"
|
||||||
|
|
||||||
#: dnsmasq.c:556
|
#: dnsmasq.c:556
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "router advertisement only on %.0s%s, lifetime %s"
|
msgid "router advertisement only on %.0s%s, lifetime %s"
|
||||||
msgstr "baux statiques DHCP seulement sur %.0s%s, durée de validité de bail %s"
|
msgstr "annonces de routeurs seulement sur %.0s%s, durée de validité %s"
|
||||||
|
|
||||||
#: dnsmasq.c:558
|
#: dnsmasq.c:558
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1183,25 +1177,25 @@ msgid "failed to open pidfile %s: %s"
|
|||||||
msgstr "impossible de lire le fichier de PID %s : %s"
|
msgstr "impossible de lire le fichier de PID %s : %s"
|
||||||
|
|
||||||
#: dnsmasq.c:930
|
#: dnsmasq.c:930
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "cannot open log %s: %s"
|
msgid "cannot open log %s: %s"
|
||||||
msgstr "Ne peut pas lire %s : %s"
|
msgstr "Ne peut ouvrir le fichier de log %s : %s"
|
||||||
|
|
||||||
#
|
#
|
||||||
#: dnsmasq.c:933
|
#: dnsmasq.c:933
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to load Lua script: %s"
|
msgid "failed to load Lua script: %s"
|
||||||
msgstr "impossible de charger %s : %m"
|
msgstr "impossible de charger le script Lua : %s"
|
||||||
|
|
||||||
#: dnsmasq.c:1002
|
#: dnsmasq.c:1002
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "script process killed by signal %d"
|
msgid "script process killed by signal %d"
|
||||||
msgstr "Le processus fils a été terminé par le signal %d"
|
msgstr "Le script a été terminé par le signal %d"
|
||||||
|
|
||||||
#: dnsmasq.c:1006
|
#: dnsmasq.c:1006
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "script process exited with status %d"
|
msgid "script process exited with status %d"
|
||||||
msgstr "Le processus fils s'est terminé avec le statut %d"
|
msgstr "Le script s'est terminé avec le statut %d"
|
||||||
|
|
||||||
#: dnsmasq.c:1010
|
#: dnsmasq.c:1010
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1506,7 +1500,7 @@ msgstr "requ
|
|||||||
|
|
||||||
#: helper.c:140
|
#: helper.c:140
|
||||||
msgid "lease() function missing in Lua script"
|
msgid "lease() function missing in Lua script"
|
||||||
msgstr ""
|
msgstr "la fonction lease() est absente du script Lua"
|
||||||
|
|
||||||
#: tftp.c:285
|
#: tftp.c:285
|
||||||
msgid "unable to get free port for TFTP"
|
msgid "unable to get free port for TFTP"
|
||||||
@@ -1557,29 +1551,29 @@ msgid "Conntrack connection mark retrieval failed: %s"
|
|||||||
msgstr "La récupération de la marque de suivi de connexion a échoué : %s"
|
msgstr "La récupération de la marque de suivi de connexion a échoué : %s"
|
||||||
|
|
||||||
#: dhcp6.c:46
|
#: dhcp6.c:46
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "cannot create DHCPv6 socket: %s"
|
msgid "cannot create DHCPv6 socket: %s"
|
||||||
msgstr "ne peut créer la socket DHCP: %s"
|
msgstr "ne peut créer la socket DHCPv6: %s"
|
||||||
|
|
||||||
#: dhcp6.c:57
|
#: dhcp6.c:57
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to bind DHCPv6 server socket: %s"
|
msgid "failed to bind DHCPv6 server socket: %s"
|
||||||
msgstr "impossible de lier la socket serveur DHCP : %s"
|
msgstr "impossible de lier la socket serveur DHCPv6 : %s"
|
||||||
|
|
||||||
#: rfc3315.c:94
|
#: rfc3315.c:94
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "no address range available for DHCPv6 request from relay at %s"
|
msgid "no address range available for DHCPv6 request from relay at %s"
|
||||||
msgstr "pas de plage d'adresse disponible pour la requête DHCP %s %s"
|
msgstr "pas de plage d'adresse disponible pour la requête DHCPv6 transmise via le relai %s"
|
||||||
|
|
||||||
#: rfc3315.c:103
|
#: rfc3315.c:103
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "no address range available for DHCPv6 request via %s"
|
msgid "no address range available for DHCPv6 request via %s"
|
||||||
msgstr "pas de plage d'adresse disponible pour la requête DHCP %s %s"
|
msgstr "pas de plage d'adresse disponible pour la requête DHCPv6 via %s"
|
||||||
|
|
||||||
#: rfc3315.c:206
|
#: rfc3315.c:206
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%u available DHCPv6 subnet: %s/%d"
|
msgid "%u available DHCPv6 subnet: %s/%d"
|
||||||
msgstr "%u sous-réseaux DHCP disponibles : %s/%s"
|
msgstr "%u sous-réseaux DHCPv6 disponibles : %s/%d"
|
||||||
|
|
||||||
#: dhcp-common.c:138
|
#: dhcp-common.c:138
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1612,16 +1606,15 @@ msgid "duplicate IP address %s (%s) in dhcp-config directive"
|
|||||||
msgstr "adresse IP %s (%s) dupliquée dans la directive dhcp-config."
|
msgstr "adresse IP %s (%s) dupliquée dans la directive dhcp-config."
|
||||||
|
|
||||||
#: dhcp-common.c:443
|
#: dhcp-common.c:443
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to join DHCPv6 multicast group: %s"
|
msgid "failed to join DHCPv6 multicast group: %s"
|
||||||
msgstr "impossible de lier la socket serveur DHCP : %s"
|
msgstr "impossible de rejoindre le groupe de multicast DHCPv6 : %s"
|
||||||
|
|
||||||
#: radv.c:76
|
#: radv.c:76
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "cannot create ICMPv6 socket: %s"
|
msgid "cannot create ICMPv6 socket: %s"
|
||||||
msgstr "ne peut créer la socket DHCP: %s"
|
msgstr "ne peut créer la socket ICMPv6: %s"
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
#~ msgid "Specify path to Lua script (no default)."
|
#~ msgid "Specify path to Lua script (no default)."
|
||||||
#~ msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
|
#~ msgstr "Spécifie un chemin pour le fichier PID (par défaut : %s)."
|
||||||
|
|
||||||
|
|||||||
@@ -10,14 +10,14 @@ msgstr ""
|
|||||||
"Project-Id-Version: pl\n"
|
"Project-Id-Version: pl\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2009-06-10 20:57+0100\n"
|
"POT-Creation-Date: 2009-06-10 20:57+0100\n"
|
||||||
"PO-Revision-Date: 2011-08-25 09:50+0200\n"
|
"PO-Revision-Date: 2012-03-04 01:45+0100\n"
|
||||||
"Last-Translator: Jan Psota <jasiupsota@gmail.com>\n"
|
"Last-Translator: Jan Psota <jasiupsota@gmail.com>\n"
|
||||||
"Language-Team: polski <>\n"
|
"Language-Team: polski <>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
"X-Generator: Lokalize 1.1\n"
|
"X-Generator: poedit-1.4.6.1\n"
|
||||||
"X-Language: pl_PL\n"
|
"X-Language: pl_PL\n"
|
||||||
|
|
||||||
#: cache.c:764
|
#: cache.c:764
|
||||||
@@ -25,17 +25,20 @@ msgstr ""
|
|||||||
msgid "failed to load names from %s: %s"
|
msgid "failed to load names from %s: %s"
|
||||||
msgstr "nie potrafię wczytać nazw z %s: %s"
|
msgstr "nie potrafię wczytać nazw z %s: %s"
|
||||||
|
|
||||||
#: cache.c:797 dhcp.c:855
|
#: cache.c:797
|
||||||
|
#: dhcp.c:855
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "bad address at %s line %d"
|
msgid "bad address at %s line %d"
|
||||||
msgstr "błędny adres w pliku %s, w linii %d"
|
msgstr "błędny adres w pliku %s, w linii %d"
|
||||||
|
|
||||||
#: cache.c:846 dhcp.c:871
|
#: cache.c:846
|
||||||
|
#: dhcp.c:871
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "bad name at %s line %d"
|
msgid "bad name at %s line %d"
|
||||||
msgstr "błędna nazwa w pliku %s, w linii %d"
|
msgstr "błędna nazwa w pliku %s, w linii %d"
|
||||||
|
|
||||||
#: cache.c:853 dhcp.c:946
|
#: cache.c:853
|
||||||
|
#: dhcp.c:946
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "read %s - %d addresses"
|
msgid "read %s - %d addresses"
|
||||||
msgstr "wczytałem %s - %d adresów"
|
msgstr "wczytałem %s - %d adresów"
|
||||||
@@ -88,7 +91,8 @@ msgstr "brak możliwości użycia generatora liczb losowych: %s"
|
|||||||
msgid "failed to allocate memory"
|
msgid "failed to allocate memory"
|
||||||
msgstr "nie udało się przydzielić pamięci"
|
msgstr "nie udało się przydzielić pamięci"
|
||||||
|
|
||||||
#: util.c:227 option.c:717
|
#: util.c:227
|
||||||
|
#: option.c:717
|
||||||
msgid "could not get memory"
|
msgid "could not get memory"
|
||||||
msgstr "nie można dostać pamięci"
|
msgstr "nie można dostać pamięci"
|
||||||
|
|
||||||
@@ -406,19 +410,16 @@ msgid "Disable ICMP echo address checking in the DHCP server."
|
|||||||
msgstr "Pominięcie sprawdzania za pomocą ICMP niezajętości adresu przed jego wydzierżawieniem."
|
msgstr "Pominięcie sprawdzania za pomocą ICMP niezajętości adresu przed jego wydzierżawieniem."
|
||||||
|
|
||||||
#: option.c:325
|
#: option.c:325
|
||||||
#, fuzzy
|
|
||||||
msgid "Shell script to run on DHCP lease creation and destruction."
|
msgid "Shell script to run on DHCP lease creation and destruction."
|
||||||
msgstr "Wskazanie skryptu uruchamianego w przypadku wydzierżawienia adresu lub wygaśnięcia dzierżawy."
|
msgstr "Skrypt powłoki uruchamiany po przyznaniu lub zwolnieniu adresu."
|
||||||
|
|
||||||
#: option.c:326
|
#: option.c:326
|
||||||
#, fuzzy
|
|
||||||
msgid "Lua script to run on DHCP lease creation and destruction."
|
msgid "Lua script to run on DHCP lease creation and destruction."
|
||||||
msgstr "Wskazanie skryptu uruchamianego w przypadku wydzierżawienia adresu lub wygaśnięcia dzierżawy."
|
msgstr "Skrypt Lua uruchamiany po przyznaniu lub zwolnieniu adresu."
|
||||||
|
|
||||||
#: option.c:327
|
#: option.c:327
|
||||||
#, fuzzy
|
|
||||||
msgid "Run lease-change scripts as this user."
|
msgid "Run lease-change scripts as this user."
|
||||||
msgstr "Uruchamianie skryptu dhcp-script jako wskazany użytkownik."
|
msgstr "Wskazanie użytkownika z którego uprawnieniami będą uruchamiane skrypty."
|
||||||
|
|
||||||
#: option.c:328
|
#: option.c:328
|
||||||
msgid "Read configuration from all the files in this directory."
|
msgid "Read configuration from all the files in this directory."
|
||||||
@@ -565,11 +566,11 @@ msgstr "Zachowanie znacznika połączenia z odebranego zapytania DNS w ruchu zew
|
|||||||
|
|
||||||
#: option.c:363
|
#: option.c:363
|
||||||
msgid "Allow DHCP clients to do their own DDNS updates."
|
msgid "Allow DHCP clients to do their own DDNS updates."
|
||||||
msgstr ""
|
msgstr "Zezwolenie klientom DHCP na uaktualnianie DDNS-ów."
|
||||||
|
|
||||||
#: option.c:364
|
#: option.c:364
|
||||||
msgid "Send router-advertisements for interfaces doing DHCPv6"
|
msgid "Send router-advertisements for interfaces doing DHCPv6"
|
||||||
msgstr ""
|
msgstr "Załączenie anonsowania (RA) na interfejsach serwujących DHCPv6"
|
||||||
|
|
||||||
#: option.c:782
|
#: option.c:782
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -596,13 +597,13 @@ msgid "Known DHCP options:\n"
|
|||||||
msgstr "Znane opcje DHCP:\n"
|
msgstr "Znane opcje DHCP:\n"
|
||||||
|
|
||||||
#: option.c:838
|
#: option.c:838
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "Known DHCPv6 options:\n"
|
msgid "Known DHCPv6 options:\n"
|
||||||
msgstr "Znane opcje DHCP:\n"
|
msgstr "Rozpoznawane opcje DHCPv6:\n"
|
||||||
|
|
||||||
#: option.c:973
|
#: option.c:973
|
||||||
msgid "unsupported encapsulation for IPv6 option"
|
msgid "unsupported encapsulation for IPv6 option"
|
||||||
msgstr ""
|
msgstr "nieobsługiwany rodzaj enkapsulacji opcji IPv6"
|
||||||
|
|
||||||
#: option.c:1001
|
#: option.c:1001
|
||||||
msgid "bad dhcp-option"
|
msgid "bad dhcp-option"
|
||||||
@@ -612,10 +613,11 @@ msgstr "błąd w dhcp-option"
|
|||||||
msgid "bad IP address"
|
msgid "bad IP address"
|
||||||
msgstr "zły adres IP"
|
msgstr "zły adres IP"
|
||||||
|
|
||||||
#: option.c:1071 option.c:1177 option.c:2511
|
#: option.c:1071
|
||||||
#, fuzzy
|
#: option.c:1177
|
||||||
|
#: option.c:2511
|
||||||
msgid "bad IPv6 address"
|
msgid "bad IPv6 address"
|
||||||
msgstr "zły adres IP"
|
msgstr "zły adres IPv6"
|
||||||
|
|
||||||
#: option.c:1205
|
#: option.c:1205
|
||||||
msgid "bad domain in dhcp-option"
|
msgid "bad domain in dhcp-option"
|
||||||
@@ -637,12 +639,14 @@ msgstr "wielokrotne użycie opcji niedozwolone (pojawiła się wcześniej w lini
|
|||||||
msgid "illegal repeated keyword"
|
msgid "illegal repeated keyword"
|
||||||
msgstr "wielokrotne użycie opcji niedozwolone (pojawiła się wsześniej w pliku konfiguracyjnym)"
|
msgstr "wielokrotne użycie opcji niedozwolone (pojawiła się wsześniej w pliku konfiguracyjnym)"
|
||||||
|
|
||||||
#: option.c:1452 option.c:3536
|
#: option.c:1452
|
||||||
|
#: option.c:3536
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot access directory %s: %s"
|
msgid "cannot access directory %s: %s"
|
||||||
msgstr "brak dostępu do katalogu %s: %s"
|
msgstr "brak dostępu do katalogu %s: %s"
|
||||||
|
|
||||||
#: option.c:1483 tftp.c:464
|
#: option.c:1483
|
||||||
|
#: tftp.c:464
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot access %s: %s"
|
msgid "cannot access %s: %s"
|
||||||
msgstr "brak dostępu do %s: %s"
|
msgstr "brak dostępu do %s: %s"
|
||||||
@@ -676,19 +680,21 @@ msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
|
|||||||
msgstr "żeby mieć możliwość używania skryptów wywoływanych przy zmianie dzierżawy, przekompiluj dnsmasq-a z włączoną flagą HAVE_SCRIPT"
|
msgstr "żeby mieć możliwość używania skryptów wywoływanych przy zmianie dzierżawy, przekompiluj dnsmasq-a z włączoną flagą HAVE_SCRIPT"
|
||||||
|
|
||||||
#: option.c:1607
|
#: option.c:1607
|
||||||
#, fuzzy
|
|
||||||
msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
|
msgid "recompile with HAVE_LUASCRIPT defined to enable Lua scripts"
|
||||||
msgstr "żeby mieć możliwość używania skryptów wywoływanych przy zmianie dzierżawy, przekompiluj dnsmasq-a z włączoną flagą HAVE_SCRIPT"
|
msgstr "używanie skryptów Lua, wymaga skompilowania dnsmasq-a z flagą HAVE_LUASCRIPT"
|
||||||
|
|
||||||
#: option.c:1988 option.c:1992
|
#: option.c:1988
|
||||||
|
#: option.c:1992
|
||||||
msgid "bad port"
|
msgid "bad port"
|
||||||
msgstr "nieprawidłowy numer portu"
|
msgstr "nieprawidłowy numer portu"
|
||||||
|
|
||||||
#: option.c:2015 option.c:2046
|
#: option.c:2015
|
||||||
|
#: option.c:2046
|
||||||
msgid "interface binding not supported"
|
msgid "interface binding not supported"
|
||||||
msgstr "nie ma możliwości dowiązywania do interfejsu"
|
msgstr "nie ma możliwości dowiązywania do interfejsu"
|
||||||
|
|
||||||
#: option.c:2026 option.c:3088
|
#: option.c:2026
|
||||||
|
#: option.c:3088
|
||||||
msgid "bad interface name"
|
msgid "bad interface name"
|
||||||
msgstr "nieprawidłowa nazwa interfejsu"
|
msgstr "nieprawidłowa nazwa interfejsu"
|
||||||
|
|
||||||
@@ -714,14 +720,14 @@ msgstr "niespójny zakres adresów DHCP"
|
|||||||
|
|
||||||
#: option.c:2374
|
#: option.c:2374
|
||||||
msgid "prefix must be at least 64"
|
msgid "prefix must be at least 64"
|
||||||
msgstr ""
|
msgstr "prefix musi mieć wartość >=64"
|
||||||
|
|
||||||
#: option.c:2378
|
#: option.c:2378
|
||||||
#, fuzzy
|
|
||||||
msgid "inconsistent DHCPv6 range"
|
msgid "inconsistent DHCPv6 range"
|
||||||
msgstr "niespójny zakres adresów DHCP"
|
msgstr "niespójny zakres adresów DHCPv6"
|
||||||
|
|
||||||
#: option.c:2481 option.c:2521
|
#: option.c:2481
|
||||||
|
#: option.c:2521
|
||||||
msgid "bad hex constant"
|
msgid "bad hex constant"
|
||||||
msgstr "zapis niezgodny z formatem szesnastkowym"
|
msgstr "zapis niezgodny z formatem szesnastkowym"
|
||||||
|
|
||||||
@@ -737,7 +743,8 @@ msgstr "niedopuszczalna nazwa komputera w dhcp-host"
|
|||||||
msgid "bad tag-if"
|
msgid "bad tag-if"
|
||||||
msgstr "nieprawidłowa składnia 'tag-if'"
|
msgstr "nieprawidłowa składnia 'tag-if'"
|
||||||
|
|
||||||
#: option.c:2973 option.c:3258
|
#: option.c:2973
|
||||||
|
#: option.c:3258
|
||||||
msgid "invalid port number"
|
msgid "invalid port number"
|
||||||
msgstr "nieprawidłowy numer portu"
|
msgstr "nieprawidłowy numer portu"
|
||||||
|
|
||||||
@@ -814,12 +821,14 @@ msgstr "błąd"
|
|||||||
msgid "%s at line %d of %%s"
|
msgid "%s at line %d of %%s"
|
||||||
msgstr "%s w linii %d pliku %%s"
|
msgstr "%s w linii %d pliku %%s"
|
||||||
|
|
||||||
#: option.c:3491 tftp.c:627
|
#: option.c:3491
|
||||||
|
#: tftp.c:627
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "cannot read %s: %s"
|
msgid "cannot read %s: %s"
|
||||||
msgstr "błąd odczytu z pliku %s: %s"
|
msgstr "błąd odczytu z pliku %s: %s"
|
||||||
|
|
||||||
#: option.c:3657 option.c:3693
|
#: option.c:3657
|
||||||
|
#: option.c:3693
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "read %s"
|
msgid "read %s"
|
||||||
msgstr "przeczytałem %s"
|
msgstr "przeczytałem %s"
|
||||||
@@ -834,7 +843,7 @@ msgid "Dnsmasq version %s %s\n"
|
|||||||
msgstr "Dnsmasq, wersja %s %s\n"
|
msgstr "Dnsmasq, wersja %s %s\n"
|
||||||
|
|
||||||
#: option.c:3781
|
#: option.c:3781
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"Compile time options: %s\n"
|
"Compile time options: %s\n"
|
||||||
"\n"
|
"\n"
|
||||||
@@ -883,7 +892,9 @@ msgstr "w trybie no-poll można wskazać najwyżej jeden plik resolv.conf."
|
|||||||
msgid "must have exactly one resolv.conf to read domain from."
|
msgid "must have exactly one resolv.conf to read domain from."
|
||||||
msgstr "musisz mieć dokładnie jeden plik resolv.conf do odczytu domen."
|
msgstr "musisz mieć dokładnie jeden plik resolv.conf do odczytu domen."
|
||||||
|
|
||||||
#: option.c:3882 network.c:822 dhcp.c:804
|
#: option.c:3882
|
||||||
|
#: network.c:822
|
||||||
|
#: dhcp.c:804
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "failed to read %s: %s"
|
msgid "failed to read %s: %s"
|
||||||
msgstr "nie udało się odczytać %s: %s"
|
msgstr "nie udało się odczytać %s: %s"
|
||||||
@@ -902,9 +913,9 @@ msgid "syntax check OK"
|
|||||||
msgstr "składnia sprawdzona, jest prawidłowa"
|
msgstr "składnia sprawdzona, jest prawidłowa"
|
||||||
|
|
||||||
#: forward.c:113
|
#: forward.c:113
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to send packet: %s"
|
msgid "failed to send packet: %s"
|
||||||
msgstr "błąd przy włączaniu nasłuchu na gnieździe: %s"
|
msgstr "wysyłanie pakietu nie powiodło się: %s"
|
||||||
|
|
||||||
#: forward.c:474
|
#: forward.c:474
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1012,7 +1023,8 @@ msgstr "nieznany interfejs %s"
|
|||||||
msgid "no interface with address %s"
|
msgid "no interface with address %s"
|
||||||
msgstr "brak interfejsu z adresem %s"
|
msgstr "brak interfejsu z adresem %s"
|
||||||
|
|
||||||
#: dnsmasq.c:220 dnsmasq.c:770
|
#: dnsmasq.c:220
|
||||||
|
#: dnsmasq.c:770
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "DBus error: %s"
|
msgid "DBus error: %s"
|
||||||
msgstr "błąd DBus: %s"
|
msgstr "błąd DBus: %s"
|
||||||
@@ -1088,7 +1100,7 @@ msgstr "włączono asynchroniczny tryb zapisu do logów z kolejką na %d komunik
|
|||||||
|
|
||||||
#: dnsmasq.c:524
|
#: dnsmasq.c:524
|
||||||
msgid "IPv6 router advertisement enabled"
|
msgid "IPv6 router advertisement enabled"
|
||||||
msgstr ""
|
msgstr "anonsowanie routera IPv4 włączone"
|
||||||
|
|
||||||
#: dnsmasq.c:554
|
#: dnsmasq.c:554
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1096,9 +1108,9 @@ msgid "DHCP, static leases only on %.0s%s, lease time %s"
|
|||||||
msgstr "DHCP: tylko statyczne dzierżawy na %.0s%s, czas dzierżawy %s"
|
msgstr "DHCP: tylko statyczne dzierżawy na %.0s%s, czas dzierżawy %s"
|
||||||
|
|
||||||
#: dnsmasq.c:556
|
#: dnsmasq.c:556
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "router advertisement only on %.0s%s, lifetime %s"
|
msgid "router advertisement only on %.0s%s, lifetime %s"
|
||||||
msgstr "DHCP: tylko statyczne dzierżawy na %.0s%s, czas dzierżawy %s"
|
msgstr "tylko anonsowanie routera na %.0s%s, czas życia %s"
|
||||||
|
|
||||||
#: dnsmasq.c:558
|
#: dnsmasq.c:558
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1162,24 +1174,24 @@ msgid "failed to open pidfile %s: %s"
|
|||||||
msgstr "nie udało się otworzyć pliku z PID-em %s: %s"
|
msgstr "nie udało się otworzyć pliku z PID-em %s: %s"
|
||||||
|
|
||||||
#: dnsmasq.c:930
|
#: dnsmasq.c:930
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "cannot open log %s: %s"
|
msgid "cannot open log %s: %s"
|
||||||
msgstr "nie można otworzyć %s: %s"
|
msgstr "nie udało się otworzyć logu %s: %s"
|
||||||
|
|
||||||
#: dnsmasq.c:933
|
#: dnsmasq.c:933
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to load Lua script: %s"
|
msgid "failed to load Lua script: %s"
|
||||||
msgstr "nie udało się odczytać %s: %s"
|
msgstr "nie udało się wczytać skryptu Lua: %s"
|
||||||
|
|
||||||
#: dnsmasq.c:1002
|
#: dnsmasq.c:1002
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "script process killed by signal %d"
|
msgid "script process killed by signal %d"
|
||||||
msgstr "proces potomny zabity sygnałem %d"
|
msgstr "skrypt został zabity sygnałem %d"
|
||||||
|
|
||||||
#: dnsmasq.c:1006
|
#: dnsmasq.c:1006
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "script process exited with status %d"
|
msgid "script process exited with status %d"
|
||||||
msgstr "proces potomny zakończył się z kodem powrotu %d"
|
msgstr "skrypt zakończył się z kodem powrotu %d"
|
||||||
|
|
||||||
#: dnsmasq.c:1010
|
#: dnsmasq.c:1010
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1302,7 +1314,8 @@ msgstr "przez"
|
|||||||
msgid "%u available DHCP subnet: %s/%s"
|
msgid "%u available DHCP subnet: %s/%s"
|
||||||
msgstr "%u dostępna podsieć DHCP: %s/%s"
|
msgstr "%u dostępna podsieć DHCP: %s/%s"
|
||||||
|
|
||||||
#: rfc2131.c:353 rfc3315.c:209
|
#: rfc2131.c:353
|
||||||
|
#: rfc3315.c:209
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u available DHCP range: %s -- %s"
|
msgid "%u available DHCP range: %s -- %s"
|
||||||
msgstr "%u dostępny zakres adresów DHCP: %s -- %s"
|
msgstr "%u dostępny zakres adresów DHCP: %s -- %s"
|
||||||
@@ -1311,19 +1324,24 @@ msgstr "%u dostępny zakres adresów DHCP: %s -- %s"
|
|||||||
msgid "disabled"
|
msgid "disabled"
|
||||||
msgstr "wyłączony(a)"
|
msgstr "wyłączony(a)"
|
||||||
|
|
||||||
#: rfc2131.c:423 rfc2131.c:941 rfc2131.c:1341
|
#: rfc2131.c:423
|
||||||
|
#: rfc2131.c:941
|
||||||
|
#: rfc2131.c:1341
|
||||||
msgid "ignored"
|
msgid "ignored"
|
||||||
msgstr "ignoruję"
|
msgstr "ignoruję"
|
||||||
|
|
||||||
#: rfc2131.c:438 rfc2131.c:1179
|
#: rfc2131.c:438
|
||||||
|
#: rfc2131.c:1179
|
||||||
msgid "address in use"
|
msgid "address in use"
|
||||||
msgstr "adres jest w użyciu"
|
msgstr "adres jest w użyciu"
|
||||||
|
|
||||||
#: rfc2131.c:452 rfc2131.c:995
|
#: rfc2131.c:452
|
||||||
|
#: rfc2131.c:995
|
||||||
msgid "no address available"
|
msgid "no address available"
|
||||||
msgstr "brak dostępnego adresu"
|
msgstr "brak dostępnego adresu"
|
||||||
|
|
||||||
#: rfc2131.c:459 rfc2131.c:1142
|
#: rfc2131.c:459
|
||||||
|
#: rfc2131.c:1142
|
||||||
msgid "wrong network"
|
msgid "wrong network"
|
||||||
msgstr "nieprawidłowa sieć"
|
msgstr "nieprawidłowa sieć"
|
||||||
|
|
||||||
@@ -1331,11 +1349,13 @@ msgstr "nieprawidłowa sieć"
|
|||||||
msgid "no address configured"
|
msgid "no address configured"
|
||||||
msgstr "brak skonfigurowanego adresu"
|
msgstr "brak skonfigurowanego adresu"
|
||||||
|
|
||||||
#: rfc2131.c:480 rfc2131.c:1192
|
#: rfc2131.c:480
|
||||||
|
#: rfc2131.c:1192
|
||||||
msgid "no leases left"
|
msgid "no leases left"
|
||||||
msgstr "brak wolnych dzierżaw"
|
msgstr "brak wolnych dzierżaw"
|
||||||
|
|
||||||
#: rfc2131.c:564 rfc3315.c:362
|
#: rfc2131.c:564
|
||||||
|
#: rfc3315.c:362
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u client provides name: %s"
|
msgid "%u client provides name: %s"
|
||||||
msgstr "klient %u przedstawia się jako %s"
|
msgstr "klient %u przedstawia się jako %s"
|
||||||
@@ -1354,7 +1374,8 @@ msgstr "%u klasa użytkownika: %s"
|
|||||||
msgid "PXE BIS not supported"
|
msgid "PXE BIS not supported"
|
||||||
msgstr "PXE BIS nie jest obsługiwane"
|
msgstr "PXE BIS nie jest obsługiwane"
|
||||||
|
|
||||||
#: rfc2131.c:911 rfc3315.c:1098
|
#: rfc2131.c:911
|
||||||
|
#: rfc3315.c:1098
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "disabling DHCP static address %s for %s"
|
msgid "disabling DHCP static address %s for %s"
|
||||||
msgstr "wyłączam statyczne przypisanie adresu %s dla %s"
|
msgstr "wyłączam statyczne przypisanie adresu %s dla %s"
|
||||||
@@ -1363,7 +1384,8 @@ msgstr "wyłączam statyczne przypisanie adresu %s dla %s"
|
|||||||
msgid "unknown lease"
|
msgid "unknown lease"
|
||||||
msgstr "nieznana dzierżawa"
|
msgstr "nieznana dzierżawa"
|
||||||
|
|
||||||
#: rfc2131.c:964 rfc3315.c:556
|
#: rfc2131.c:964
|
||||||
|
#: rfc3315.c:556
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "not using configured address %s because it is leased to %s"
|
msgid "not using configured address %s because it is leased to %s"
|
||||||
msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo jest on już wydzierżawiony komputerowi %s"
|
msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo jest on już wydzierżawiony komputerowi %s"
|
||||||
@@ -1373,12 +1395,14 @@ msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo jest on już wy
|
|||||||
msgid "not using configured address %s because it is in use by the server or relay"
|
msgid "not using configured address %s because it is in use by the server or relay"
|
||||||
msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo używa go któryś z serwerów"
|
msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo używa go któryś z serwerów"
|
||||||
|
|
||||||
#: rfc2131.c:977 rfc3315.c:560
|
#: rfc2131.c:977
|
||||||
|
#: rfc3315.c:560
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "not using configured address %s because it was previously declined"
|
msgid "not using configured address %s because it was previously declined"
|
||||||
msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo już poprzednio został odrzucony"
|
msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo już poprzednio został odrzucony"
|
||||||
|
|
||||||
#: rfc2131.c:993 rfc2131.c:1185
|
#: rfc2131.c:993
|
||||||
|
#: rfc2131.c:1185
|
||||||
msgid "no unique-id"
|
msgid "no unique-id"
|
||||||
msgstr "brak unikalnego id"
|
msgstr "brak unikalnego id"
|
||||||
|
|
||||||
@@ -1440,7 +1464,8 @@ msgstr "nie mam możliwości wysłania opcji %d DHCP/BOOTP: niedostateczna iloś
|
|||||||
msgid "PXE menu too large"
|
msgid "PXE menu too large"
|
||||||
msgstr "menu PXE zbyt duże"
|
msgstr "menu PXE zbyt duże"
|
||||||
|
|
||||||
#: rfc2131.c:2117 rfc3315.c:1294
|
#: rfc2131.c:2117
|
||||||
|
#: rfc3315.c:1294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%u requested options: %s"
|
msgid "%u requested options: %s"
|
||||||
msgstr "%u zażądano: %s"
|
msgstr "%u zażądano: %s"
|
||||||
@@ -1484,7 +1509,7 @@ msgstr "żądanie DHCP od urządzenia nieobsługiwanego typu (%d) odebrano na %s
|
|||||||
|
|
||||||
#: helper.c:140
|
#: helper.c:140
|
||||||
msgid "lease() function missing in Lua script"
|
msgid "lease() function missing in Lua script"
|
||||||
msgstr ""
|
msgstr "w skrypcie Lua brak funkcji lease()"
|
||||||
|
|
||||||
#: tftp.c:285
|
#: tftp.c:285
|
||||||
msgid "unable to get free port for TFTP"
|
msgid "unable to get free port for TFTP"
|
||||||
@@ -1535,29 +1560,29 @@ msgid "Conntrack connection mark retrieval failed: %s"
|
|||||||
msgstr "Nie udało się odcztać znacznika połączenia (conntrack): %s"
|
msgstr "Nie udało się odcztać znacznika połączenia (conntrack): %s"
|
||||||
|
|
||||||
#: dhcp6.c:46
|
#: dhcp6.c:46
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "cannot create DHCPv6 socket: %s"
|
msgid "cannot create DHCPv6 socket: %s"
|
||||||
msgstr "nie udało się utworzyć gniazda dla DHCP: %s"
|
msgstr "nie udało się utworzyć gniazda dla DHCPv6: %s"
|
||||||
|
|
||||||
#: dhcp6.c:57
|
#: dhcp6.c:57
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to bind DHCPv6 server socket: %s"
|
msgid "failed to bind DHCPv6 server socket: %s"
|
||||||
msgstr "błąd przy przyznawaniu nazwy gniazdu serwera DHCP: %s"
|
msgstr "dowiązywanie gniazda serwera DHCPv6 zakończone niepowodzeniem: %s"
|
||||||
|
|
||||||
#: rfc3315.c:94
|
#: rfc3315.c:94
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "no address range available for DHCPv6 request from relay at %s"
|
msgid "no address range available for DHCPv6 request from relay at %s"
|
||||||
msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla żądania %s %s"
|
msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla żądania DHCPv6 przekazanego przez %s"
|
||||||
|
|
||||||
#: rfc3315.c:103
|
#: rfc3315.c:103
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "no address range available for DHCPv6 request via %s"
|
msgid "no address range available for DHCPv6 request via %s"
|
||||||
msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla żądania %s %s"
|
msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla żądania DHCPv6 od %s"
|
||||||
|
|
||||||
#: rfc3315.c:206
|
#: rfc3315.c:206
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "%u available DHCPv6 subnet: %s/%d"
|
msgid "%u available DHCPv6 subnet: %s/%d"
|
||||||
msgstr "%u dostępna podsieć DHCP: %s/%s"
|
msgstr "%u dostępna podsieć DHCPv6: %s/%d"
|
||||||
|
|
||||||
#: dhcp-common.c:138
|
#: dhcp-common.c:138
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -1590,14 +1615,14 @@ msgid "duplicate IP address %s (%s) in dhcp-config directive"
|
|||||||
msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
|
msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
|
||||||
|
|
||||||
#: dhcp-common.c:443
|
#: dhcp-common.c:443
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "failed to join DHCPv6 multicast group: %s"
|
msgid "failed to join DHCPv6 multicast group: %s"
|
||||||
msgstr "błąd przy przyznawaniu nazwy gniazdu serwera DHCP: %s"
|
msgstr "nie udało się przyłączyć do grupy rozgłoszeniowej DHCPv6: %s"
|
||||||
|
|
||||||
#: radv.c:76
|
#: radv.c:76
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
msgid "cannot create ICMPv6 socket: %s"
|
msgid "cannot create ICMPv6 socket: %s"
|
||||||
msgstr "nie udało się utworzyć gniazda dla DHCP: %s"
|
msgstr "nie udało się utworzyć gniazda dla ICMPv6: %s"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~ msgid "Specify path to Lua script (no default)."
|
#~ msgid "Specify path to Lua script (no default)."
|
||||||
|
|||||||
@@ -17,19 +17,9 @@
|
|||||||
#include "dnsmasq.h"
|
#include "dnsmasq.h"
|
||||||
|
|
||||||
#if defined(HAVE_BSD_NETWORK) || defined(HAVE_SOLARIS_NETWORK)
|
#if defined(HAVE_BSD_NETWORK) || defined(HAVE_SOLARIS_NETWORK)
|
||||||
|
#include <ifaddrs.h>
|
||||||
static struct iovec ifconf = {
|
|
||||||
.iov_base = NULL,
|
|
||||||
.iov_len = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct iovec ifreq = {
|
|
||||||
.iov_base = NULL,
|
|
||||||
.iov_len = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
#if defined(HAVE_BSD_NETWORK) && !defined(__APPLE__)
|
#if defined(HAVE_BSD_NETWORK) && !defined(__APPLE__)
|
||||||
|
|
||||||
#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>
|
||||||
@@ -50,8 +40,12 @@ int arp_enumerate(void *parm, int (*callback)())
|
|||||||
struct rt_msghdr *rtm;
|
struct rt_msghdr *rtm;
|
||||||
struct sockaddr_inarp *sin2;
|
struct sockaddr_inarp *sin2;
|
||||||
struct sockaddr_dl *sdl;
|
struct sockaddr_dl *sdl;
|
||||||
|
struct iovec buff;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
|
buff.iov_base = NULL;
|
||||||
|
buff.iov_len = 0;
|
||||||
|
|
||||||
mib[0] = CTL_NET;
|
mib[0] = CTL_NET;
|
||||||
mib[1] = PF_ROUTE;
|
mib[1] = PF_ROUTE;
|
||||||
mib[2] = 0;
|
mib[2] = 0;
|
||||||
@@ -67,9 +61,9 @@ int arp_enumerate(void *parm, int (*callback)())
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if (!expand_buf(&ifconf, needed))
|
if (!expand_buf(&buff, needed))
|
||||||
return 0;
|
return 0;
|
||||||
if ((rc = sysctl(mib, 6, ifconf.iov_base, &needed, NULL, 0)) == 0 ||
|
if ((rc = sysctl(mib, 6, buff.iov_base, &needed, NULL, 0)) == 0 ||
|
||||||
errno != ENOMEM)
|
errno != ENOMEM)
|
||||||
break;
|
break;
|
||||||
needed += needed / 8;
|
needed += needed / 8;
|
||||||
@@ -77,7 +71,7 @@ int arp_enumerate(void *parm, int (*callback)())
|
|||||||
if (rc == -1)
|
if (rc == -1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (next = ifconf.iov_base ; next < (char *)ifconf.iov_base + needed; next += rtm->rtm_msglen)
|
for (next = buff.iov_base ; next < (char *)buff.iov_base + needed; next += rtm->rtm_msglen)
|
||||||
{
|
{
|
||||||
rtm = (struct rt_msghdr *)next;
|
rtm = (struct rt_msghdr *)next;
|
||||||
sin2 = (struct sockaddr_inarp *)(rtm + 1);
|
sin2 = (struct sockaddr_inarp *)(rtm + 1);
|
||||||
@@ -88,18 +82,13 @@ int arp_enumerate(void *parm, int (*callback)())
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int iface_enumerate(int family, void *parm, int (*callback)())
|
int iface_enumerate(int family, void *parm, int (*callback)())
|
||||||
{
|
{
|
||||||
char *ptr;
|
struct ifaddrs *head, *addrs;
|
||||||
struct ifreq *ifr;
|
int errsav, ret = 0;
|
||||||
struct ifconf ifc;
|
|
||||||
int fd, errsav, ret = 0;
|
|
||||||
int lastlen = 0;
|
|
||||||
size_t len = 0;
|
|
||||||
|
|
||||||
if (family == AF_UNSPEC)
|
if (family == AF_UNSPEC)
|
||||||
#if defined(HAVE_BSD_NETWORK) && !defined(__APPLE__)
|
#if defined(HAVE_BSD_NETWORK) && !defined(__APPLE__)
|
||||||
@@ -112,95 +101,62 @@ int iface_enumerate(int family, void *parm, int (*callback)())
|
|||||||
if (family == AF_LOCAL)
|
if (family == AF_LOCAL)
|
||||||
family = AF_LINK;
|
family = AF_LINK;
|
||||||
|
|
||||||
if ((fd = socket(PF_INET, SOCK_DGRAM, 0)) == -1)
|
if (getifaddrs(&head) == -1)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
while(1)
|
for (addrs = head; addrs; addrs = addrs->ifa_next)
|
||||||
{
|
{
|
||||||
len += 10*sizeof(struct ifreq);
|
if (addrs->ifa_addr->sa_family == family)
|
||||||
|
|
||||||
if (!expand_buf(&ifconf, len))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
ifc.ifc_len = len;
|
|
||||||
ifc.ifc_buf = ifconf.iov_base;
|
|
||||||
|
|
||||||
if (ioctl(fd, SIOCGIFCONF, &ifc) == -1)
|
|
||||||
{
|
{
|
||||||
if (errno != EINVAL || lastlen != 0)
|
int iface_index = if_nametoindex(addrs->ifa_name);
|
||||||
goto err;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (ifc.ifc_len == lastlen)
|
|
||||||
break; /* got a big enough buffer now */
|
|
||||||
lastlen = ifc.ifc_len;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (ptr = ifc.ifc_buf; ptr < (char *)(ifc.ifc_buf + ifc.ifc_len); ptr += len)
|
if (iface_index == 0)
|
||||||
{
|
continue;
|
||||||
/* subsequent entries may not be aligned, so copy into
|
|
||||||
an aligned buffer to avoid nasty complaints about
|
|
||||||
unaligned accesses. */
|
|
||||||
|
|
||||||
len = sizeof(struct ifreq);
|
|
||||||
|
|
||||||
#ifdef HAVE_SOCKADDR_SA_LEN
|
|
||||||
ifr = (struct ifreq *)ptr;
|
|
||||||
if (ifr->ifr_addr.sa_len > sizeof(ifr->ifr_ifru))
|
|
||||||
len = ifr->ifr_addr.sa_len + offsetof(struct ifreq, ifr_ifru);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!expand_buf(&ifreq, len))
|
|
||||||
goto err;
|
|
||||||
|
|
||||||
ifr = (struct ifreq *)ifreq.iov_base;
|
|
||||||
memcpy(ifr, ptr, len);
|
|
||||||
|
|
||||||
if (ifr->ifr_addr.sa_family == family)
|
|
||||||
{
|
|
||||||
if (family == AF_INET)
|
if (family == AF_INET)
|
||||||
{
|
{
|
||||||
struct in_addr addr, netmask, broadcast;
|
struct in_addr addr, netmask, broadcast;
|
||||||
broadcast.s_addr = 0;
|
addr = ((struct sockaddr_in *) addrs->ifa_addr)->sin_addr;
|
||||||
addr = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr;
|
netmask = ((struct sockaddr_in *) addrs->ifa_netmask)->sin_addr;
|
||||||
if (ioctl(fd, SIOCGIFNETMASK, ifr) == -1)
|
broadcast = ((struct sockaddr_in *) addrs->ifa_broadaddr)->sin_addr;
|
||||||
continue;
|
if (!((*callback)(addr, iface_index, netmask, broadcast, parm)))
|
||||||
netmask = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr;
|
|
||||||
if (ioctl(fd, SIOCGIFBRDADDR, ifr) != -1)
|
|
||||||
broadcast = ((struct sockaddr_in *) &ifr->ifr_addr)->sin_addr;
|
|
||||||
if (!((*callback)(addr,
|
|
||||||
(int)if_nametoindex(ifr->ifr_name),
|
|
||||||
netmask, broadcast,
|
|
||||||
parm)))
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
#ifdef HAVE_IPV6
|
#ifdef HAVE_IPV6
|
||||||
else if (family == AF_INET6)
|
else if (family == AF_INET6)
|
||||||
{
|
{
|
||||||
struct in6_addr *addr = &((struct sockaddr_in6 *)&ifr->ifr_addr)->sin6_addr;
|
struct in6_addr *addr = &((struct sockaddr_in6 *) addrs->ifa_addr)->sin6_addr;
|
||||||
|
unsigned char *netmask = (unsigned char *) &((struct sockaddr_in6 *) addrs->ifa_netmask)->sin6_addr;
|
||||||
|
int scope_id = ((struct sockaddr_in6 *) addrs->ifa_addr)->sin6_scope_id;
|
||||||
|
int i, j, prefix = 0;
|
||||||
|
|
||||||
|
for (i = 0; i < IN6ADDRSZ; i++, prefix += 8)
|
||||||
|
if (netmask[i] != 0xff)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (i != IN6ADDRSZ && netmask[i])
|
||||||
|
for (j = 7; j > 0; j--, prefix++)
|
||||||
|
if ((netmask[i] & (1 << j)) == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
/* voodoo to clear interface field in address */
|
/* voodoo to clear interface field in address */
|
||||||
if (!option_bool(OPT_NOWILD) && IN6_IS_ADDR_LINKLOCAL(addr))
|
if (!option_bool(OPT_NOWILD) && IN6_IS_ADDR_LINKLOCAL(addr))
|
||||||
{
|
{
|
||||||
addr->s6_addr[2] = 0;
|
addr->s6_addr[2] = 0;
|
||||||
addr->s6_addr[3] = 0;
|
addr->s6_addr[3] = 0;
|
||||||
}
|
}
|
||||||
/* We have no way to determine the prefix, so we assume it's 64 for now....... */
|
|
||||||
if (!((*callback)(addr, 64,
|
if (!((*callback)(addr, prefix, scope_id, iface_index, 0, parm)))
|
||||||
(int)((struct sockaddr_in6 *)&ifr->ifr_addr)->sin6_scope_id,
|
|
||||||
(int)if_nametoindex(ifr->ifr_name), 0,
|
|
||||||
parm)))
|
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_DHCP6
|
#ifdef HAVE_DHCP6
|
||||||
else if (family == AF_LINK)
|
else if (family == AF_LINK)
|
||||||
{
|
{
|
||||||
/* Assume ethernet again here */
|
/* Assume ethernet again here */
|
||||||
struct sockaddr_dl *sdl = (struct sockaddr_dl *)&ifr->ifr_addr;
|
struct sockaddr_dl *sdl = (struct sockaddr_dl *) addrs->ifa_addr;
|
||||||
if (sdl->sdl_alen != 0 && !((*callback)((int)if_nametoindex(ifr->ifr_name),
|
if (sdl->sdl_alen != 0 &&
|
||||||
ARPHRD_ETHER, LLADDR(sdl), sdl->sdl_alen, parm)))
|
!((*callback)(iface_index, ARPHRD_ETHER, LLADDR(sdl), sdl->sdl_alen, parm)))
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -211,7 +167,7 @@ int iface_enumerate(int family, void *parm, int (*callback)())
|
|||||||
|
|
||||||
err:
|
err:
|
||||||
errsav = errno;
|
errsav = errno;
|
||||||
close(fd);
|
freeifaddrs(head);
|
||||||
errno = errsav;
|
errno = errsav;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@@ -228,13 +184,10 @@ void init_bpf(void)
|
|||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
/* useful size which happens to be sufficient */
|
sprintf(daemon->dhcp_buff, "/dev/bpf%d", i++);
|
||||||
if (expand_buf(&ifreq, sizeof(struct ifreq)))
|
if ((daemon->dhcp_raw_fd = open(daemon->dhcp_buff, O_RDWR, 0)) != -1)
|
||||||
{
|
return;
|
||||||
sprintf(ifreq.iov_base, "/dev/bpf%d", i++);
|
|
||||||
if ((daemon->dhcp_raw_fd = open(ifreq.iov_base, O_RDWR, 0)) != -1)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (errno != EBUSY)
|
if (errno != EBUSY)
|
||||||
die(_("cannot create DHCP BPF socket: %s"), NULL, EC_BADNET);
|
die(_("cannot create DHCP BPF socket: %s"), NULL, EC_BADNET);
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-7
@@ -396,7 +396,7 @@ void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname)
|
|||||||
DBusConnection *connection = (DBusConnection *)daemon->dbus;
|
DBusConnection *connection = (DBusConnection *)daemon->dbus;
|
||||||
DBusMessage* message = NULL;
|
DBusMessage* message = NULL;
|
||||||
DBusMessageIter args;
|
DBusMessageIter args;
|
||||||
char *action_str, *addr, *mac = daemon->namebuff;
|
char *action_str, *mac = daemon->namebuff;
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@@ -406,9 +406,20 @@ void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname)
|
|||||||
if (!hostname)
|
if (!hostname)
|
||||||
hostname = "";
|
hostname = "";
|
||||||
|
|
||||||
p = extended_hwaddr(lease->hwaddr_type, lease->hwaddr_len,
|
#ifdef HAVE_DHCP6
|
||||||
lease->hwaddr, lease->clid_len, lease->clid, &i);
|
if (lease->flags & (LEASE_TA | LEASE_NA))
|
||||||
print_mac(mac, p, i);
|
{
|
||||||
|
print_mac(mac, lease->clid, lease->clid_len);
|
||||||
|
inet_ntop(AF_INET6, lease->hwaddr, daemon->addrbuff, ADDRSTRLEN);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
p = extended_hwaddr(lease->hwaddr_type, lease->hwaddr_len,
|
||||||
|
lease->hwaddr, lease->clid_len, lease->clid, &i);
|
||||||
|
print_mac(mac, p, i);
|
||||||
|
inet_ntop(AF_INET, &lease->addr, daemon->addrbuff, ADDRSTRLEN);
|
||||||
|
}
|
||||||
|
|
||||||
if (action == ACTION_DEL)
|
if (action == ACTION_DEL)
|
||||||
action_str = "DhcpLeaseDeleted";
|
action_str = "DhcpLeaseDeleted";
|
||||||
@@ -419,14 +430,12 @@ void emit_dbus_signal(int action, struct dhcp_lease *lease, char *hostname)
|
|||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
|
||||||
addr = inet_ntoa(lease->addr);
|
|
||||||
|
|
||||||
if (!(message = dbus_message_new_signal(DNSMASQ_PATH, DNSMASQ_SERVICE, action_str)))
|
if (!(message = dbus_message_new_signal(DNSMASQ_PATH, DNSMASQ_SERVICE, action_str)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
dbus_message_iter_init_append(message, &args);
|
dbus_message_iter_init_append(message, &args);
|
||||||
|
|
||||||
if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &addr) &&
|
if (dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &daemon->addrbuff) &&
|
||||||
dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &mac) &&
|
dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &mac) &&
|
||||||
dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &hostname))
|
dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, &hostname))
|
||||||
dbus_connection_send(connection, message, NULL);
|
dbus_connection_send(connection, message, NULL);
|
||||||
|
|||||||
+30
-15
@@ -365,36 +365,51 @@ struct dhcp_config *find_config6(struct dhcp_config *configs,
|
|||||||
|
|
||||||
void make_duid(time_t now)
|
void make_duid(time_t now)
|
||||||
{
|
{
|
||||||
/* rebase epoch to 1/1/2000 */
|
if (daemon->duid_config)
|
||||||
time_t newnow = now - 946684800;
|
{
|
||||||
|
unsigned char *p;
|
||||||
|
|
||||||
iface_enumerate(AF_LOCAL, &newnow, make_duid1);
|
daemon->duid = p = safe_malloc(daemon->duid_config_len + 6);
|
||||||
|
daemon->duid_len = daemon->duid_config_len + 6;
|
||||||
|
PUTSHORT(2, p); /* DUID_EN */
|
||||||
|
PUTLONG(daemon->duid_enterprise, p);
|
||||||
|
memcpy(p, daemon->duid_config, daemon->duid_config_len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* rebase epoch to 1/1/2000 */
|
||||||
|
time_t newnow = now - 946684800;
|
||||||
|
|
||||||
if(!daemon->duid)
|
iface_enumerate(AF_LOCAL, &newnow, make_duid1);
|
||||||
die("Cannot create DHCPv6 server DUID: %s", NULL, EC_MISC);
|
|
||||||
|
if(!daemon->duid)
|
||||||
|
die("Cannot create DHCPv6 server DUID: %s", NULL, EC_MISC);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int make_duid1(int index, unsigned int type, char *mac, size_t maclen, void *parm)
|
static int make_duid1(int index, unsigned int type, char *mac, size_t maclen, void *parm)
|
||||||
{
|
{
|
||||||
/* create DUID as specified in RFC3315. We use the MAC of the
|
/* create DUID as specified in RFC3315. We use the MAC of the
|
||||||
first interface we find that isn't loopback or P-to-P */
|
first interface we find that isn't loopback or P-to-P and
|
||||||
|
has address-type < 256. Address types above 256 are things like
|
||||||
|
tunnels which don't have usable MAC addresses. */
|
||||||
|
|
||||||
unsigned char *p;
|
unsigned char *p;
|
||||||
|
|
||||||
(void)index;
|
(void)index;
|
||||||
|
|
||||||
daemon->duid = p = safe_malloc(maclen + 8);
|
if (type >= 256)
|
||||||
daemon->duid_len = maclen + 8;
|
return 1;
|
||||||
|
|
||||||
#ifdef HAVE_BROKEN_RTC
|
#ifdef HAVE_BROKEN_RTC
|
||||||
|
daemon->duid = p = safe_malloc(maclen + 4);
|
||||||
|
daemon->duid_len = maclen + 4;
|
||||||
PUTSHORT(3, p); /* DUID_LL */
|
PUTSHORT(3, p); /* DUID_LL */
|
||||||
#else
|
|
||||||
PUTSHORT(1, p); /* DUID_LLT */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
PUTSHORT(type, p); /* address type */
|
PUTSHORT(type, p); /* address type */
|
||||||
|
#else
|
||||||
#ifndef HAVE_BROKEN_RTC
|
daemon->duid = p = safe_malloc(maclen + 8);
|
||||||
|
daemon->duid_len = maclen + 8;
|
||||||
|
PUTSHORT(1, p); /* DUID_LLT */
|
||||||
|
PUTSHORT(type, p); /* address type */
|
||||||
PUTLONG(*((time_t *)parm), p); /* time */
|
PUTLONG(*((time_t *)parm), p); /* time */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
+22
-7
@@ -106,16 +106,14 @@ int main (int argc, char **argv)
|
|||||||
else
|
else
|
||||||
open("/dev/null", O_RDWR);
|
open("/dev/null", O_RDWR);
|
||||||
|
|
||||||
#ifdef HAVE_LINUX_NETWORK
|
#ifndef HAVE_LINUX_NETWORK
|
||||||
netlink_init();
|
# if !(defined(IP_RECVDSTADDR) && defined(IP_RECVIF) && defined(IP_SENDSRCADDR))
|
||||||
#elif !(defined(IP_RECVDSTADDR) && \
|
|
||||||
defined(IP_RECVIF) && \
|
|
||||||
defined(IP_SENDSRCADDR))
|
|
||||||
if (!option_bool(OPT_NOWILD))
|
if (!option_bool(OPT_NOWILD))
|
||||||
{
|
{
|
||||||
bind_fallback = 1;
|
bind_fallback = 1;
|
||||||
set_option_bool(OPT_NOWILD);
|
set_option_bool(OPT_NOWILD);
|
||||||
}
|
}
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HAVE_TFTP
|
#ifndef HAVE_TFTP
|
||||||
@@ -180,10 +178,25 @@ int main (int argc, char **argv)
|
|||||||
if (daemon->dhcp6)
|
if (daemon->dhcp6)
|
||||||
dhcp6_init();
|
dhcp6_init();
|
||||||
|
|
||||||
if (daemon->ra_contexts || daemon->dhcp6)
|
|
||||||
join_multicast();
|
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_LINUX_NETWORK
|
||||||
|
/* After lease_init */
|
||||||
|
netlink_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_DHCP6
|
||||||
|
/* after netlink_init */
|
||||||
|
if (daemon->ra_contexts || daemon->dhcp6)
|
||||||
|
join_multicast();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_DHCP
|
||||||
|
/* after netlink_init */
|
||||||
|
if (daemon->dhcp || daemon->dhcp6)
|
||||||
|
lease_find_interfaces(now);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!enumerate_interfaces())
|
if (!enumerate_interfaces())
|
||||||
@@ -552,6 +565,8 @@ int main (int argc, char **argv)
|
|||||||
my_syslog(MS_DHCP | LOG_INFO,
|
my_syslog(MS_DHCP | LOG_INFO,
|
||||||
(dhcp_tmp->flags & CONTEXT_STATIC) ?
|
(dhcp_tmp->flags & CONTEXT_STATIC) ?
|
||||||
_("DHCP, static leases only on %.0s%s, lease time %s") :
|
_("DHCP, static leases only on %.0s%s, lease time %s") :
|
||||||
|
(dhcp_tmp->flags & CONTEXT_RA_NAME) ?
|
||||||
|
_("router advertisement with DHCPv4-derived names on %.0s%s, lifetime %s") :
|
||||||
(dhcp_tmp->flags & CONTEXT_RA_ONLY) ?
|
(dhcp_tmp->flags & CONTEXT_RA_ONLY) ?
|
||||||
_("router advertisement only on %.0s%s, lifetime %s") :
|
_("router advertisement only on %.0s%s, lifetime %s") :
|
||||||
(dhcp_tmp->flags & CONTEXT_PROXY) ?
|
(dhcp_tmp->flags & CONTEXT_PROXY) ?
|
||||||
|
|||||||
@@ -621,6 +621,7 @@ struct dhcp_context {
|
|||||||
#define CONTEXT_PROXY 8
|
#define CONTEXT_PROXY 8
|
||||||
#define CONTEXT_RA_ONLY 16
|
#define CONTEXT_RA_ONLY 16
|
||||||
#define CONTEXT_RA_DONE 32
|
#define CONTEXT_RA_DONE 32
|
||||||
|
#define CONTEXT_RA_NAME 64
|
||||||
|
|
||||||
struct ping_result {
|
struct ping_result {
|
||||||
struct in_addr addr;
|
struct in_addr addr;
|
||||||
@@ -629,6 +630,13 @@ struct ping_result {
|
|||||||
struct ping_result *next;
|
struct ping_result *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct subnet_map {
|
||||||
|
int iface;
|
||||||
|
struct in6_addr subnet;
|
||||||
|
struct subnet_map *next;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
struct tftp_file {
|
struct tftp_file {
|
||||||
int refcount, fd;
|
int refcount, fd;
|
||||||
off_t size;
|
off_t size;
|
||||||
@@ -723,6 +731,8 @@ extern struct daemon {
|
|||||||
struct tftp_prefix *if_prefix; /* per-interface TFTP prefixes */
|
struct tftp_prefix *if_prefix; /* per-interface TFTP prefixes */
|
||||||
struct interface_list *tftp_interfaces; /* interfaces for limited TFTP service */
|
struct interface_list *tftp_interfaces; /* interfaces for limited TFTP service */
|
||||||
int tftp_unlimited;
|
int tftp_unlimited;
|
||||||
|
unsigned int duid_enterprise, duid_config_len;
|
||||||
|
unsigned char *duid_config;
|
||||||
|
|
||||||
/* globally used stuff for DNS */
|
/* globally used stuff for DNS */
|
||||||
char *packet; /* packet buffer */
|
char *packet; /* packet buffer */
|
||||||
@@ -948,6 +958,7 @@ void lease_prune(struct dhcp_lease *target, time_t now);
|
|||||||
void lease_update_from_configs(void);
|
void lease_update_from_configs(void);
|
||||||
int do_script_run(time_t now);
|
int do_script_run(time_t now);
|
||||||
void rerun_scripts(void);
|
void rerun_scripts(void);
|
||||||
|
void lease_find_interfaces(time_t now);
|
||||||
#ifdef HAVE_SCRIPT
|
#ifdef HAVE_SCRIPT
|
||||||
void lease_add_extradata(struct dhcp_lease *lease, unsigned char *data,
|
void lease_add_extradata(struct dhcp_lease *lease, unsigned char *data,
|
||||||
unsigned int len, int delim);
|
unsigned int len, int delim);
|
||||||
@@ -1083,4 +1094,5 @@ void ra_init(time_t now);
|
|||||||
void icmp6_packet(void);
|
void icmp6_packet(void);
|
||||||
time_t periodic_ra(time_t now);
|
time_t periodic_ra(time_t now);
|
||||||
void ra_start_unsolicted(time_t now);
|
void ra_start_unsolicted(time_t now);
|
||||||
|
struct subnet_map *build_subnet_map(void);
|
||||||
#endif
|
#endif
|
||||||
+104
-11
@@ -175,16 +175,6 @@ void lease_init(time_t now)
|
|||||||
file_dirty = 0;
|
file_dirty = 0;
|
||||||
lease_prune(NULL, now);
|
lease_prune(NULL, now);
|
||||||
dns_dirty = 1;
|
dns_dirty = 1;
|
||||||
|
|
||||||
#ifdef HAVE_DHCP6
|
|
||||||
/* If we're not doing DHCPv6, and there are not v6 leases, don't add the DUID to the database */
|
|
||||||
if (!daemon->duid && daemon->dhcp6)
|
|
||||||
{
|
|
||||||
file_dirty = 1;
|
|
||||||
make_duid(now);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void lease_update_from_configs(void)
|
void lease_update_from_configs(void)
|
||||||
@@ -340,20 +330,122 @@ void lease_update_file(time_t now)
|
|||||||
alarm((unsigned)difftime(next_event, now));
|
alarm((unsigned)difftime(next_event, now));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int find_interface_v4(struct in_addr local, int if_index,
|
||||||
|
struct in_addr netmask, struct in_addr broadcast, void *vparam)
|
||||||
|
{
|
||||||
|
struct dhcp_lease *lease;
|
||||||
|
|
||||||
|
(void) broadcast;
|
||||||
|
(void) vparam;
|
||||||
|
|
||||||
|
for (lease = leases; lease; lease = lease->next)
|
||||||
|
if (!(lease->flags & (LEASE_TA | LEASE_NA)))
|
||||||
|
if (is_same_net(local, lease->addr, netmask))
|
||||||
|
lease->last_interface = if_index;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_DHCP6
|
||||||
|
static int find_interface_v6(struct in6_addr *local, int prefix,
|
||||||
|
int scope, int if_index, int dad, void *vparam)
|
||||||
|
{
|
||||||
|
struct dhcp_lease *lease;
|
||||||
|
|
||||||
|
(void) scope;
|
||||||
|
(void) vparam;
|
||||||
|
(void)dad;
|
||||||
|
|
||||||
|
for (lease = leases; lease; lease = lease->next)
|
||||||
|
if ((lease->flags & (LEASE_TA | LEASE_NA)))
|
||||||
|
if (is_same_net6(local, (struct in6_addr *)&lease->hwaddr, prefix))
|
||||||
|
lease->last_interface = if_index;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Find interfaces associated with leases at start-up. This gets updated as
|
||||||
|
we do DHCP transactions, but information about directly-connected subnets
|
||||||
|
is useful from scrips and necessary for determining SLAAC addresses from
|
||||||
|
start-time. */
|
||||||
|
void lease_find_interfaces(time_t now)
|
||||||
|
{
|
||||||
|
iface_enumerate(AF_INET, NULL, find_interface_v4);
|
||||||
|
#ifdef HAVE_DHCP6
|
||||||
|
iface_enumerate(AF_INET6, NULL, find_interface_v6);
|
||||||
|
|
||||||
|
/* If we're not doing DHCPv6, and there are not v6 leases, don't add the DUID to the database */
|
||||||
|
if (!daemon->duid && daemon->dhcp6)
|
||||||
|
{
|
||||||
|
file_dirty = 1;
|
||||||
|
make_duid(now);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void lease_update_dns(void)
|
void lease_update_dns(void)
|
||||||
{
|
{
|
||||||
struct dhcp_lease *lease;
|
struct dhcp_lease *lease;
|
||||||
|
|
||||||
if (daemon->port != 0 && dns_dirty)
|
if (daemon->port != 0 && dns_dirty)
|
||||||
{
|
{
|
||||||
|
#ifdef HAVE_DHCP6
|
||||||
|
struct subnet_map *subnets = build_subnet_map();
|
||||||
|
#endif
|
||||||
|
|
||||||
cache_unhash_dhcp();
|
cache_unhash_dhcp();
|
||||||
|
|
||||||
for (lease = leases; lease; lease = lease->next)
|
for (lease = leases; lease; lease = lease->next)
|
||||||
{
|
{
|
||||||
int prot = AF_INET;
|
int prot = AF_INET;
|
||||||
|
|
||||||
#ifdef HAVE_DHCP6
|
#ifdef HAVE_DHCP6
|
||||||
if (lease->flags & (LEASE_TA | LEASE_NA))
|
if (lease->flags & (LEASE_TA | LEASE_NA))
|
||||||
prot = AF_INET6;
|
prot = AF_INET6;
|
||||||
|
else if (lease->hostname || lease->fqdn)
|
||||||
|
{
|
||||||
|
struct subnet_map *map;
|
||||||
|
for (map = subnets; map; map = map->next)
|
||||||
|
if (lease->last_interface == map->iface)
|
||||||
|
{
|
||||||
|
struct in6_addr addr = map->subnet;
|
||||||
|
if (lease->hwaddr_len == 6 &&
|
||||||
|
(lease->hwaddr_type == ARPHRD_ETHER || lease->hwaddr_type == ARPHRD_IEEE802))
|
||||||
|
{
|
||||||
|
/* convert MAC address to EUI-64 */
|
||||||
|
memcpy(&addr.s6_addr[8], lease->hwaddr, 3);
|
||||||
|
memcpy(&addr.s6_addr[13], &lease->hwaddr[3], 3);
|
||||||
|
addr.s6_addr[11] = 0xff;
|
||||||
|
addr.s6_addr[12] = 0xfe;
|
||||||
|
}
|
||||||
|
#if defined(ARPHRD_EUI64)
|
||||||
|
else if (lease->hwaddr_len == 8 &&
|
||||||
|
lease->hwaddr_type == ARPHRD_EUI64)
|
||||||
|
memcpy(&addr.s6_addr[8], lease->hwaddr, 8);
|
||||||
|
#endif
|
||||||
|
#if defined(ARPHRD_IEEE1394) && defined(ARPHRD_EUI64)
|
||||||
|
else if (lease->clid_len == 9 &&
|
||||||
|
lease->clid[0] == ARPHRD_EUI64 &&
|
||||||
|
lease->hwaddr_type == ARPHRD_IEEE1394)
|
||||||
|
/* firewire has EUI-64 identifier as clid */
|
||||||
|
memcpy(&addr.s6_addr[8], &lease->clid[1], 8);
|
||||||
|
#endif
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
|
||||||
|
addr.s6_addr[8] ^= 0x02;
|
||||||
|
|
||||||
|
if (lease->fqdn)
|
||||||
|
cache_add_dhcp_entry(lease->fqdn, AF_INET6, (struct all_addr *)&addr, lease->expires);
|
||||||
|
if (!option_bool(OPT_DHCP_FQDN) && lease->hostname)
|
||||||
|
cache_add_dhcp_entry(lease->hostname, AF_INET6, (struct all_addr *)&addr, lease->expires);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (lease->fqdn)
|
if (lease->fqdn)
|
||||||
@@ -614,7 +706,8 @@ void lease_set_expires(struct dhcp_lease *lease, unsigned int len, time_t now)
|
|||||||
if (len != lease->length)
|
if (len != lease->length)
|
||||||
{
|
{
|
||||||
lease->length = len;
|
lease->length = len;
|
||||||
lease->aux_changed = file_dirty = 1;
|
lease->flags |= LEASE_AUX_CHANGED;
|
||||||
|
file_dirty = 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|||||||
+25
-2
@@ -115,6 +115,7 @@ struct myoption {
|
|||||||
#define LOPT_FQDN 304
|
#define LOPT_FQDN 304
|
||||||
#define LOPT_LUASCRIPT 305
|
#define LOPT_LUASCRIPT 305
|
||||||
#define LOPT_RA 306
|
#define LOPT_RA 306
|
||||||
|
#define LOPT_DUID 307
|
||||||
|
|
||||||
#ifdef HAVE_GETOPT_LONG
|
#ifdef HAVE_GETOPT_LONG
|
||||||
static const struct option opts[] =
|
static const struct option opts[] =
|
||||||
@@ -235,6 +236,7 @@ static const struct myoption opts[] =
|
|||||||
{ "dhcp-client-update", 0, 0, LOPT_FQDN },
|
{ "dhcp-client-update", 0, 0, LOPT_FQDN },
|
||||||
{ "dhcp-luascript", 1, 0, LOPT_LUASCRIPT },
|
{ "dhcp-luascript", 1, 0, LOPT_LUASCRIPT },
|
||||||
{ "enable-ra", 0, 0, LOPT_RA },
|
{ "enable-ra", 0, 0, LOPT_RA },
|
||||||
|
{ "dhcp-duid", 1, 0, LOPT_DUID },
|
||||||
{ NULL, 0, 0, 0 }
|
{ NULL, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -362,6 +364,7 @@ static struct {
|
|||||||
{ LOPT_CONNTRACK, OPT_CONNTRACK, NULL, gettext_noop("Copy connection-track mark from queries to upstream connections."), NULL },
|
{ LOPT_CONNTRACK, OPT_CONNTRACK, NULL, gettext_noop("Copy connection-track mark from queries to upstream connections."), NULL },
|
||||||
{ LOPT_FQDN, OPT_FQDN_UPDATE, NULL, gettext_noop("Allow DHCP clients to do their own DDNS updates."), NULL },
|
{ LOPT_FQDN, OPT_FQDN_UPDATE, NULL, gettext_noop("Allow DHCP clients to do their own DDNS updates."), NULL },
|
||||||
{ LOPT_RA, OPT_RA, NULL, gettext_noop("Send router-advertisements for interfaces doing DHCPv6"), NULL },
|
{ LOPT_RA, OPT_RA, NULL, gettext_noop("Send router-advertisements for interfaces doing DHCPv6"), NULL },
|
||||||
|
{ LOPT_DUID, ARG_ONE, "<enterprise>,<duid>", gettext_noop("Specify DUID_EN-type DHCPv6 server DUID"), NULL },
|
||||||
{ 0, 0, NULL, NULL, NULL }
|
{ 0, 0, NULL, NULL, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -577,7 +580,7 @@ char *option_string(int prot, unsigned int opt, unsigned char *val, int opt_len,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buf && (!ot[o].name || nodecode))
|
if (opt_len != 0 && buf && (!ot[o].name || nodecode))
|
||||||
{
|
{
|
||||||
int trunc = 0;
|
int trunc = 0;
|
||||||
if (opt_len > 13)
|
if (opt_len > 13)
|
||||||
@@ -2345,6 +2348,11 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
|
|||||||
memcpy(&new->end6, &new->start6, IN6ADDRSZ);
|
memcpy(&new->end6, &new->start6, IN6ADDRSZ);
|
||||||
new->flags |= CONTEXT_RA_ONLY;
|
new->flags |= CONTEXT_RA_ONLY;
|
||||||
}
|
}
|
||||||
|
else if (strcmp(a[1], "ra-names") == 0)
|
||||||
|
{
|
||||||
|
memcpy(&new->end6, &new->start6, IN6ADDRSZ);
|
||||||
|
new->flags |= CONTEXT_RA_NAME | CONTEXT_RA_ONLY;
|
||||||
|
}
|
||||||
else if (!inet_pton(AF_INET6, a[1], &new->end6))
|
else if (!inet_pton(AF_INET6, a[1], &new->end6))
|
||||||
option = '?';
|
option = '?';
|
||||||
|
|
||||||
@@ -2370,7 +2378,9 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
|
|||||||
{
|
{
|
||||||
new->prefix = pref;
|
new->prefix = pref;
|
||||||
leasepos = 3;
|
leasepos = 3;
|
||||||
if (new->prefix < 64)
|
if ((new->flags & CONTEXT_RA_ONLY) && new->prefix != 64)
|
||||||
|
problem = _("prefix must be exactly 64 for RA subnets");
|
||||||
|
else if (new->prefix < 64)
|
||||||
problem = _("prefix must be at least 64");
|
problem = _("prefix must be at least 64");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3040,6 +3050,19 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
|
|||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_DHCP6
|
||||||
|
case LOPT_DUID: /* --dhcp-duid */
|
||||||
|
if (!(comma = split(arg)) || !atoi_check(arg, (int *)&daemon->duid_enterprise))
|
||||||
|
problem = _("bad DUID");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
daemon->duid_config_len = parse_hex(comma,(unsigned char *)comma, strlen(comma), NULL, NULL);
|
||||||
|
daemon->duid_config = opt_malloc(daemon->duid_config_len);
|
||||||
|
memcpy(daemon->duid_config, comma, daemon->duid_config_len);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
|
|
||||||
case 'V': /* --alias */
|
case 'V': /* --alias */
|
||||||
{
|
{
|
||||||
char *dash, *a[3] = { NULL, NULL, NULL };
|
char *dash, *a[3] = { NULL, NULL, NULL };
|
||||||
|
|||||||
+70
-1
@@ -54,7 +54,7 @@ void ra_init(time_t now)
|
|||||||
int class = IPTOS_CLASS_CS6;
|
int class = IPTOS_CLASS_CS6;
|
||||||
#endif
|
#endif
|
||||||
int val = 255; /* radvd uses this value */
|
int val = 255; /* radvd uses this value */
|
||||||
size_t len = sizeof(int);
|
socklen_t len = sizeof(int);
|
||||||
|
|
||||||
/* ensure this is around even if we're not doing DHCPv6 */
|
/* ensure this is around even if we're not doing DHCPv6 */
|
||||||
expand_buf(&daemon->outpacket, sizeof(struct dhcp_packet));
|
expand_buf(&daemon->outpacket, sizeof(struct dhcp_packet));
|
||||||
@@ -426,4 +426,73 @@ static int iface_search(struct in6_addr *local, int prefix,
|
|||||||
return 1; /* keep searching */
|
return 1; /* keep searching */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int add_subnet(struct in6_addr *local, int prefix,
|
||||||
|
int scope, int if_index, int dad, void *vparam)
|
||||||
|
{
|
||||||
|
struct dhcp_context *context;
|
||||||
|
struct subnet_map **subnets = vparam;
|
||||||
|
struct subnet_map *map;
|
||||||
|
|
||||||
|
(void)scope;
|
||||||
|
(void)dad;
|
||||||
|
|
||||||
|
for (context = daemon->ra_contexts; context; context = context->next)
|
||||||
|
if ((context->flags & CONTEXT_RA_NAME) &&
|
||||||
|
prefix == context->prefix &&
|
||||||
|
is_same_net6(local, &context->start6, prefix) &&
|
||||||
|
is_same_net6(local, &context->end6, prefix))
|
||||||
|
{
|
||||||
|
for (map = *subnets; map; map = map->next)
|
||||||
|
if (map->iface == 0 ||
|
||||||
|
(map->iface == if_index && is_same_net6(local, &map->subnet, prefix)))
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* It's there already */
|
||||||
|
if (map && map->iface != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!map && (map = whine_malloc(sizeof(struct subnet_map))))
|
||||||
|
{
|
||||||
|
map->next = *subnets;
|
||||||
|
*subnets = map;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (map)
|
||||||
|
{
|
||||||
|
map->iface = if_index;
|
||||||
|
map->subnet = *local;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Build a map from ra-names subnets to corresponding interfaces. This
|
||||||
|
is used to go from DHCPv4 leases to SLAAC addresses,
|
||||||
|
interface->IPv6-subnet, IPv6-subnet + MAC address -> SLAAC.
|
||||||
|
*/
|
||||||
|
struct subnet_map *build_subnet_map(void)
|
||||||
|
{
|
||||||
|
struct subnet_map *map;
|
||||||
|
struct dhcp_context *context;
|
||||||
|
static struct subnet_map *subnets = NULL;
|
||||||
|
|
||||||
|
for (context = daemon->ra_contexts; context; context = context->next)
|
||||||
|
if ((context->flags & CONTEXT_RA_NAME))
|
||||||
|
break;
|
||||||
|
|
||||||
|
/* no ra-names, no need to go further. */
|
||||||
|
if (!context)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
/* mark unused */
|
||||||
|
for (map = subnets; map; map = map->next)
|
||||||
|
map->iface = 0;
|
||||||
|
|
||||||
|
if (iface_enumerate(AF_INET6, &subnets, add_subnet))
|
||||||
|
return subnets;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
+1
-1
@@ -25,7 +25,7 @@ static int add_resource_record(struct dns_header *header, char *limit, int *trun
|
|||||||
((size_t)((pp) - (unsigned char *)(header) + (len)) <= (plen))
|
((size_t)((pp) - (unsigned char *)(header) + (len)) <= (plen))
|
||||||
|
|
||||||
#define ADD_RDLEN(header, pp, plen, len) \
|
#define ADD_RDLEN(header, pp, plen, len) \
|
||||||
(!CHECK_LEN(header, pp, plen, len) ? 0 : (long)((pp) += (len)), 1)
|
(!CHECK_LEN(header, pp, plen, len) ? 0 : (((pp) += (len)), 1))
|
||||||
|
|
||||||
static int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
|
static int extract_name(struct dns_header *header, size_t plen, unsigned char **pp,
|
||||||
char *name, int isExtract, int extrabytes)
|
char *name, int isExtract, int extrabytes)
|
||||||
|
|||||||
+10
-1
@@ -737,6 +737,11 @@ static int dhcp6_no_relay(int msg_type, struct in6_addr *link_address, struct dh
|
|||||||
{
|
{
|
||||||
if (address_assigned)
|
if (address_assigned)
|
||||||
{
|
{
|
||||||
|
o1 = new_opt6(OPTION6_STATUS_CODE);
|
||||||
|
put_opt6_short(DHCP6SUCCESS);
|
||||||
|
put_opt6_string("Oh hai from dnsmasq");
|
||||||
|
end_opt6(o1);
|
||||||
|
|
||||||
if (ia_type == OPTION6_IA_NA)
|
if (ia_type == OPTION6_IA_NA)
|
||||||
{
|
{
|
||||||
/* go back an fill in fields in IA_NA option */
|
/* go back an fill in fields in IA_NA option */
|
||||||
@@ -750,7 +755,7 @@ static int dhcp6_no_relay(int msg_type, struct in6_addr *link_address, struct dh
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* no address, return erro */
|
/* no address, return error */
|
||||||
o1 = new_opt6(OPTION6_STATUS_CODE);
|
o1 = new_opt6(OPTION6_STATUS_CODE);
|
||||||
put_opt6_short(DHCP6NOADDRS);
|
put_opt6_short(DHCP6NOADDRS);
|
||||||
put_opt6_string("No addresses available");
|
put_opt6_string("No addresses available");
|
||||||
@@ -759,6 +764,10 @@ static int dhcp6_no_relay(int msg_type, struct in6_addr *link_address, struct dh
|
|||||||
|
|
||||||
end_opt6(o);
|
end_opt6(o);
|
||||||
|
|
||||||
|
o = new_opt6(OPTION6_PREFERENCE);
|
||||||
|
put_opt6_char(0);
|
||||||
|
end_opt6(o);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user