\n"
-"Language-Team: Polish <>\n"
+"Language-Team: polski <>\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\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"
"X-Generator: Lokalize 1.1\n"
@@ -23,757 +23,787 @@ msgstr ""
#: cache.c:761
#, c-format
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:795 dhcp.c:865
+#: cache.c:795
+#: dhcp.c:874
#, c-format
msgid "bad address at %s line %d"
-msgstr "bdny adres w pliku %s, w linii %d"
+msgstr "błędny adres w pliku %s, w linii %d"
-#: cache.c:853 dhcp.c:881
+#: cache.c:853
+#: dhcp.c:890
#, c-format
msgid "bad name at %s line %d"
-msgstr "bdna nazwa w pliku %s, w linii %d"
+msgstr "błędna nazwa w pliku %s, w linii %d"
-#: cache.c:860 dhcp.c:956
+#: cache.c:860
+#: dhcp.c:965
#, c-format
msgid "read %s - %d addresses"
-msgstr "wczytaem %s - %d adresw"
+msgstr "wczytałem %s - %d adresów"
#: cache.c:899
msgid "cleared cache"
-msgstr "wyczyszczono pami podrczn"
+msgstr "wyczyszczono pamięć podręczną"
-#: cache.c:960
+#: cache.c:934
+#, c-format
+msgid "No IPv4 address found for %s"
+msgstr "Nie znalazłem adresu IPv4 komputera %s"
+
+#: cache.c:975
#, c-format
msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
-msgstr "%s to nazwa CNAME, nie przypisuj jej dzierawie DHCP %s"
+msgstr "%s to nazwa CNAME, nie przypisuję jej dzierżawie DHCP %s"
-#: cache.c:966
+#: cache.c:981
#, c-format
msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
-msgstr "nazwa %s nie zostaa nadana dzierawie DHCP %s,poniewa nazwa istnieje w %s i ma ju adres %s"
+msgstr "nazwa %s nie została nadana dzierżawie DHCP %s, ponieważ nazwa istnieje w %s i ma już adres %s"
-#: cache.c:1039
+#: cache.c:1054
#, c-format
msgid "time %lu"
msgstr "czas %lu"
-#: cache.c:1040
+#: cache.c:1055
#, c-format
msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
-msgstr "wielko pamici podrcznej: %d; %d z %d miejsc aktualnych wpisw uyto ponownie."
+msgstr "wielkość pamięci podręcznej: %d; %d z %d miejsc aktualnych wpisów użyto ponownie."
-#: cache.c:1042
+#: cache.c:1057
#, c-format
msgid "queries forwarded %u, queries answered locally %u"
-msgstr "%u zapyta przesanych dalej, %u odpowiedzi udzielonych samodzielnie"
+msgstr "%u zapytań przesłanych dalej, %u odpowiedzi udzielonych samodzielnie"
-#: cache.c:1068
+#: cache.c:1083
#, c-format
msgid "server %s#%d: queries sent %u, retried or failed %u"
-msgstr "serwer %s#%d: %u zapyta wysanych, %u ponowionych lub nieudanych"
+msgstr "serwer %s#%d: %u zapytań wysłanych, %u ponowionych lub nieudanych"
#: util.c:57
#, c-format
msgid "failed to seed the random number generator: %s"
-msgstr "brak moliwoci uycia generatora liczb losowych: %s"
+msgstr "brak możliwości użycia generatora liczb losowych: %s"
#: util.c:189
msgid "failed to allocate memory"
-msgstr "nie udao si przydzieli pamici"
+msgstr "nie udało się przydzielić pamięci"
-#: util.c:227 option.c:573
+#: util.c:227
+#: option.c:579
msgid "could not get memory"
-msgstr "nie mona dosta pamici"
+msgstr "nie można dostać pamięci"
#: util.c:237
#, c-format
msgid "cannot create pipe: %s"
-msgstr "bd podczas prby utworzenia potoku: %s"
+msgstr "błąd podczas próby utworzenia potoku: %s"
#: util.c:245
#, c-format
msgid "failed to allocate %d bytes"
-msgstr "niemoliwo przydzielenia %d bajtw pamici"
+msgstr "niemożliwość przydzielenia %d bajtów pamięci"
-#: util.c:350
+#: util.c:358
#, c-format
msgid "infinite"
-msgstr "nieskoczona"
-
-#: option.c:244
-msgid "Specify local address(es) to listen on."
-msgstr "Wskazanie adresw, na ktrych naley nasuchiwa."
-
-#: option.c:245
-msgid "Return ipaddr for all hosts in specified domains."
-msgstr "Zwracanie adresu IP dla wszystkich hostw we wskazanych domenach."
-
-#: option.c:246
-msgid "Fake reverse lookups for RFC1918 private address ranges."
-msgstr "Wyczenie przekazywania zapyta odwrotnych dla prywatnych zakresw IP."
-
-#: option.c:247
-msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
-msgstr "Traktowanie adresu IP jako NXDOMAIN (uniewania ,,Verisign wildcard'')."
+msgstr "nieskończona"
#: option.c:248
-#, c-format
-msgid "Specify the size of the cache in entries (defaults to %s)."
-msgstr "Wskazanie wielkoci pamici podrcznej (domylnie: %s miejsc)."
+msgid "Specify local address(es) to listen on."
+msgstr "Wskazanie adresów, na których należy nasłuchiwać."
#: option.c:249
-#, c-format
-msgid "Specify configuration file (defaults to %s)."
-msgstr "Wskazanie pliku konfiguracyjnego (domylnie: %s)."
+msgid "Return ipaddr for all hosts in specified domains."
+msgstr "Zwracanie adresu IP dla wszystkich hostów we wskazanych domenach."
#: option.c:250
-msgid "Do NOT fork into the background: run in debug mode."
-msgstr "NIE twrz procesu potomnego w tle: dziaanie w trybie debugowania."
+msgid "Fake reverse lookups for RFC1918 private address ranges."
+msgstr "Wyłączenie przekazywania zapytań odwrotnych dla prywatnych zakresów IP."
#: option.c:251
-msgid "Do NOT forward queries with no domain part."
-msgstr "Wyczenie przekazywania zapyta bez podanej czci domenowej."
+msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
+msgstr "Traktowanie adresu IP jako NXDOMAIN (unieważnia ,,Verisign wildcard'')."
#: option.c:252
-msgid "Return self-pointing MX records for local hosts."
-msgstr "Zwracanie samowskazujcego rekordu MX dla lokalnych hostw."
+#, c-format
+msgid "Specify the size of the cache in entries (defaults to %s)."
+msgstr "Wskazanie wielkości pamięci podręcznej (domyślnie: %s miejsc)."
#: option.c:253
+#, c-format
+msgid "Specify configuration file (defaults to %s)."
+msgstr "Wskazanie pliku konfiguracyjnego (domyślnie: %s)."
+
+#: option.c:254
+msgid "Do NOT fork into the background: run in debug mode."
+msgstr "NIE twórz procesu potomnego w tle: działanie w trybie debugowania."
+
+#: option.c:255
+msgid "Do NOT forward queries with no domain part."
+msgstr "Wyłączenie przekazywania zapytań bez podanej części domenowej."
+
+#: option.c:256
+msgid "Return self-pointing MX records for local hosts."
+msgstr "Zwracanie samowskazującego rekordu MX dla lokalnych hostów."
+
+#: option.c:257
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Rozwijanie prostych nazw z /etc/hosts przyrostkiem domenowym."
-#: option.c:254
+#: option.c:258
msgid "Don't forward spurious DNS requests from Windows hosts."
-msgstr "Wyczenie przekazywania pozornych zapyta DNS z komputerw dziaajcych pod Windows."
+msgstr "Wyłączenie przekazywania pozornych zapytań DNS z komputerów działających pod Windows."
-#: option.c:255
+#: option.c:259
msgid "Enable DHCP in the range given with lease duration."
-msgstr "Wczenie serwera DHCP dla wskazanego zakresu adresw."
+msgstr "Włączenie serwera DHCP dla wskazanego zakresu adresów."
-#: option.c:256
+#: option.c:260
#, c-format
msgid "Change to this group after startup (defaults to %s)."
-msgstr "Po uruchomieniu zmiana grupy procesu na podan (domylnie: %s)."
+msgstr "Po uruchomieniu zmiana grupy procesu na podaną (domyślnie: %s)."
-#: option.c:257
+#: option.c:261
msgid "Set address or hostname for a specified machine."
msgstr "Ustawienie adresu lub nazwy dla wskazanego komputera."
-#: option.c:258
+#: option.c:262
msgid "Read DHCP host specs from file."
-msgstr "Wskazanie pliku z wartociami 'dhcp-host='."
+msgstr "Wskazanie pliku z wartościami 'dhcp-host='."
-#: option.c:259
+#: option.c:263
msgid "Read DHCP option specs from file."
-msgstr "Wskazanie pliku z wartociami 'dhcp-option='."
+msgstr "Wskazanie pliku z wartościami 'dhcp-option='."
-#: option.c:260
+#: option.c:264
msgid "Evaluate conditional tag expression."
-msgstr "Warunkowe ustawianie znacznikw."
+msgstr "Warunkowe ustawianie znaczników."
-#: option.c:261
+#: option.c:265
#, c-format
msgid "Do NOT load %s file."
msgstr "NIE wczytywanie pliku %s."
-#: option.c:262
+#: option.c:266
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
-msgstr "Wskazanie dodatkowego pliku 'hosts' oprcz %s."
-
-#: option.c:263
-msgid "Specify interface(s) to listen on."
-msgstr "Interfejsy, na ktrych nasuchiwa."
-
-#: option.c:264
-msgid "Specify interface(s) NOT to listen on."
-msgstr "Interfejsy, na ktrych NIE nasuchiwa."
-
-#: option.c:265
-msgid "Map DHCP user class to tag."
-msgstr "Przyporzdkowanie znacznika w zalenoci od klasy uytkownika DHCP."
-
-#: option.c:266
-msgid "Map RFC3046 circuit-id to tag."
-msgstr "Przyporzdkowanie znacznika w zalenoci od numeru obwodu (w rozumieniu RFC3046)."
+msgstr "Wskazanie dodatkowego pliku 'hosts' oprócz %s."
#: option.c:267
-msgid "Map RFC3046 remote-id to tag."
-msgstr "Przyporzdkowanie znacznika w zalenoci od numeru agenta (w rozumieniu RFC3046)."
+msgid "Specify interface(s) to listen on."
+msgstr "Interfejsy, na których nasłuchiwać."
#: option.c:268
-msgid "Map RFC3993 subscriber-id to tag."
-msgstr "Przyporzdkowanie znacznika w zalenoci od numeru subskrybenta (w rozumieniu RFC3993)."
+msgid "Specify interface(s) NOT to listen on."
+msgstr "Interfejsy, na których NIE nasłuchiwać."
#: option.c:269
-msgid "Don't do DHCP for hosts with tag set."
-msgstr "Wyczenie DHCP dla hostw z okrelonym znacznikiem."
+msgid "Map DHCP user class to tag."
+msgstr "Przyporządkowanie znacznika w zależności od klasy użytkownika DHCP."
#: option.c:270
-msgid "Force broadcast replies for hosts with tag set."
-msgstr "Wymuszenie odpowiedzi w trybie rozgoszeniowym dla hostw z okrelonym znacznikiem."
+msgid "Map RFC3046 circuit-id to tag."
+msgstr "Przyporządkowanie znacznika w zależności od numeru obwodu (w rozumieniu RFC3046)."
#: option.c:271
-msgid "Do NOT fork into the background, do NOT run in debug mode."
-msgstr "NIE twrz procesu potomnego w tle i NIE wczaj trybu debugowania."
+msgid "Map RFC3046 remote-id to tag."
+msgstr "Przyporządkowanie znacznika w zależności od numeru agenta (w rozumieniu RFC3046)."
#: option.c:272
-msgid "Assume we are the only DHCP server on the local network."
-msgstr "Zakadanie, e jestemy jedynym serwerem DHCP w sieci lokalnej."
+msgid "Map RFC3993 subscriber-id to tag."
+msgstr "Przyporządkowanie znacznika w zależności od numeru subskrybenta (w rozumieniu RFC3993)."
#: option.c:273
-#, c-format
-msgid "Specify where to store DHCP leases (defaults to %s)."
-msgstr "cieka przechowywania pliku dzieraw DHCP (domylnie: %s)."
+msgid "Don't do DHCP for hosts with tag set."
+msgstr "Wyłączenie DHCP dla hostów z określonym znacznikiem."
#: option.c:274
-msgid "Return MX records for local hosts."
-msgstr "Wczenie zwracania rekordu MX dla hostw lokalnych."
+msgid "Force broadcast replies for hosts with tag set."
+msgstr "Wymuszenie odpowiedzi w trybie rozgłoszeniowym dla hostów z określonym znacznikiem."
#: option.c:275
-msgid "Specify an MX record."
-msgstr "Specyfikacja rekordu MX."
+msgid "Do NOT fork into the background, do NOT run in debug mode."
+msgstr "NIE twórz procesu potomnego w tle i NIE włączaj trybu debugowania."
#: option.c:276
-msgid "Specify BOOTP options to DHCP server."
-msgstr "Okrelenie opcji BOOTP serwera DHCP."
+msgid "Assume we are the only DHCP server on the local network."
+msgstr "Zakładanie, że jesteśmy jedynym serwerem DHCP w sieci lokalnej."
#: option.c:277
#, c-format
-msgid "Do NOT poll %s file, reload only on SIGHUP."
-msgstr "Wyczenie obserwowania pliku %s; ponowne odczytywanie tylko po odebraniu sygnau SIGHUP."
+msgid "Specify where to store DHCP leases (defaults to %s)."
+msgstr "Ścieżka przechowywania pliku dzierżaw DHCP (domyślnie: %s)."
#: option.c:278
-msgid "Do NOT cache failed search results."
-msgstr "Wyczenie przechowywania w pamici podrcznej wynikw nieudanych wyszukiwa."
+msgid "Return MX records for local hosts."
+msgstr "Włączenie zwracania rekordu MX dla hostów lokalnych."
#: option.c:279
-#, c-format
-msgid "Use nameservers strictly in the order given in %s."
-msgstr "Odpytywanie serwerw nazw w kolejnoci ich wystpienia w %s."
+msgid "Specify an MX record."
+msgstr "Specyfikacja rekordu MX."
#: option.c:280
-msgid "Specify options to be sent to DHCP clients."
-msgstr "Specyfikacja opcji wysyanej do klientw DHCP."
+msgid "Specify BOOTP options to DHCP server."
+msgstr "Określenie opcji BOOTP serwera DHCP."
#: option.c:281
-msgid "DHCP option sent even if the client does not request it."
-msgstr "Opcja DHCP wysyana nawet jeeli klient o ni nie prosi."
+#, c-format
+msgid "Do NOT poll %s file, reload only on SIGHUP."
+msgstr "Wyłączenie obserwowania pliku %s; ponowne odczytywanie tylko po odebraniu sygnału SIGHUP."
#: option.c:282
-msgid "Specify port to listen for DNS requests on (defaults to 53)."
-msgstr "Wskazanie portu do nasuchiwania zapyta DNS (domylnie: 53)."
+msgid "Do NOT cache failed search results."
+msgstr "Wyłączenie przechowywania w pamięci podręcznej wyników nieudanych wyszukiwań."
#: option.c:283
#, c-format
-msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
-msgstr "Maksymalna obsugiwana wielko pakietu EDNS.0 (domylnie: %s)."
+msgid "Use nameservers strictly in the order given in %s."
+msgstr "Odpytywanie serwerów nazw w kolejności ich wystąpienia w %s."
#: option.c:284
-msgid "Log DNS queries."
-msgstr "Wczenie spisywania zapyta DNS do logu."
+msgid "Specify options to be sent to DHCP clients."
+msgstr "Specyfikacja opcji wysyłanej do klientów DHCP."
#: option.c:285
-msgid "Force the originating port for upstream DNS queries."
-msgstr "Wymuszenie uycia wskazanego portu UDP do odpytywania nadrzdnych serwerw DNS i odbierania od nich odpowiedzi."
+msgid "DHCP option sent even if the client does not request it."
+msgstr "Opcja DHCP wysyłana nawet jeżeli klient o nią nie prosi."
#: option.c:286
-msgid "Do NOT read resolv.conf."
-msgstr "Wyczenie czytania pliku resolv.conf."
+msgid "Specify port to listen for DNS requests on (defaults to 53)."
+msgstr "Wskazanie portu do nasłuchiwania zapytań DNS (domyślnie: 53)."
#: option.c:287
#, c-format
-msgid "Specify path to resolv.conf (defaults to %s)."
-msgstr "Wskazanie pooenia pliku resolv.conf (domylnie: %s)."
+msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+msgstr "Maksymalna obsługiwana wielkość pakietu EDNS.0 (domyślnie: %s)."
#: option.c:288
-msgid "Specify address(es) of upstream servers with optional domains."
-msgstr "Wskazywanie adresw serwerw nazw, opcjonalnie z przypisaniem do domeny."
+msgid "Log DNS queries."
+msgstr "Włączenie spisywania zapytań DNS do logu."
#: option.c:289
-msgid "Never forward queries to specified domains."
-msgstr "Wyczenie przekazywania zapyta do wskazanych domen."
+msgid "Force the originating port for upstream DNS queries."
+msgstr "Wymuszenie użycia wskazanego portu UDP do odpytywania nadrzędnych serwerów DNS i odbierania od nich odpowiedzi."
#: option.c:290
+msgid "Do NOT read resolv.conf."
+msgstr "Wyłączenie czytania pliku resolv.conf."
+
+#: option.c:291
+#, c-format
+msgid "Specify path to resolv.conf (defaults to %s)."
+msgstr "Wskazanie położenia pliku resolv.conf (domyślnie: %s)."
+
+#: option.c:292
+msgid "Specify address(es) of upstream servers with optional domains."
+msgstr "Wskazywanie adresów serwerów nazw, opcjonalnie z przypisaniem do domeny."
+
+#: option.c:293
+msgid "Never forward queries to specified domains."
+msgstr "Wyłączenie przekazywania zapytań do wskazanych domen."
+
+#: option.c:294
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Wskazanie domeny dla serwera DHCP."
-#: option.c:291
-msgid "Specify default target in an MX record."
-msgstr "Okrelenie domylnego celu w rekordzie MX."
-
-#: option.c:292
-msgid "Specify time-to-live in seconds for replies from /etc/hosts."
-msgstr "Okrelenie (w sekundach) czasu wanoci odpowiedzi udzielonych na podstawie /etc/hosts (domylnie 0)."
-
-#: option.c:293
-msgid "Specify time-to-live in seconds for negative caching."
-msgstr "Okrelenie (w sekundach) czasu wanoci negatywnych odpowiedzi."
-
-#: option.c:294
-msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
-msgstr "Ograniczenie maksymalnego czasu wanoci odpowiedzi (TTL) podawanego klientom [w sekundach]."
-
#: option.c:295
-#, c-format
-msgid "Change to this user after startup. (defaults to %s)."
-msgstr "Zmiana uytkownika procesu na wskazanego (po uruchomieniu, domylnie: %s)."
+msgid "Specify default target in an MX record."
+msgstr "Określenie domyślnego celu w rekordzie MX."
#: option.c:296
-msgid "Map DHCP vendor class to tag."
-msgstr "Przyporzdkowanie znacznika w zalenoci od typu klienta DHCP."
+msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+msgstr "Określenie (w sekundach) czasu ważności odpowiedzi udzielonych na podstawie /etc/hosts (domyślnie 0)."
#: option.c:297
+msgid "Specify time-to-live in seconds for negative caching."
+msgstr "Określenie (w sekundach) czasu ważności negatywnych odpowiedzi."
+
+#: option.c:298
+msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+msgstr "Ograniczenie maksymalnego czasu ważności odpowiedzi (TTL) podawanego klientom [w sekundach]."
+
+#: option.c:299
+#, c-format
+msgid "Change to this user after startup. (defaults to %s)."
+msgstr "Zmiana użytkownika procesu na wskazanego (po uruchomieniu, domyślnie: %s)."
+
+#: option.c:300
+msgid "Map DHCP vendor class to tag."
+msgstr "Przyporządkowanie znacznika w zależności od typu klienta DHCP."
+
+#: option.c:301
msgid "Display dnsmasq version and copyright information."
msgstr "Wydrukowanie informacji o programie i ochronie praw autorskich."
-#: option.c:298
-msgid "Translate IPv4 addresses from upstream servers."
-msgstr "Tumaczenie adresw IPv4 z serwerw nadrzdnych."
-
-#: option.c:299
-msgid "Specify a SRV record."
-msgstr "Okrelenie rekordu SRV."
-
-#: option.c:300
-msgid "Display this message. Use --help dhcp for known DHCP options."
-msgstr "Wywietla ten komunikat. Uyj '--help dhcp' chcc przejrze list opcji DHCP (dhcp-option=xxx,...)."
-
-#: option.c:301
-#, c-format
-msgid "Specify path of PID file (defaults to %s)."
-msgstr "Okrelenie cieki do pliku PID (domylnie: %s)."
-
#: option.c:302
-#, c-format
-msgid "Specify maximum number of DHCP leases (defaults to %s)."
-msgstr "Maksymalna liczba dzieraw DHCP (domylnie: %s)."
+msgid "Translate IPv4 addresses from upstream servers."
+msgstr "Tłumaczenie adresów IPv4 z serwerów nadrzędnych."
#: option.c:303
-msgid "Answer DNS queries based on the interface a query was sent to."
-msgstr "Uzalenienie odpowiedzi DNS od interfejsu, na ktrym odebrano zapytanie (wygodne dla serwerw kilku podsieci z rnymi adresami w /etc/hosts)."
+msgid "Specify a SRV record."
+msgstr "Określenie rekordu SRV."
#: option.c:304
+msgid "Display this message. Use --help dhcp for known DHCP options."
+msgstr "Wyświetla ten komunikat. Użyj '--help dhcp' chcąc przejrzeć listę opcji DHCP (dhcp-option=xxx,...)."
+
+#: option.c:305
+#, c-format
+msgid "Specify path of PID file (defaults to %s)."
+msgstr "Określenie ścieżki do pliku PID (domyślnie: %s)."
+
+#: option.c:306
+#, c-format
+msgid "Specify maximum number of DHCP leases (defaults to %s)."
+msgstr "Maksymalna liczba dzierżaw DHCP (domyślnie: %s)."
+
+#: option.c:307
+msgid "Answer DNS queries based on the interface a query was sent to."
+msgstr "Uzależnienie odpowiedzi DNS od interfejsu, na którym odebrano zapytanie (wygodne dla serwerów kilku podsieci z różnymi adresami w /etc/hosts)."
+
+#: option.c:308
msgid "Specify TXT DNS record."
msgstr "Specyfikacja rekordu DNS TXT."
-#: option.c:305
+#: option.c:309
msgid "Specify PTR DNS record."
msgstr "Specyfikacja rekordu DNS PTR."
-#: option.c:306
-msgid "Give DNS name to IPv4 address of interface."
-msgstr "Zwraca nazw domenow powizan z adresem interfejsu sieciowego."
-
-#: option.c:307
-msgid "Bind only to interfaces in use."
-msgstr "Nasuchiwanie tylko na wykorzystywanych interfejsach (umoliwia uruchomienie osobnych serwerw dla rnych kart)."
-
-#: option.c:308
-#, c-format
-msgid "Read DHCP static host information from %s."
-msgstr "Wczytanie przyporzdkowa adresw z %s."
-
-#: option.c:309
-msgid "Enable the DBus interface for setting upstream servers, etc."
-msgstr "Wczenie uywania interfejsu DBus do informowania o zmianach konfiguracji."
-
#: option.c:310
-msgid "Do not provide DHCP on this interface, only provide DNS."
-msgstr "Uruchomienie na wskazanym interfejsie tylko DNS-a, bez usug DHCP i TFTP."
+msgid "Give DNS name to IPv4 address of interface."
+msgstr "Zwraca nazwę domenową powiązaną z adresem interfejsu sieciowego."
#: option.c:311
-msgid "Enable dynamic address allocation for bootp."
-msgstr "Wczenie dynamicznego przydzielania adresw dla klientw BOOTP."
+msgid "Bind only to interfaces in use."
+msgstr "Nasłuchiwanie tylko na wykorzystywanych interfejsach (umożliwia uruchomienie osobnych serwerów dla różnych kart)."
#: option.c:312
-msgid "Map MAC address (with wildcards) to option set."
-msgstr "Przyporzdkowanie znacznika w zalenoci od adresu MAC (mona uywa uoglnie: *)."
+#, c-format
+msgid "Read DHCP static host information from %s."
+msgstr "Wczytanie przyporządkowań adresów z %s."
#: option.c:313
-msgid "Treat DHCP requests on aliases as arriving from interface."
-msgstr "Traktowanie da DHCP odebranych na interfejsach alias, ..., jako odebranych na iface."
+msgid "Enable the DBus interface for setting upstream servers, etc."
+msgstr "Włączenie używania interfejsu DBus do informowania o zmianach konfiguracji."
#: option.c:314
-msgid "Disable ICMP echo address checking in the DHCP server."
-msgstr "Pominicie sprawdzania za pomoc ICMP niezajtoci adresu przed jego wydzierawieniem."
+msgid "Do not provide DHCP on this interface, only provide DNS."
+msgstr "Uruchomienie na wskazanym interfejsie tylko DNS-a, bez usług DHCP i TFTP."
#: option.c:315
-msgid "Script to run on DHCP lease creation and destruction."
-msgstr "Wskazanie skryptu uruchamianego w przypadku wydzierawienia adresu lub wyganicia dzierawy."
+msgid "Enable dynamic address allocation for bootp."
+msgstr "Włączenie dynamicznego przydzielania adresów dla klientów BOOTP."
#: option.c:316
-msgid "Read configuration from all the files in this directory."
-msgstr "Wczytanie wszystkich plikw ze wskazanego katalogu jako konfiguracyjnych."
+msgid "Map MAC address (with wildcards) to option set."
+msgstr "Przyporządkowanie znacznika w zależności od adresu MAC (można używać uogólnień: *)."
#: option.c:317
-msgid "Log to this syslog facility or file. (defaults to DAEMON)"
-msgstr "Wskazanie kanau syslog-a do ktrego maj trafia komunikaty (domylnie: DAEMON)"
+msgid "Treat DHCP requests on aliases as arriving from interface."
+msgstr "Traktowanie żądań DHCP odebranych na interfejsach alias, ..., jako odebranych na iface."
#: option.c:318
-msgid "Do not use leasefile."
-msgstr "Nieuywanie bazy dzieraw."
+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."
#: option.c:319
-#, c-format
-msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
-msgstr "Maksymalna liczba jednoczenie obsugiwanych zapyta DNS (domylnie: %s)"
+msgid "Script to run on DHCP lease creation and destruction."
+msgstr "Wskazanie skryptu uruchamianego w przypadku wydzierżawienia adresu lub wygaśnięcia dzierżawy."
#: option.c:320
-#, c-format
-msgid "Clear DNS cache when reloading %s."
-msgstr "Czyszczenie pamici podrcznej serwera nazw w przypadku ponownego odczytu %s."
+msgid "Read configuration from all the files in this directory."
+msgstr "Wczytanie wszystkich plików ze wskazanego katalogu jako konfiguracyjnych."
#: option.c:321
-msgid "Ignore hostnames provided by DHCP clients."
-msgstr "Nie zwracanie uwagi na nazw podawan przez klienta w przypadku dopasowania wszystkich wymienionych znacznikw."
+msgid "Log to this syslog facility or file. (defaults to DAEMON)"
+msgstr "Wskazanie kanału syslog-a do którego mają trafiać komunikaty (domyślnie: DAEMON)"
#: option.c:322
-msgid "Do NOT reuse filename and server fields for extra DHCP options."
-msgstr "Wyczenie oszczdzania miejsca w pakiecie DHCP przez przesuwanie pl servername i filename do opcji DHCP. Wymusza prostszy tryb budowy pakietu rozwizujc problemy z nieprzystosowanymi klientami DHCP."
+msgid "Do not use leasefile."
+msgstr "Nieużywanie bazy dzierżaw."
#: option.c:323
-msgid "Enable integrated read-only TFTP server."
-msgstr "Wczenie wbudowanego serwera TFTP (tylko do wysyania)."
+#, c-format
+msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
+msgstr "Maksymalna liczba jednocześnie obsługiwanych zapytań DNS (domyślnie: %s)"
#: option.c:324
-msgid "Export files by TFTP only from the specified subtree."
-msgstr "Ograniczenie dziaania serwera TFTP do wskazanego katalogu i podkatalogw. Nazwy z .. s odrzucane, / odnosi si do wskazanego katalogu."
+#, c-format
+msgid "Clear DNS cache when reloading %s."
+msgstr "Czyszczenie pamięci podręcznej serwera nazw w przypadku ponownego odczytu %s."
#: option.c:325
-msgid "Add client IP address to tftp-root."
-msgstr "Doklejanie adresu IP klienta do gwnego katalogu TFTP. Jeeli wynikowy katalog nie istnieje, nadal wykorzystuje si tftp-root."
+msgid "Ignore hostnames provided by DHCP clients."
+msgstr "Nie zwracanie uwagi na nazwę podawaną przez klienta w przypadku dopasowania wszystkich wymienionych znaczników."
#: option.c:326
-msgid "Allow access only to files owned by the user running dnsmasq."
-msgstr "Ograniczenie dostpu do plikw przez TFTP do tych, ktrych wacicielem jest uytkownik uruchamiajcy dnsmasq-a."
+msgid "Do NOT reuse filename and server fields for extra DHCP options."
+msgstr "Wyłączenie oszczędzania miejsca w pakiecie DHCP przez przesuwanie pól servername i filename do opcji DHCP. Wymusza prostszy tryb budowy pakietu rozwiązując problemy z nieprzystosowanymi klientami DHCP."
#: option.c:327
-#, c-format
-msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
-msgstr "Maksymalna liczba jednoczenie obsugiwanych pocze TFTP (domylnie %s)."
+msgid "Enable integrated read-only TFTP server."
+msgstr "Włączenie wbudowanego serwera TFTP (tylko do wysyłania)."
#: option.c:328
-msgid "Disable the TFTP blocksize extension."
-msgstr "Wyczenie moliwoci negocjowania wielkoci bloku dla przesyw przez TFTP."
+msgid "Export files by TFTP only from the specified subtree."
+msgstr "Ograniczenie działania serwera TFTP do wskazanego katalogu i podkatalogów. Nazwy z .. są odrzucane, / odnosi się do wskazanego katalogu."
#: option.c:329
-msgid "Ephemeral port range for use by TFTP transfers."
-msgstr "Wskazanie zakresu portw do uytku TFTP."
+msgid "Add client IP address to tftp-root."
+msgstr "Doklejanie adresu IP klienta do głównego katalogu TFTP. Jeżeli wynikowy katalog nie istnieje, nadal wykorzystuje się tftp-root."
#: option.c:330
-msgid "Extra logging for DHCP."
-msgstr "Wczenie spisywania w logu operacji DHCP."
+msgid "Allow access only to files owned by the user running dnsmasq."
+msgstr "Ograniczenie dostępu do plików przez TFTP do tych, których właścicielem jest użytkownik uruchamiający dnsmasq-a."
#: option.c:331
-msgid "Enable async. logging; optionally set queue length."
-msgstr "Wczenie asynchronicznego zapisywania do logu z ewentualnym wskazaniem dugoci kolejki."
+#, c-format
+msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
+msgstr "Maksymalna liczba jednocześnie obsługiwanych połączeń TFTP (domyślnie %s)."
#: option.c:332
-msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
-msgstr "Odfiltrowywanie adresw wskazujcych na komputery w sieciach wewntrznych spord odpowiedzi od zewntrznych serwerw DNS."
+msgid "Disable the TFTP blocksize extension."
+msgstr "Wyłączenie możliwości negocjowania wielkości bloku dla przesyłów przez TFTP."
#: option.c:333
-msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
-msgstr "Zezwolenie na przekazywanie odpowiedzi w klasie 127.0.0.0/8. Dla serwerw RBL."
+msgid "Ephemeral port range for use by TFTP transfers."
+msgstr "Wskazanie zakresu portów do użytku TFTP."
#: option.c:334
+msgid "Extra logging for DHCP."
+msgstr "Włączenie spisywania w logu operacji DHCP."
+
+#: option.c:335
+msgid "Enable async. logging; optionally set queue length."
+msgstr "Włączenie asynchronicznego zapisywania do logu z ewentualnym wskazaniem długości kolejki."
+
+#: option.c:336
+msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
+msgstr "Odfiltrowywanie adresów wskazujących na komputery w sieciach wewnętrznych spośród odpowiedzi od zewnętrznych serwerów DNS."
+
+#: option.c:337
+msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
+msgstr "Zezwolenie na przekazywanie odpowiedzi w klasie 127.0.0.0/8. Dla serwerów RBL."
+
+#: option.c:338
msgid "Inhibit DNS-rebind protection on this domain."
msgstr "Dezaktywacja zabezpieczenia przed atakami DNS-rebind dla wskazanych domen."
-#: option.c:335
-msgid "Always perform DNS queries to all servers."
-msgstr "Jednoczesne odpytywanie wszystkich serwerw nadrzdnych; klientowi przekazywana jest pierwsza odpowied."
-
-#: option.c:336
-msgid "Set tag if client includes matching option in request."
-msgstr "Ustawienie znacznika jeeli w daniu DHCP pojawi si wskazana opcja, ewentualnie o konkretnej wartoci."
-
-#: option.c:337
-msgid "Use alternative ports for DHCP."
-msgstr "Uycie alternatywnych portw dla usugi DHCP."
-
-#: option.c:338
-msgid "Run lease-change script as this user."
-msgstr "Uruchamianie skryptu dhcp-script jako wskazany uytkownik."
-
#: option.c:339
+msgid "Always perform DNS queries to all servers."
+msgstr "Jednoczesne odpytywanie wszystkich serwerów nadrzędnych; klientowi przekazywana jest pierwsza odpowiedź."
+
+#: option.c:340
+msgid "Set tag if client includes matching option in request."
+msgstr "Ustawienie znacznika jeżeli w żądaniu DHCP pojawi się wskazana opcja, ewentualnie o konkretnej wartości."
+
+#: option.c:341
+msgid "Use alternative ports for DHCP."
+msgstr "Użycie alternatywnych portów dla usługi DHCP."
+
+#: option.c:342
+msgid "Run lease-change script as this user."
+msgstr "Uruchamianie skryptu dhcp-script jako wskazany użytkownik."
+
+#: option.c:343
msgid "Specify NAPTR DNS record."
msgstr "Specyfikacja rekordu DNS NAPTR."
-#: option.c:340
-msgid "Specify lowest port available for DNS query transmission."
-msgstr "Ustawienie dolnej granicy numerw portw do przesyania zapyta DNS."
-
-#: option.c:341
-msgid "Use only fully qualified domain names for DHCP clients."
-msgstr "Przechowywanie w serwerze DNS dnsmasq-a tylko w peni kwalifikowanych nazw zgaszanych przez klientw DHCP."
-
-#: option.c:342
-msgid "Generate hostnames based on MAC address for nameless clients."
-msgstr "Generowanie nazw na podstawie MAC-adresw dla klientw bez nazwy."
-
-#: option.c:343
-msgid "Use these DHCP relays as full proxies."
-msgstr "Traktowanie wskazanych serwerw poredniczcych DHCP jako dziaajcych w trybie \"penomocnika\" (full-proxy)."
-
#: option.c:344
+msgid "Specify lowest port available for DNS query transmission."
+msgstr "Ustawienie dolnej granicy numerów portów do przesyłania zapytań DNS."
+
+#: option.c:345
+msgid "Use only fully qualified domain names for DHCP clients."
+msgstr "Przechowywanie w serwerze DNS dnsmasq-a tylko w pełni kwalifikowanych nazw zgłaszanych przez klientów DHCP."
+
+#: option.c:346
+msgid "Generate hostnames based on MAC address for nameless clients."
+msgstr "Generowanie nazw na podstawie MAC-adresów dla klientów bez nazwy."
+
+#: option.c:347
+msgid "Use these DHCP relays as full proxies."
+msgstr "Traktowanie wskazanych serwerów pośredniczących DHCP jako działających w trybie \"pełnomocnika\" (full-proxy)."
+
+#: option.c:348
msgid "Specify alias name for LOCAL DNS name."
msgstr "Wskazanie synonimu nazwy komputera lokalnego - znanego z /etc/hosts albo z DHCP."
-#: option.c:345
-msgid "Prompt to send to PXE clients."
-msgstr "Zgoszenie wysyane klientom PXE."
-
-#: option.c:346
-msgid "Boot service for PXE menu."
-msgstr "Skadnik menu PXE (--> man)."
-
-#: option.c:347
-msgid "Check configuration syntax."
-msgstr "Sprawdzenie skadni."
-
-#: option.c:348
-msgid "Add requestor's MAC address to forwarded DNS queries"
-msgstr "Zaczanie MAC-adresu komputera pytajcego w przekazywanych dalej zapytaniach DNS."
-
#: option.c:349
-msgid "Proxy DNSSEC validation results from upstream nameservers"
-msgstr "Przekazywanie wynikw weryfikacji DNSSEC z serwerw nadrzdnych."
+msgid "Prompt to send to PXE clients."
+msgstr "Zgłoszenie wysyłane klientom PXE."
-#: option.c:638
+#: option.c:350
+msgid "Boot service for PXE menu."
+msgstr "Składnik menu PXE (--> man)."
+
+#: option.c:351
+msgid "Check configuration syntax."
+msgstr "Sprawdzenie składni."
+
+#: option.c:352
+msgid "Add requestor's MAC address to forwarded DNS queries."
+msgstr "Przekazywanie MAC-adresu komputera pytającego w ruchu wychodzącym DNS."
+
+#: option.c:353
+msgid "Proxy DNSSEC validation results from upstream nameservers."
+msgstr "Przekazywanie wyników weryfikacji DNSSEC z serwerów nadrzędnych."
+
+#: option.c:354
+msgid "Attempt to allocate sequential IP addresses to DHCP clients."
+msgstr "Zmiana sposobu przydzielania adresów IP na sekwencyjny."
+
+#: option.c:355
+msgid "Copy connection-track mark from queries to upstream connections."
+msgstr "Zachowanie znacznika połączenia z odebranego zapytania DNS w ruchu zewnętrznym."
+
+#: option.c:644
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-"Uycie: dnsmasq [opcje]\n"
+"Użycie: dnsmasq [opcje]\n"
"\n"
-#: option.c:640
+#: option.c:646
#, c-format
msgid "Use short options only on the command line.\n"
-msgstr "W tym systemie w linii polece mona uywa wycznie jednoliterowych opcji.\n"
+msgstr "W tym systemie w linii poleceń można używać wyłącznie jednoliterowych opcji.\n"
-#: option.c:642
+#: option.c:648
#, c-format
msgid "Valid options are:\n"
-msgstr "Dostpne opcje:\n"
+msgstr "Dostępne opcje:\n"
-#: option.c:683
+#: option.c:689
#, c-format
msgid "Known DHCP options:\n"
msgstr "Znane opcje DHCP:\n"
-#: option.c:798
+#: option.c:804
msgid "bad dhcp-option"
-msgstr "bd w dhcp-option"
+msgstr "błąd w dhcp-option"
-#: option.c:860
+#: option.c:866
msgid "bad IP address"
-msgstr "zy adres IP"
+msgstr "zły adres IP"
-#: option.c:968
+#: option.c:974
msgid "bad domain in dhcp-option"
-msgstr "nieprawidowa nazwa domeny w dhcp-option"
+msgstr "nieprawidłowa nazwa domeny w dhcp-option"
-#: option.c:1034
+#: option.c:1040
msgid "dhcp-option too long"
-msgstr "zbyt duga dhcp-option (>255 znakw)"
+msgstr "zbyt długa dhcp-option (>255 znaków)"
-#: option.c:1043
+#: option.c:1049
msgid "illegal dhcp-match"
msgstr "niedopuszczalne dhcp-match"
-#: option.c:1087
+#: option.c:1093
msgid "illegal repeated flag"
-msgstr "wielokrotne uycie opcji niedozwolone (pojawia si wczeniej w linii polece)"
+msgstr "wielokrotne użycie opcji niedozwolone (pojawiła się wcześniej w linii poleceń)"
-#: option.c:1095
+#: option.c:1101
msgid "illegal repeated keyword"
-msgstr "wielokrotne uycie opcji niedozwolone (pojawia si wszeniej w pliku konfiguracyjnym)"
+msgstr "wielokrotne użycie opcji niedozwolone (pojawiła się wsześniej w pliku konfiguracyjnym)"
-#: option.c:1147 option.c:3030
+#: option.c:1153
+#: option.c:3062
#, c-format
msgid "cannot access directory %s: %s"
-msgstr "brak dostpu do katalogu %s: %s"
+msgstr "brak dostępu do katalogu %s: %s"
-#: option.c:1178 tftp.c:460
+#: option.c:1184
+#: tftp.c:465
#, c-format
msgid "cannot access %s: %s"
-msgstr "brak dostpu do %s: %s"
+msgstr "brak dostępu do %s: %s"
-#: option.c:1207
+#: option.c:1213
msgid "setting log facility is not possible under Android"
-msgstr ""
+msgstr "zmiana log-facility w systemie Android nie jest możliwa"
-#: option.c:1216
+#: option.c:1222
msgid "bad log facility"
-msgstr ""
+msgstr "nierozpoznany znacznik logów"
-#: option.c:1265
+#: option.c:1271
msgid "bad MX preference"
-msgstr "nieprawidowa warto preferencji MX"
+msgstr "nieprawidłowa wartość preferencji MX"
-#: option.c:1270
+#: option.c:1276
msgid "bad MX name"
-msgstr "nieprawidowa nazwa MX"
+msgstr "nieprawidłowa nazwa MX"
-#: option.c:1284
+#: option.c:1290
msgid "bad MX target"
-msgstr "nieprawidowa warto celu MX"
+msgstr "nieprawidłowa wartość celu MX"
-#: option.c:1294
+#: option.c:1300
msgid "cannot run scripts under uClinux"
-msgstr "w uClinuksie nie ma moliwoci uruchamiania skryptw"
+msgstr "w uClinuksie nie ma możliwości uruchamiania skryptów"
-#: option.c:1296
+#: option.c:1302
msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
-msgstr "eby mie moliwo uywania skryptw wywoywanych przy zmianie dzierawy, przekompiluj dnsmasq-a z wczon 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:1597 option.c:1601
+#: option.c:1607
+#: option.c:1611
msgid "bad port"
-msgstr "nieprawidowy numer portu"
+msgstr "nieprawidłowy numer portu"
-#: option.c:1620 option.c:1645
+#: option.c:1634
+#: option.c:1665
msgid "interface binding not supported"
-msgstr "nie ma moliwoci dowizywania do interfejsu"
+msgstr "nie ma możliwości dowiązywania do interfejsu"
-#: option.c:1791
+#: option.c:1645
+#: option.c:2614
+msgid "bad interface name"
+msgstr "nieprawidłowa nazwa interfejsu"
+
+#: option.c:1810
msgid "bad port range"
-msgstr "nieprawidowy zakres numerw portw"
+msgstr "nieprawidłowy zakres numerów portów"
-#: option.c:1808
+#: option.c:1827
msgid "bad bridge-interface"
-msgstr "nieprawidowa nazwa urzdzenia w bridge-interface"
+msgstr "nieprawidłowa nazwa urządzenia w bridge-interface"
-#: option.c:1850
+#: option.c:1870
msgid "bad dhcp-range"
-msgstr "nieprawidowy zakres dhcp-range"
+msgstr "nieprawidłowy zakres dhcp-range"
-#: option.c:1878
+#: option.c:1898
msgid "only one tag allowed"
-msgstr "mona wskaza tylko jeden znacznik sieci"
+msgstr "można wskazać tylko jeden znacznik sieci"
-#: option.c:1925
+#: option.c:1945
msgid "inconsistent DHCP range"
-msgstr "niespjny zakres adresw DHCP"
+msgstr "niespójny zakres adresów DHCP"
-#: option.c:2019 option.c:2045
+#: option.c:2039
+#: option.c:2067
msgid "bad hex constant"
msgstr "zapis niezgodny z formatem szesnastkowym"
-#: option.c:2107
+#: option.c:2061
+msgid "cannot match tags in --dhcp-host"
+msgstr "--dhcp-host nie dopuszcza dopasowywania na podstawie znaczników"
+
+#: option.c:2129
msgid "bad DHCP host name"
msgstr "niedopuszczalna nazwa komputera w dhcp-host"
-#: option.c:2188
+#: option.c:2210
msgid "bad tag-if"
-msgstr "nieprawidowa skadnia 'tag-if'"
+msgstr "nieprawidłowa składnia 'tag-if'"
-#: option.c:2467 option.c:2752
+#: option.c:2499
+#: option.c:2784
msgid "invalid port number"
-msgstr "nieprawidowy numer portu"
+msgstr "nieprawidłowy numer portu"
-#: option.c:2529
+#: option.c:2561
msgid "bad dhcp-proxy address"
-msgstr "zy adres dhcp-proxy"
+msgstr "zły adres dhcp-proxy"
-#: option.c:2569
+#: option.c:2601
msgid "invalid alias range"
-msgstr "nieprawidowy zakres adresw w --alias"
+msgstr "nieprawidłowy zakres adresów w --alias"
-#: option.c:2582
-msgid "bad interface name"
-msgstr "nieprawidowa nazwa interfejsu"
-
-#: option.c:2607
+#: option.c:2639
msgid "bad CNAME"
-msgstr "za CNAME"
+msgstr "zła CNAME"
-#: option.c:2612
+#: option.c:2644
msgid "duplicate CNAME"
-msgstr "powtrzona CNAME"
+msgstr "powtórzona CNAME"
-#: option.c:2632
+#: option.c:2664
msgid "bad PTR record"
-msgstr "nieprawidowy zapis rekordu PTR"
-
-#: option.c:2663
-msgid "bad NAPTR record"
-msgstr "nieprawidowy zapis rekordu NAPTR"
+msgstr "nieprawidłowy zapis rekordu PTR"
#: option.c:2695
+msgid "bad NAPTR record"
+msgstr "nieprawidłowy zapis rekordu NAPTR"
+
+#: option.c:2727
msgid "bad TXT record"
-msgstr "nieprawidowy zapis rekordu TXT"
+msgstr "nieprawidłowy zapis rekordu TXT"
-#: option.c:2738
+#: option.c:2770
msgid "bad SRV record"
-msgstr "nieprawidowy zapis rekordu SRV"
+msgstr "nieprawidłowy zapis rekordu SRV"
-#: option.c:2745
+#: option.c:2777
msgid "bad SRV target"
-msgstr "nieprawidowa warto celu SRV"
+msgstr "nieprawidłowa wartość celu SRV"
-#: option.c:2759
+#: option.c:2791
msgid "invalid priority"
-msgstr "nieprawidowy priorytet"
+msgstr "nieprawidłowy priorytet"
-#: option.c:2766
+#: option.c:2798
msgid "invalid weight"
-msgstr "nieprawidowa waga"
+msgstr "nieprawidłowa waga"
-#: option.c:2785
+#: option.c:2817
msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
-msgstr "nieobsugiwana opcja (sprawd, czy obsuga DHCP/TFTP/DBus zostaa wkompilowana)"
+msgstr "nieobsługiwana opcja (sprawdź, czy obsługa DHCP/TFTP/DBus została wkompilowana)"
-#: option.c:2849
+#: option.c:2881
msgid "missing \""
msgstr "brakuje \""
-#: option.c:2908
+#: option.c:2940
msgid "bad option"
-msgstr "nieprawidowa opcja"
+msgstr "nieprawidłowa opcja"
-#: option.c:2910
+#: option.c:2942
msgid "extraneous parameter"
-msgstr "nadwykowy parametr"
+msgstr "nadwyżkowy parametr"
-#: option.c:2912
+#: option.c:2944
msgid "missing parameter"
msgstr "brak parametru"
-#: option.c:2916
+#: option.c:2948
msgid "error"
-msgstr "bd"
+msgstr "błąd"
-#: option.c:2921
+#: option.c:2953
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s w linii %d pliku %%s"
-#: option.c:2985 tftp.c:624
+#: option.c:3017
+#: tftp.c:629
#, c-format
msgid "cannot read %s: %s"
-msgstr "bd odczytu z pliku %s: %s"
+msgstr "błąd odczytu z pliku %s: %s"
-#: option.c:3151 option.c:3187
+#: option.c:3183
+#: option.c:3219
#, c-format
msgid "read %s"
-msgstr "przeczytaem %s"
+msgstr "przeczytałem %s"
-#: option.c:3239
+#: option.c:3271
msgid "junk found in command line"
-msgstr "jakie mieci w linii polece"
+msgstr "jakieś śmieci w linii poleceń"
-#: option.c:3269
+#: option.c:3301
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "Dnsmasq, wersja %s %s\n"
-#: option.c:3270
+#: option.c:3302
#, c-format
msgid ""
"Compile time options %s\n"
@@ -782,72 +812,73 @@ msgstr ""
"Wkompilowane opcje %s\n"
"\n"
-#: option.c:3271
+#: option.c:3303
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
-msgstr "Autor nie daje ADNYCH GWARANCJI egzekwowalnych prawnie.\n"
+msgstr "Autor nie daje ŻADNYCH GWARANCJI egzekwowalnych prawnie.\n"
-#: option.c:3272
+#: option.c:3304
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
-msgstr "Dnsmasq jest wolnym oprogramowaniem, moesz go rozprowadza\n"
+msgstr "Dnsmasq jest wolnym oprogramowaniem, możesz go rozprowadzać\n"
-#: option.c:3273
+#: option.c:3305
#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
-msgstr "na warunkach okrelonych w GNU General Public Licence, w wersji 2 lub 3.\n"
+msgstr "na warunkach określonych w GNU General Public Licence, w wersji 2 lub 3.\n"
-#: option.c:3284
+#: option.c:3316
msgid "try --help"
-msgstr "sprbuj: --help"
+msgstr "spróbuj: --help"
-#: option.c:3286
+#: option.c:3318
msgid "try -w"
-msgstr "sprbuj: -w"
+msgstr "spróbuj: -w"
-#: option.c:3289
+#: option.c:3321
#, c-format
msgid "bad command line options: %s"
-msgstr "nieprawidowa opcja w linii polece %s"
+msgstr "nieprawidłowa opcja w linii poleceń %s"
-#: option.c:3330
+#: option.c:3362
#, c-format
msgid "cannot get host-name: %s"
-msgstr "nie mona pobra nazwy hosta: %s"
+msgstr "nie można pobrać nazwy hosta: %s"
-#: option.c:3358
+#: option.c:3390
msgid "only one resolv.conf file allowed in no-poll mode."
-msgstr "w trybie no-poll mona wskaza najwyej jeden plik resolv.conf."
+msgstr "w trybie no-poll można wskazać najwyżej jeden plik resolv.conf."
-#: option.c:3368
+#: option.c:3400
msgid "must have exactly one resolv.conf to read domain from."
-msgstr "musisz mie dokadnie jeden plik resolv.conf do odczytu domen."
+msgstr "musisz mieć dokładnie jeden plik resolv.conf do odczytu domen."
-#: option.c:3371 network.c:848 dhcp.c:814
+#: option.c:3403
+#: network.c:848
+#: dhcp.c:823
#, c-format
msgid "failed to read %s: %s"
-msgstr "nie udao si odczyta %s: %s"
+msgstr "nie udało się odczytać %s: %s"
-#: option.c:3388
+#: option.c:3420
#, c-format
msgid "no search directive found in %s"
msgstr "brak wytycznych wyszukiwania w %s"
-#: option.c:3409
-#, fuzzy
+#: option.c:3441
msgid "there must be a default domain when --dhcp-fqdn is set"
-msgstr "w przypadku uywania --dhcp-fqdn trzeba wskaza domyln domen"
+msgstr "w przypadku używania --dhcp-fqdn trzeba wskazać domyślną domenę"
-#: option.c:3413
+#: option.c:3445
msgid "syntax check OK"
-msgstr "skadnia sprawdzona, jest prawidowa"
+msgstr "składnia sprawdzona, jest prawidłowa"
-#: forward.c:461
+#: forward.c:471
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr "serwer nazw %s odmawia wykonania zapytania rekurencyjnego"
-#: forward.c:489
+#: forward.c:499
#, c-format
msgid "possible DNS-rebind attack detected: %s"
msgstr "prawdopodobnie wykryto atak DNS-rebind: %s"
@@ -860,12 +891,12 @@ msgstr "nieznany interfejs %s w bridge-u"
#: network.c:380
#, c-format
msgid "failed to create listening socket for %s: %s"
-msgstr "nie udao si otworzy gniazda %s: %s"
+msgstr "nie udało się otworzyć gniazda %s: %s"
#: network.c:746
#, c-format
msgid "failed to bind server socket for %s: %s"
-msgstr "bd przy przyznawaniu nazwy gniazdu serwera %s: %s"
+msgstr "błąd przy przyznawaniu nazwy gniazdu serwera %s: %s"
#: network.c:783
#, c-format
@@ -875,7 +906,7 @@ msgstr "ignorowanie serwera nazw %s - interfejs lokalny"
#: network.c:794
#, c-format
msgid "ignoring nameserver %s - cannot make/bind socket: %s"
-msgstr "ignorowanie serwera nazw %s - nie mona utworzy/dowiza gniazda: %s"
+msgstr "ignorowanie serwera nazw %s - nie można utworzyć/dowiązać gniazda: %s"
#: network.c:811
msgid "unqualified"
@@ -887,7 +918,7 @@ msgstr "nazwy"
#: network.c:813
msgid "default"
-msgstr "domylne"
+msgstr "domyślne"
#: network.c:815
msgid "domain"
@@ -896,595 +927,620 @@ msgstr "domeny"
#: network.c:818
#, c-format
msgid "using local addresses only for %s %s"
-msgstr "uywam adresw lokalnych tylko dla %s %s"
+msgstr "używam adresów lokalnych tylko dla %s %s"
#: network.c:820
#, c-format
msgid "using standard nameservers for %s %s"
-msgstr "uywam standardowych serwerw nazw dla %s %s"
+msgstr "używam standardowych serwerów nazw dla %s %s"
#: network.c:822
#, c-format
msgid "using nameserver %s#%d for %s %s"
-msgstr "uywam serwera nazw %s#%d dla %s %s"
+msgstr "używam serwera nazw %s#%d dla %s %s"
#: network.c:825
#, c-format
msgid "using nameserver %s#%d(via %s)"
-msgstr "uywam serwera nazw %s#%d (przez %s)"
+msgstr "używam serwera nazw %s#%d (przez %s)"
#: network.c:827
#, c-format
msgid "using nameserver %s#%d"
-msgstr "uywam serwera nazw %s#%d"
+msgstr "używam serwera nazw %s#%d"
-#: dnsmasq.c:148
+#: dnsmasq.c:152
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
-msgstr "Serwer TFTP nie zosta wkompilowany -- ustaw HAVE_TFTP w src/config.h"
+msgstr "Serwer TFTP nie został wkompilowany -- ustaw HAVE_TFTP w src/config.h"
-#: dnsmasq.c:153
+#: dnsmasq.c:157
+msgid "Cannot use --conntrack AND --query-port"
+msgstr "--conntrack i --query-port wykluczają się wzajemnie"
+
+#: dnsmasq.c:160
+msgid "Conntrack support not available: set HAVE_CONNTRACK in src/config.h"
+msgstr "Wsparcie dla przekazywania znaczników połączeń (conntrack) nie zostało wkompilowane - ustaw HAVE_CONNTRACK w src/config.h"
+
+#: dnsmasq.c:165
msgid "asychronous logging is not available under Solaris"
-msgstr "zapis do logw w trybie asynchronicznym nie jest dostpny w Solarisie"
+msgstr "zapis do logów w trybie asynchronicznym nie jest dostępny w Solarisie"
-#: dnsmasq.c:158
-#, fuzzy
+#: dnsmasq.c:170
msgid "asychronous logging is not available under Android"
-msgstr "zapis do logw w trybie asynchronicznym nie jest dostpny w Solarisie"
+msgstr "zapis do logów w trybie asynchronicznym nie jest dostępny w Androidzie"
-#: dnsmasq.c:177
+#: dnsmasq.c:189
#, c-format
msgid "failed to find list of interfaces: %s"
-msgstr "bd podczas tworzenia listy interfejsw sieciowych: %s"
+msgstr "błąd podczas tworzenia listy interfejsów sieciowych: %s"
-#: dnsmasq.c:185
+#: dnsmasq.c:197
#, c-format
msgid "unknown interface %s"
msgstr "nieznany interfejs %s"
-#: dnsmasq.c:191
+#: dnsmasq.c:203
#, c-format
msgid "no interface with address %s"
msgstr "brak interfejsu z adresem %s"
-#: dnsmasq.c:207 dnsmasq.c:678
+#: dnsmasq.c:219
+#: dnsmasq.c:690
#, c-format
msgid "DBus error: %s"
-msgstr "bd DBus: %s"
+msgstr "błąd DBus: %s"
-#: dnsmasq.c:210
+#: dnsmasq.c:222
msgid "DBus not available: set HAVE_DBUS in src/config.h"
-msgstr "Obsuga DBus nie zostaa wkompilowana -- ustaw HAVE_DBUS w src/config.h"
+msgstr "Obsługa DBus nie została wkompilowana -- ustaw HAVE_DBUS w src/config.h"
-#: dnsmasq.c:236
+#: dnsmasq.c:248
#, c-format
msgid "unknown user or group: %s"
-msgstr "nieznany uytkownik lub grupa: %s"
+msgstr "nieznany użytkownik lub grupa: %s"
-#: dnsmasq.c:291
+#: dnsmasq.c:303
#, c-format
msgid "cannot chdir to filesystem root: %s"
-msgstr "nie potrafi wej do gwnego katalogu: %s"
+msgstr "nie potrafię wejść do głównego katalogu: %s"
-#: dnsmasq.c:455
+#: dnsmasq.c:467
#, c-format
msgid "started, version %s DNS disabled"
-msgstr "uruchomiony, wersja %s, DNS wyczony"
+msgstr "uruchomiony, wersja %s, DNS wyłączony"
-#: dnsmasq.c:457
+#: dnsmasq.c:469
#, c-format
msgid "started, version %s cachesize %d"
-msgstr "uruchomiony, wersja %s, %d miejsc w pamici podrcznej"
+msgstr "uruchomiony, wersja %s, %d miejsc w pamięci podręcznej"
-#: dnsmasq.c:459
+#: dnsmasq.c:471
#, c-format
msgid "started, version %s cache disabled"
-msgstr "uruchomiony, wersja %s, pami podrczna wyczona"
+msgstr "uruchomiony, wersja %s, pamięć podręczna wyłączona"
-#: dnsmasq.c:461
+#: dnsmasq.c:473
#, c-format
msgid "compile time options: %s"
msgstr "opcje kompilacji: %s"
-#: dnsmasq.c:467
+#: dnsmasq.c:479
msgid "DBus support enabled: connected to system bus"
-msgstr "obsuga DBus wczona, podczono do serwera DBus"
+msgstr "obsługa DBus włączona, podłączono do serwera DBus"
-#: dnsmasq.c:469
+#: dnsmasq.c:481
msgid "DBus support enabled: bus connection pending"
-msgstr "obsuga DBus wczona, trwa podczanie do serwera DBus"
+msgstr "obsługa DBus włączona, trwa podłączanie do serwera DBus"
-#: dnsmasq.c:474
+#: dnsmasq.c:486
#, c-format
msgid "warning: failed to change owner of %s: %s"
-msgstr "UWAGA! Nie udao si zmieni uytkownika pliku %s: %s"
+msgstr "UWAGA! Nie udało się zmienić użytkownika pliku %s: %s"
-#: dnsmasq.c:478
+#: dnsmasq.c:490
msgid "setting --bind-interfaces option because of OS limitations"
-msgstr "ustawiam --bind-interfaces z powodu ogranicze systemu operacyjnego"
-
-#: dnsmasq.c:483
-#, c-format
-msgid "warning: interface %s does not currently exist"
-msgstr "uwaga: interfejs %s nie jest wczony"
-
-#: dnsmasq.c:488
-msgid "warning: ignoring resolv-file flag because no-resolv is set"
-msgstr "uwaga: ignoruj opcj resolv-file, poniewa wybrano tryb no-resolv"
-
-#: dnsmasq.c:491
-msgid "warning: no upstream servers configured"
-msgstr "uwaga: nie wskazano nadrzdnych serwerw DNS"
+msgstr "ustawiam --bind-interfaces z powodu ograniczeń systemu operacyjnego"
#: dnsmasq.c:495
#, c-format
-msgid "asynchronous logging enabled, queue limit is %d messages"
-msgstr "wczono asynchroniczny tryb zapisu do logw z kolejk na %d komunikatw"
+msgid "warning: interface %s does not currently exist"
+msgstr "uwaga: interfejs %s nie jest włączony"
-#: dnsmasq.c:508
+#: dnsmasq.c:500
+msgid "warning: ignoring resolv-file flag because no-resolv is set"
+msgstr "uwaga: ignoruję opcję resolv-file, ponieważ wybrano tryb no-resolv"
+
+#: dnsmasq.c:503
+msgid "warning: no upstream servers configured"
+msgstr "uwaga: nie wskazano nadrzędnych serwerów DNS"
+
+#: dnsmasq.c:507
+#, c-format
+msgid "asynchronous logging enabled, queue limit is %d messages"
+msgstr "włączono asynchroniczny tryb zapisu do logów z kolejką na %d komunikatów"
+
+#: dnsmasq.c:520
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
-msgstr "DHCP: tylko statyczne dzierawy na %.0s%s, czas dzierawy %s"
+msgstr "DHCP: tylko statyczne dzierżawy na %.0s%s, czas dzierżawy %s"
-#: dnsmasq.c:510
+#: dnsmasq.c:522
#, c-format
msgid "DHCP, proxy on subnet %.0s%s%.0s"
-msgstr "DHCP: porednik na podsieci %.0s%s%.0s"
+msgstr "DHCP: pośrednik na podsieci %.0s%s%.0s"
-#: dnsmasq.c:511
+#: dnsmasq.c:523
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
-msgstr "DHCP: zakres IP %s -- %s, czas dzierawy %s"
+msgstr "DHCP: zakres IP %s -- %s, czas dzierżawy %s"
-#: dnsmasq.c:526
+#: dnsmasq.c:538
msgid "root is "
-msgstr "z gwnym katalogiem w "
+msgstr "z głównym katalogiem w "
-#: dnsmasq.c:526
+#: dnsmasq.c:538
msgid "enabled"
-msgstr "wczony"
+msgstr "włączony"
-#: dnsmasq.c:528
+#: dnsmasq.c:540
msgid "secure mode"
msgstr "w trybie bezpiecznym"
-#: dnsmasq.c:554
+#: dnsmasq.c:566
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
-msgstr "ograniczam ilo jednoczesnych przesa TFTP do %d"
+msgstr "ograniczam ilość jednoczesnych przesłań TFTP do %d"
-#: dnsmasq.c:680
+#: dnsmasq.c:692
msgid "connected to system DBus"
-msgstr "podczono do DBus-a"
+msgstr "podłączono do DBus-a"
-#: dnsmasq.c:775
+#: dnsmasq.c:787
#, c-format
msgid "cannot fork into background: %s"
-msgstr "nie potrafi przeczy si do pracy w tle: %s"
-
-#: dnsmasq.c:778
-#, c-format
-msgid "failed to create helper: %s"
-msgstr "nie udao si utworzy procesu pomocniczego: %s"
-
-#: dnsmasq.c:781
-#, c-format
-msgid "setting capabilities failed: %s"
-msgstr "nie powiodo si ustawianie ogranicze (capabilities): %s"
-
-#: dnsmasq.c:785
-#, c-format
-msgid "failed to change user-id to %s: %s"
-msgstr "nie udao si zmieni uytkownika procesu na %s: %s"
+msgstr "nie potrafię przełączyć się do pracy w tle: %s"
#: dnsmasq.c:790
#, c-format
-msgid "failed to change group-id to %s: %s"
-msgstr "nie udao si zmieni grupy procesu na %s: %s"
+msgid "failed to create helper: %s"
+msgstr "nie udało się utworzyć procesu pomocniczego: %s"
#: dnsmasq.c:793
#, c-format
-msgid "failed to open pidfile %s: %s"
-msgstr "nie udao si otworzy pliku z PID-em %s: %s"
+msgid "setting capabilities failed: %s"
+msgstr "nie powiodło się ustawianie ograniczeń (capabilities): %s"
-#: dnsmasq.c:796
+#: dnsmasq.c:797
+#, c-format
+msgid "failed to change user-id to %s: %s"
+msgstr "nie udało się zmienić użytkownika procesu na %s: %s"
+
+#: dnsmasq.c:802
+#, c-format
+msgid "failed to change group-id to %s: %s"
+msgstr "nie udało się zmienić grupy procesu na %s: %s"
+
+#: dnsmasq.c:805
+#, c-format
+msgid "failed to open pidfile %s: %s"
+msgstr "nie udało się otworzyć pliku z PID-em %s: %s"
+
+#: dnsmasq.c:808
#, c-format
msgid "cannot open %s: %s"
-msgstr "nie mona otworzy %s: %s"
+msgstr "nie można otworzyć %s: %s"
-#: dnsmasq.c:851
+#: dnsmasq.c:863
#, c-format
msgid "child process killed by signal %d"
-msgstr "proces potomny zabity sygnaem %d"
+msgstr "proces potomny zabity sygnałem %d"
-#: dnsmasq.c:855
+#: dnsmasq.c:867
#, c-format
msgid "child process exited with status %d"
-msgstr "proces potomny zakoczy si z kodem powrotu %d"
+msgstr "proces potomny zakończył się z kodem powrotu %d"
-#: dnsmasq.c:859
+#: dnsmasq.c:871
#, c-format
msgid "failed to execute %s: %s"
-msgstr "nie udao si uruchomi %s: %s"
+msgstr "nie udało się uruchomić %s: %s"
-#: dnsmasq.c:903
+#: dnsmasq.c:915
msgid "exiting on receipt of SIGTERM"
-msgstr "zakoczyem dziaanie z powodu odebrania SIGTERM"
+msgstr "zakończyłem działanie z powodu odebrania SIGTERM"
-#: dnsmasq.c:931
+#: dnsmasq.c:943
#, c-format
msgid "failed to access %s: %s"
-msgstr "brak dostpu do %s: %s"
+msgstr "brak dostępu do %s: %s"
-#: dnsmasq.c:961
+#: dnsmasq.c:973
#, c-format
msgid "reading %s"
msgstr "czytanie %s"
-#: dnsmasq.c:972
+#: dnsmasq.c:984
#, c-format
msgid "no servers found in %s, will retry"
-msgstr "w %s nie znalazem serwerw, sprbuj ponownie pniej"
+msgstr "w %s nie znalazłem serwerów, spróbuję ponownie później"
-#: dhcp.c:40
+#: dhcp.c:39
#, c-format
msgid "cannot create DHCP socket: %s"
-msgstr "nie udao si utworzy gniazda dla DHCP: %s"
+msgstr "nie udało się utworzyć gniazda dla DHCP: %s"
-#: dhcp.c:52
+#: dhcp.c:51
#, c-format
msgid "failed to set options on DHCP socket: %s"
-msgstr "bd podczas ustawiania opcji gniazda DHCP: %s"
+msgstr "błąd podczas ustawiania opcji gniazda DHCP: %s"
-#: dhcp.c:65
+#: dhcp.c:64
#, c-format
msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
-msgstr "nie udao si ustawi SO_REUSE{ADDR|PORT} gniazda DHCP: %s"
+msgstr "nie udało się ustawić SO_REUSE{ADDR|PORT} gniazda DHCP: %s"
-#: dhcp.c:77
+#: dhcp.c:76
#, c-format
msgid "failed to bind DHCP server socket: %s"
-msgstr "bd przy przyznawaniu nazwy gniazdu serwera DHCP: %s"
+msgstr "błąd przy przyznawaniu nazwy gniazdu serwera DHCP: %s"
-#: dhcp.c:103
+#: dhcp.c:102
#, c-format
msgid "cannot create ICMP raw socket: %s."
-msgstr "nie udao si utworzy surowego gniazda ICMP: %s."
+msgstr "nie udało się utworzyć surowego gniazda ICMP: %s."
-#: dhcp.c:281
+#: dhcp.c:278
#, c-format
msgid "DHCP packet received on %s which has no address"
-msgstr "danie DHCP odebrano na interfejsie %s, ktry nie ma adresu"
+msgstr "żądanie DHCP odebrano na interfejsie %s, który nie ma adresu"
-#: dhcp.c:445
+#: dhcp.c:442
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
-msgstr "zakres adresw DHCP %s -- %s jest niespjny z mask sieci %s"
+msgstr "zakres adresów DHCP %s -- %s jest niespójny z maską sieci %s"
-#: dhcp.c:852
+#: dhcp.c:861
#, c-format
msgid "bad line at %s line %d"
-msgstr "za zawarto pliku %s, w linii %d"
+msgstr "zła zawartość pliku %s, w linii %d"
-#: dhcp.c:895
+#: dhcp.c:904
#, c-format
msgid "ignoring %s line %d, duplicate name or IP address"
-msgstr "w %s pomijam lini %d -- powtrzona nazwa lub adres IP"
+msgstr "w %s pomijam linię %d -- powtórzona nazwa lub adres IP"
-#: dhcp.c:978
+#: dhcp.c:987
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
-msgstr "powtrzony adres IP (%s) w parametrze dhcp-config"
+msgstr "powtórzony adres IP (%s) w parametrze dhcp-config"
-#: dhcp.c:981
+#: dhcp.c:990
#, c-format
msgid "duplicate IP address %s in %s."
-msgstr "powtrzony adres IP (%s) w pliku %s"
+msgstr "powtórzony adres IP (%s) w pliku %s"
-#: dhcp.c:1024
+#: dhcp.c:1033
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
-msgstr "do komputera o nazwie %s pasuje wicej ni jeden adres, w odpowiedzi DHCP wysyam %s"
+msgstr "do komputera o nazwie %s pasuje więcej niż jeden adres, w odpowiedzi DHCP wysyłam %s"
-#: dhcp.c:1029
+#: dhcp.c:1038
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
-msgstr "powtrzenie adresu IP %s (%s) w opcji dhcp-config"
+msgstr "powtórzenie adresu IP %s (%s) w opcji dhcp-config"
#: lease.c:67
#, c-format
msgid "cannot open or create lease file %s: %s"
-msgstr "nie potrafi otworzy albo utworzy pliku dzieraw %s: %s"
+msgstr "nie potrafię otworzyć albo utworzyć pliku dzierżaw %s: %s"
#: lease.c:93
msgid "too many stored leases"
-msgstr "zbyt dua ilo zapisanych dzieraw"
+msgstr "zbyt duża ilość zapisanych dzierżaw"
#: lease.c:129
#, c-format
msgid "cannot run lease-init script %s: %s"
-msgstr "nie potrafi uruchomi skryptu %s: %s"
+msgstr "nie potrafię uruchomić skryptu %s: %s"
#: lease.c:135
#, c-format
msgid "lease-init script returned exit code %s"
-msgstr "skrypt zakoczy si z kodem powrotu %s"
+msgstr "skrypt zakończył się z kodem powrotu %s"
#: lease.c:235
#, c-format
msgid "failed to write %s: %s (retry in %us)"
-msgstr "bd zapisu do %s: %s (sprbuj ponownie za %us)"
+msgstr "błąd zapisu do %s: %s (spróbuję ponownie za %us)"
-#: rfc2131.c:315
+#: rfc2131.c:342
#, c-format
msgid "no address range available for DHCP request %s %s"
-msgstr "nie zdefiniowano zakresu adresw odpowiedniego dla dania %s %s"
+msgstr "nie zdefiniowano zakresu adresów odpowiedniego dla żądania %s %s"
-#: rfc2131.c:316
+#: rfc2131.c:343
msgid "with subnet selector"
msgstr "z wyborem podsieci"
-#: rfc2131.c:316
+#: rfc2131.c:343
msgid "via"
msgstr "przez"
-#: rfc2131.c:331
+#: rfc2131.c:355
#, c-format
msgid "%u available DHCP subnet: %s/%s"
-msgstr "%u dostpna podsie DHCP: %s/%s"
+msgstr "%u dostępna podsieć DHCP: %s/%s"
-#: rfc2131.c:334
+#: rfc2131.c:358
#, c-format
msgid "%u available DHCP range: %s -- %s"
-msgstr "%u dostpny zakres adresw DHCP: %s -- %s"
+msgstr "%u dostępny zakres adresów DHCP: %s -- %s"
-#: rfc2131.c:363
+#: rfc2131.c:387
msgid "disabled"
-msgstr "wyczony(a)"
+msgstr "wyłączony(a)"
-#: rfc2131.c:404 rfc2131.c:916 rfc2131.c:1288
+#: rfc2131.c:428
+#: rfc2131.c:945
+#: rfc2131.c:1337
msgid "ignored"
-msgstr "ignoruj"
+msgstr "ignoruję"
-#: rfc2131.c:419 rfc2131.c:1135
+#: rfc2131.c:443
+#: rfc2131.c:1183
msgid "address in use"
-msgstr "adres jest w uyciu"
+msgstr "adres jest w użyciu"
-#: rfc2131.c:433 rfc2131.c:970
+#: rfc2131.c:457
+#: rfc2131.c:999
msgid "no address available"
-msgstr "brak dostpnego adresu"
+msgstr "brak dostępnego adresu"
-#: rfc2131.c:440 rfc2131.c:1098
+#: rfc2131.c:464
+#: rfc2131.c:1146
msgid "wrong network"
-msgstr "nieprawidowa sie"
+msgstr "nieprawidłowa sieć"
-#: rfc2131.c:454
+#: rfc2131.c:479
msgid "no address configured"
msgstr "brak skonfigurowanego adresu"
-#: rfc2131.c:460 rfc2131.c:1148
+#: rfc2131.c:485
+#: rfc2131.c:1196
msgid "no leases left"
-msgstr "brak wolnych dzieraw"
+msgstr "brak wolnych dzierżaw"
-#: rfc2131.c:545
+#: rfc2131.c:570
#, c-format
msgid "%u client provides name: %s"
-msgstr "klient %u przedstawia si jako %s"
+msgstr "klient %u przedstawia się jako %s"
-#: rfc2131.c:700
+#: rfc2131.c:725
#, c-format
msgid "%u vendor class: %s"
msgstr "%u klasa dostawcy: %s"
-#: rfc2131.c:702
+#: rfc2131.c:727
#, c-format
msgid "%u user class: %s"
-msgstr "%u klasa uytkownika: %s"
+msgstr "%u klasa użytkownika: %s"
-#: rfc2131.c:761
+#: rfc2131.c:786
msgid "PXE BIS not supported"
-msgstr "PXE BIS nie jest obsugiwane"
+msgstr "PXE BIS nie jest obsługiwane"
-#: rfc2131.c:886
+#: rfc2131.c:915
#, c-format
msgid "disabling DHCP static address %s for %s"
-msgstr "wyczam statyczne przypisanie adresu %s dla %s"
+msgstr "wyłączam statyczne przypisanie adresu %s dla %s"
-#: rfc2131.c:907
+#: rfc2131.c:936
msgid "unknown lease"
-msgstr "nieznana dzierawa"
+msgstr "nieznana dzierżawa"
-#: rfc2131.c:939
+#: rfc2131.c:968
#, c-format
msgid "not using configured address %s because it is leased to %s"
-msgstr "nie proponuj zakadanego w konfiguracji adresu %s, bo jest on ju wydzierawiony komputerowi %s"
+msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo jest on już wydzierżawiony komputerowi %s"
-#: rfc2131.c:949
+#: rfc2131.c:978
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
-msgstr "nie proponuj zakadanego w konfiguracji adresu %s, bo uywa go ktry z serwerw"
+msgstr "nie proponuję zakładanego w konfiguracji adresu %s, bo używa go któryś z serwerów"
-#: rfc2131.c:952
+#: rfc2131.c:981
#, c-format
msgid "not using configured address %s because it was previously declined"
-msgstr "nie proponuj zakadanego 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:968 rfc2131.c:1141
+#: rfc2131.c:997
+#: rfc2131.c:1189
msgid "no unique-id"
msgstr "brak unikalnego id"
-#: rfc2131.c:1037
+#: rfc2131.c:1084
msgid "wrong server-ID"
-msgstr "nieprawidowy identyfikator serwera (server-ID)"
+msgstr "nieprawidłowy identyfikator serwera (server-ID)"
-#: rfc2131.c:1055
+#: rfc2131.c:1103
msgid "wrong address"
-msgstr "bdny adres"
-
-#: rfc2131.c:1073
-msgid "lease not found"
-msgstr "dzierawa nieznaleziona"
-
-#: rfc2131.c:1106
-msgid "address not available"
-msgstr "adres niedostpny"
-
-#: rfc2131.c:1117
-msgid "static lease available"
-msgstr "dostpna statyczna dzierawa"
+msgstr "błędny adres"
#: rfc2131.c:1121
+msgid "lease not found"
+msgstr "dzierżawa nieznaleziona"
+
+#: rfc2131.c:1154
+msgid "address not available"
+msgstr "adres niedostępny"
+
+#: rfc2131.c:1165
+msgid "static lease available"
+msgstr "dostępna statyczna dzierżawa"
+
+#: rfc2131.c:1169
msgid "address reserved"
msgstr "adres zarezerwowany"
-#: rfc2131.c:1129
+#: rfc2131.c:1177
#, c-format
msgid "abandoning lease to %s of %s"
msgstr "porzucam przypisanie do %s nazwy %s"
-#: rfc2131.c:1710
+#: rfc2131.c:1746
#, c-format
msgid "%u tags: %s"
msgstr "%u cechy: %s"
-#: rfc2131.c:1723
+#: rfc2131.c:1774
#, c-format
msgid "%u bootfile name: %s"
msgstr "%u nazwa pliku bootowania: %s"
-#: rfc2131.c:1732
+#: rfc2131.c:1783
#, c-format
msgid "%u server name: %s"
msgstr "%u nazwa serwera: %s"
-#: rfc2131.c:1746
+#: rfc2131.c:1791
#, c-format
msgid "%u next server: %s"
-msgstr "%u nastpny serwer: %s"
+msgstr "%u następny serwer: %s"
-#: rfc2131.c:1749
+#: rfc2131.c:1794
#, c-format
msgid "%u broadcast response"
-msgstr "%u odpowied rozgoszeniowa"
+msgstr "%u odpowiedź rozgłoszeniowa"
-#: rfc2131.c:1812
+#: rfc2131.c:1857
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
-msgstr "nie mam moliwoci wysania opcji %d DHCP/BOOTP: niedostateczna ilo miejsca w pakiecie"
+msgstr "nie mam możliwości wysłania opcji %d DHCP/BOOTP: niedostateczna ilość miejsca w pakiecie"
-#: rfc2131.c:2058
+#: rfc2131.c:2097
msgid "PXE menu too large"
-msgstr "menu PXE zbyt due"
+msgstr "menu PXE zbyt duże"
-#: rfc2131.c:2171
+#: rfc2131.c:2253
+#, c-format
+msgid "Ignoring duplicate dhcp-option %d"
+msgstr "Pomijam powtórzoną dhcp-option %d"
+
+#: rfc2131.c:2257
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
-msgstr "Nie uwzgldniam czci domenowej (%s) dla komputera %s"
+msgstr "Nie uwzględniam części domenowej (%s) dla komputera %s"
-#: rfc2131.c:2189
+#: rfc2131.c:2275
#, c-format
msgid "%u requested options: %s"
-msgstr "%u zadano: %s"
+msgstr "%u zażądano: %s"
-#: rfc2131.c:2456
+#: rfc2131.c:2550
#, c-format
msgid "cannot send RFC3925 option: too many options for enterprise number %d"
-msgstr "nie mog wysa opcji RFC3925: za dugi acuch opcji przy numerze %d"
+msgstr "nie mogę wysłać opcji RFC3925: za długi łańcuch opcji przy numerze %d"
#: netlink.c:70
#, c-format
msgid "cannot create netlink socket: %s"
-msgstr "nie potrafi utworzy poczenia netlink %s"
+msgstr "nie potrafię utworzyć połączenia netlink %s"
#: netlink.c:288
#, c-format
msgid "netlink returns error: %s"
-msgstr "wystpi bd w poczeniu netlink %s"
+msgstr "wystąpił błąd w połączeniu netlink %s"
#: dbus.c:150
msgid "attempt to set an IPv6 server address via DBus - no IPv6 support"
-msgstr "prba ustawienia adresu IPv6 serwera przez DBus, ale brak obsugi IPv6"
+msgstr "próba ustawienia adresu IPv6 serwera przez DBus, ale brak obsługi IPv6"
#: dbus.c:286
msgid "setting upstream servers from DBus"
-msgstr "ustawiam adresy serwerw nadrzdnych na podstawie informacji odebranych z DBus"
+msgstr "ustawiam adresy serwerów nadrzędnych na podstawie informacji odebranych z DBus"
#: dbus.c:324
msgid "could not register a DBus message handler"
-msgstr "nie mona zarejestrowa uchwytu DBus"
+msgstr "nie można zarejestrować uchwytu DBus"
-#: bpf.c:217
+#: bpf.c:224
#, c-format
msgid "cannot create DHCP BPF socket: %s"
-msgstr "nie potrafi utworzy gniazda DHCP BPF: %s"
+msgstr "nie potrafię utworzyć gniazda DHCP BPF: %s"
-#: bpf.c:245
+#: bpf.c:252
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
-msgstr "danie DHCP od urzdzenia nieobsugiwanego typu (%d) odebrano na %s"
+msgstr "żądanie DHCP od urządzenia nieobsługiwanego typu (%d) odebrano na %s"
-#: tftp.c:281
+#: tftp.c:286
msgid "unable to get free port for TFTP"
-msgstr "brak wolnego portu dla usugi TFTP"
+msgstr "brak wolnego portu dla usługi TFTP"
-#: tftp.c:296
+#: tftp.c:301
#, c-format
msgid "unsupported request from %s"
-msgstr "nieobsugiwane danie od komputera %s"
+msgstr "nieobsługiwane żądanie od komputera %s"
-#: tftp.c:406
+#: tftp.c:411
#, c-format
msgid "file %s not found"
-msgstr "plik %s nie zosta znaleziony"
+msgstr "plik %s nie został znaleziony"
-#: tftp.c:522
+#: tftp.c:527
#, c-format
msgid "error %d %s received from %s"
-msgstr "bd %d %s odebrano od %s"
+msgstr "błąd %d %s odebrano od %s"
-#: tftp.c:554
+#: tftp.c:559
#, c-format
msgid "failed sending %s to %s"
-msgstr "bd wysyania pliku %s do komputera %s"
+msgstr "błąd wysyłania pliku %s do komputera %s"
-#: tftp.c:568
+#: tftp.c:573
#, c-format
msgid "sent %s to %s"
-msgstr "plik %s przesano do %s"
+msgstr "plik %s przesłano do %s"
-#: log.c:177
+#: log.c:190
#, c-format
msgid "overflow: %d log entries lost"
-msgstr "przepenienie: stracono %d wpisw do logw"
+msgstr "przepełnienie: stracono %d wpisów do logów"
-#: log.c:254
+#: log.c:267
#, c-format
msgid "log failed: %s"
-msgstr "nie udao si zapisa komunikatw do %s"
+msgstr "nie udało się zapisać komunikatów do %s"
-#: log.c:462
+#: log.c:471
msgid "FAILED to start up"
-msgstr "BD: nie udao si uruchomi dnsmasq-a"
+msgstr "BŁĄD: nie udało się uruchomić dnsmasq-a"
+
+#: conntrack.c:65
+#, c-format
+msgid "Conntrack connection mark retrieval failed: %s"
+msgstr "Nie udało się odcztać znacznika połączenia (conntrack): %s"
#~ msgid "only one dhcp-hostsfile allowed"
-#~ msgstr "mona wskaza tylko jeden plik dhcp-hostsfile"
+#~ msgstr "można wskazać tylko jeden plik dhcp-hostsfile"
#~ msgid "only one dhcp-optsfile allowed"
-#~ msgstr "mona wskaza tylko jeden plik dhcp-optsfile"
+#~ msgstr "można wskazać tylko jeden plik dhcp-optsfile"
#~ msgid "files nested too deep in %s"
-#~ msgstr "zbyt due zagbienie plikw w %s"
+#~ msgstr "zbyt duże zagłębienie plików w %s"
#~ msgid "TXT record string too long"
-#~ msgstr "zbyt dugi rekord TXT"
+#~ msgstr "zbyt długi rekord TXT"
#~ msgid "failed to set IPV6 options on listening socket: %s"
-#~ msgstr "bd ustawiania opcji IPV6 na nasuchujcym gniedzie: %s"
+#~ msgstr "błąd ustawiania opcji IPV6 na nasłuchującym gnieździe: %s"
#~ msgid "failed to bind listening socket for %s: %s"
-#~ msgstr "bd przy przyznawaniu nazwy gniazdu %s: %s"
+#~ msgstr "błąd przy przyznawaniu nazwy gniazdu %s: %s"
#~ msgid "failed to listen on socket: %s"
-#~ msgstr "bd przy wczaniu nasuchu na gniedzie: %s"
+#~ msgstr "błąd przy włączaniu nasłuchu na gnieździe: %s"
#~ msgid "failed to create TFTP socket: %s"
-#~ msgstr "nie powiodo si otwieranie gniazda dla usugi TFTP: %s"
+#~ msgstr "nie powiodło się otwieranie gniazda dla usługi TFTP: %s"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 5fe209e..d341025 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -20,17 +20,17 @@ msgstr ""
msgid "failed to load names from %s: %s"
msgstr ""
-#: cache.c:795 dhcp.c:865
+#: cache.c:795 dhcp.c:874
#, c-format
msgid "bad address at %s line %d"
msgstr ""
-#: cache.c:853 dhcp.c:881
+#: cache.c:853 dhcp.c:890
#, c-format
msgid "bad name at %s line %d"
msgstr ""
-#: cache.c:860 dhcp.c:956
+#: cache.c:860 dhcp.c:965
#, c-format
msgid "read %s - %d addresses"
msgstr ""
@@ -39,32 +39,37 @@ msgstr ""
msgid "cleared cache"
msgstr ""
-#: cache.c:960
+#: cache.c:934
+#, c-format
+msgid "No IPv4 address found for %s"
+msgstr ""
+
+#: cache.c:975
#, c-format
msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
msgstr ""
-#: cache.c:966
+#: cache.c:981
#, c-format
msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
msgstr ""
-#: cache.c:1039
+#: cache.c:1054
#, c-format
msgid "time %lu"
msgstr ""
-#: cache.c:1040
+#: cache.c:1055
#, c-format
msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
msgstr ""
-#: cache.c:1042
+#: cache.c:1057
#, c-format
msgid "queries forwarded %u, queries answered locally %u"
msgstr ""
-#: cache.c:1068
+#: cache.c:1083
#, c-format
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
@@ -78,7 +83,7 @@ msgstr ""
msgid "failed to allocate memory"
msgstr ""
-#: util.c:227 option.c:573
+#: util.c:227 option.c:579
msgid "could not get memory"
msgstr ""
@@ -92,752 +97,764 @@ msgstr ""
msgid "failed to allocate %d bytes"
msgstr ""
-#: util.c:350
+#: util.c:358
#, c-format
msgid "infinite"
msgstr ""
-#: option.c:244
+#: option.c:248
msgid "Specify local address(es) to listen on."
msgstr ""
-#: option.c:245
+#: option.c:249
msgid "Return ipaddr for all hosts in specified domains."
msgstr ""
-#: option.c:246
+#: option.c:250
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr ""
-#: option.c:247
+#: option.c:251
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr ""
-#: option.c:248
+#: option.c:252
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr ""
-#: option.c:249
+#: option.c:253
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr ""
-#: option.c:250
+#: option.c:254
msgid "Do NOT fork into the background: run in debug mode."
msgstr ""
-#: option.c:251
+#: option.c:255
msgid "Do NOT forward queries with no domain part."
msgstr ""
-#: option.c:252
+#: option.c:256
msgid "Return self-pointing MX records for local hosts."
msgstr ""
-#: option.c:253
+#: option.c:257
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr ""
-#: option.c:254
+#: option.c:258
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr ""
-#: option.c:255
+#: option.c:259
msgid "Enable DHCP in the range given with lease duration."
msgstr ""
-#: option.c:256
+#: option.c:260
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr ""
-#: option.c:257
+#: option.c:261
msgid "Set address or hostname for a specified machine."
msgstr ""
-#: option.c:258
+#: option.c:262
msgid "Read DHCP host specs from file."
msgstr ""
-#: option.c:259
+#: option.c:263
msgid "Read DHCP option specs from file."
msgstr ""
-#: option.c:260
+#: option.c:264
msgid "Evaluate conditional tag expression."
msgstr ""
-#: option.c:261
+#: option.c:265
#, c-format
msgid "Do NOT load %s file."
msgstr ""
-#: option.c:262
+#: option.c:266
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr ""
-#: option.c:263
+#: option.c:267
msgid "Specify interface(s) to listen on."
msgstr ""
-#: option.c:264
+#: option.c:268
msgid "Specify interface(s) NOT to listen on."
msgstr ""
-#: option.c:265
+#: option.c:269
msgid "Map DHCP user class to tag."
msgstr ""
-#: option.c:266
+#: option.c:270
msgid "Map RFC3046 circuit-id to tag."
msgstr ""
-#: option.c:267
+#: option.c:271
msgid "Map RFC3046 remote-id to tag."
msgstr ""
-#: option.c:268
+#: option.c:272
msgid "Map RFC3993 subscriber-id to tag."
msgstr ""
-#: option.c:269
+#: option.c:273
msgid "Don't do DHCP for hosts with tag set."
msgstr ""
-#: option.c:270
+#: option.c:274
msgid "Force broadcast replies for hosts with tag set."
msgstr ""
-#: option.c:271
+#: option.c:275
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr ""
-#: option.c:272
-msgid "Assume we are the only DHCP server on the local network."
-msgstr ""
-
-#: option.c:273
-#, c-format
-msgid "Specify where to store DHCP leases (defaults to %s)."
-msgstr ""
-
-#: option.c:274
-msgid "Return MX records for local hosts."
-msgstr ""
-
-#: option.c:275
-msgid "Specify an MX record."
-msgstr ""
-
#: option.c:276
-msgid "Specify BOOTP options to DHCP server."
+msgid "Assume we are the only DHCP server on the local network."
msgstr ""
#: option.c:277
#, c-format
-msgid "Do NOT poll %s file, reload only on SIGHUP."
+msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr ""
#: option.c:278
-msgid "Do NOT cache failed search results."
+msgid "Return MX records for local hosts."
msgstr ""
#: option.c:279
-#, c-format
-msgid "Use nameservers strictly in the order given in %s."
+msgid "Specify an MX record."
msgstr ""
#: option.c:280
-msgid "Specify options to be sent to DHCP clients."
+msgid "Specify BOOTP options to DHCP server."
msgstr ""
#: option.c:281
-msgid "DHCP option sent even if the client does not request it."
+#, c-format
+msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr ""
#: option.c:282
-msgid "Specify port to listen for DNS requests on (defaults to 53)."
+msgid "Do NOT cache failed search results."
msgstr ""
#: option.c:283
#, c-format
-msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
+msgid "Use nameservers strictly in the order given in %s."
msgstr ""
#: option.c:284
-msgid "Log DNS queries."
+msgid "Specify options to be sent to DHCP clients."
msgstr ""
#: option.c:285
-msgid "Force the originating port for upstream DNS queries."
+msgid "DHCP option sent even if the client does not request it."
msgstr ""
#: option.c:286
-msgid "Do NOT read resolv.conf."
+msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr ""
#: option.c:287
#, c-format
-msgid "Specify path to resolv.conf (defaults to %s)."
+msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr ""
#: option.c:288
-msgid "Specify address(es) of upstream servers with optional domains."
+msgid "Log DNS queries."
msgstr ""
#: option.c:289
-msgid "Never forward queries to specified domains."
+msgid "Force the originating port for upstream DNS queries."
msgstr ""
#: option.c:290
-msgid "Specify the domain to be assigned in DHCP leases."
+msgid "Do NOT read resolv.conf."
msgstr ""
#: option.c:291
-msgid "Specify default target in an MX record."
+#, c-format
+msgid "Specify path to resolv.conf (defaults to %s)."
msgstr ""
#: option.c:292
-msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+msgid "Specify address(es) of upstream servers with optional domains."
msgstr ""
#: option.c:293
-msgid "Specify time-to-live in seconds for negative caching."
+msgid "Never forward queries to specified domains."
msgstr ""
#: option.c:294
-msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+msgid "Specify the domain to be assigned in DHCP leases."
msgstr ""
#: option.c:295
+msgid "Specify default target in an MX record."
+msgstr ""
+
+#: option.c:296
+msgid "Specify time-to-live in seconds for replies from /etc/hosts."
+msgstr ""
+
+#: option.c:297
+msgid "Specify time-to-live in seconds for negative caching."
+msgstr ""
+
+#: option.c:298
+msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
+msgstr ""
+
+#: option.c:299
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr ""
-#: option.c:296
+#: option.c:300
msgid "Map DHCP vendor class to tag."
msgstr ""
-#: option.c:297
+#: option.c:301
msgid "Display dnsmasq version and copyright information."
msgstr ""
-#: option.c:298
+#: option.c:302
msgid "Translate IPv4 addresses from upstream servers."
msgstr ""
-#: option.c:299
+#: option.c:303
msgid "Specify a SRV record."
msgstr ""
-#: option.c:300
+#: option.c:304
msgid "Display this message. Use --help dhcp for known DHCP options."
msgstr ""
-#: option.c:301
+#: option.c:305
#, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr ""
-#: option.c:302
+#: option.c:306
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr ""
-#: option.c:303
+#: option.c:307
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr ""
-#: option.c:304
+#: option.c:308
msgid "Specify TXT DNS record."
msgstr ""
-#: option.c:305
+#: option.c:309
msgid "Specify PTR DNS record."
msgstr ""
-#: option.c:306
+#: option.c:310
msgid "Give DNS name to IPv4 address of interface."
msgstr ""
-#: option.c:307
+#: option.c:311
msgid "Bind only to interfaces in use."
msgstr ""
-#: option.c:308
+#: option.c:312
#, c-format
msgid "Read DHCP static host information from %s."
msgstr ""
-#: option.c:309
+#: option.c:313
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr ""
-#: option.c:310
+#: option.c:314
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr ""
-#: option.c:311
+#: option.c:315
msgid "Enable dynamic address allocation for bootp."
msgstr ""
-#: option.c:312
+#: option.c:316
msgid "Map MAC address (with wildcards) to option set."
msgstr ""
-#: option.c:313
+#: option.c:317
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:314
+#: option.c:318
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:315
+#: option.c:319
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:316
+#: option.c:320
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:317
+#: option.c:321
msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr ""
-#: option.c:318
+#: option.c:322
msgid "Do not use leasefile."
msgstr ""
-#: option.c:319
+#: option.c:323
#, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr ""
-#: option.c:320
+#: option.c:324
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:321
+#: option.c:325
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:322
+#: option.c:326
msgid "Do NOT reuse filename and server fields for extra DHCP options."
msgstr ""
-#: option.c:323
+#: option.c:327
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:324
+#: option.c:328
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:325
+#: option.c:329
msgid "Add client IP address to tftp-root."
msgstr ""
-#: option.c:326
+#: option.c:330
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:327
+#: option.c:331
#, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr ""
-#: option.c:328
+#: option.c:332
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:329
+#: option.c:333
msgid "Ephemeral port range for use by TFTP transfers."
msgstr ""
-#: option.c:330
+#: option.c:334
msgid "Extra logging for DHCP."
msgstr ""
-#: option.c:331
+#: option.c:335
msgid "Enable async. logging; optionally set queue length."
msgstr ""
-#: option.c:332
+#: option.c:336
msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
msgstr ""
-#: option.c:333
+#: option.c:337
msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
msgstr ""
-#: option.c:334
+#: option.c:338
msgid "Inhibit DNS-rebind protection on this domain."
msgstr ""
-#: option.c:335
+#: option.c:339
msgid "Always perform DNS queries to all servers."
msgstr ""
-#: option.c:336
+#: option.c:340
msgid "Set tag if client includes matching option in request."
msgstr ""
-#: option.c:337
+#: option.c:341
msgid "Use alternative ports for DHCP."
msgstr ""
-#: option.c:338
+#: option.c:342
msgid "Run lease-change script as this user."
msgstr ""
-#: option.c:339
+#: option.c:343
msgid "Specify NAPTR DNS record."
msgstr ""
-#: option.c:340
+#: option.c:344
msgid "Specify lowest port available for DNS query transmission."
msgstr ""
-#: option.c:341
+#: option.c:345
msgid "Use only fully qualified domain names for DHCP clients."
msgstr ""
-#: option.c:342
+#: option.c:346
msgid "Generate hostnames based on MAC address for nameless clients."
msgstr ""
-#: option.c:343
+#: option.c:347
msgid "Use these DHCP relays as full proxies."
msgstr ""
-#: option.c:344
+#: option.c:348
msgid "Specify alias name for LOCAL DNS name."
msgstr ""
-#: option.c:345
+#: option.c:349
msgid "Prompt to send to PXE clients."
msgstr ""
-#: option.c:346
+#: option.c:350
msgid "Boot service for PXE menu."
msgstr ""
-#: option.c:347
+#: option.c:351
msgid "Check configuration syntax."
msgstr ""
-#: option.c:348
-msgid "Add requestor's MAC address to forwarded DNS queries"
+#: option.c:352
+msgid "Add requestor's MAC address to forwarded DNS queries."
msgstr ""
-#: option.c:349
-msgid "Proxy DNSSEC validation results from upstream nameservers"
+#: option.c:353
+msgid "Proxy DNSSEC validation results from upstream nameservers."
msgstr ""
-#: option.c:638
+#: option.c:354
+msgid "Attempt to allocate sequential IP addresses to DHCP clients."
+msgstr ""
+
+#: option.c:355
+msgid "Copy connection-track mark from queries to upstream connections."
+msgstr ""
+
+#: option.c:644
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
"\n"
msgstr ""
-#: option.c:640
+#: option.c:646
#, c-format
msgid "Use short options only on the command line.\n"
msgstr ""
-#: option.c:642
+#: option.c:648
#, c-format
msgid "Valid options are:\n"
msgstr ""
-#: option.c:683
+#: option.c:689
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:798
+#: option.c:804
msgid "bad dhcp-option"
msgstr ""
-#: option.c:860
+#: option.c:866
msgid "bad IP address"
msgstr ""
-#: option.c:968
+#: option.c:974
msgid "bad domain in dhcp-option"
msgstr ""
-#: option.c:1034
+#: option.c:1040
msgid "dhcp-option too long"
msgstr ""
-#: option.c:1043
+#: option.c:1049
msgid "illegal dhcp-match"
msgstr ""
-#: option.c:1087
+#: option.c:1093
msgid "illegal repeated flag"
msgstr ""
-#: option.c:1095
+#: option.c:1101
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:1147 option.c:3030
+#: option.c:1153 option.c:3062
#, c-format
msgid "cannot access directory %s: %s"
msgstr ""
-#: option.c:1178 tftp.c:460
+#: option.c:1184 tftp.c:465
#, c-format
msgid "cannot access %s: %s"
msgstr ""
-#: option.c:1207
+#: option.c:1213
msgid "setting log facility is not possible under Android"
msgstr ""
-#: option.c:1216
+#: option.c:1222
msgid "bad log facility"
msgstr ""
-#: option.c:1265
+#: option.c:1271
msgid "bad MX preference"
msgstr ""
-#: option.c:1270
+#: option.c:1276
msgid "bad MX name"
msgstr ""
-#: option.c:1284
+#: option.c:1290
msgid "bad MX target"
msgstr ""
-#: option.c:1294
+#: option.c:1300
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1296
+#: option.c:1302
msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
msgstr ""
-#: option.c:1597 option.c:1601
+#: option.c:1607 option.c:1611
msgid "bad port"
msgstr ""
-#: option.c:1620 option.c:1645
+#: option.c:1634 option.c:1665
msgid "interface binding not supported"
msgstr ""
-#: option.c:1791
-msgid "bad port range"
-msgstr ""
-
-#: option.c:1808
-msgid "bad bridge-interface"
-msgstr ""
-
-#: option.c:1850
-msgid "bad dhcp-range"
-msgstr ""
-
-#: option.c:1878
-msgid "only one tag allowed"
-msgstr ""
-
-#: option.c:1925
-msgid "inconsistent DHCP range"
-msgstr ""
-
-#: option.c:2019 option.c:2045
-msgid "bad hex constant"
-msgstr ""
-
-#: option.c:2107
-msgid "bad DHCP host name"
-msgstr ""
-
-#: option.c:2188
-msgid "bad tag-if"
-msgstr ""
-
-#: option.c:2467 option.c:2752
-msgid "invalid port number"
-msgstr ""
-
-#: option.c:2529
-msgid "bad dhcp-proxy address"
-msgstr ""
-
-#: option.c:2569
-msgid "invalid alias range"
-msgstr ""
-
-#: option.c:2582
+#: option.c:1645 option.c:2614
msgid "bad interface name"
msgstr ""
-#: option.c:2607
+#: option.c:1810
+msgid "bad port range"
+msgstr ""
+
+#: option.c:1827
+msgid "bad bridge-interface"
+msgstr ""
+
+#: option.c:1870
+msgid "bad dhcp-range"
+msgstr ""
+
+#: option.c:1898
+msgid "only one tag allowed"
+msgstr ""
+
+#: option.c:1945
+msgid "inconsistent DHCP range"
+msgstr ""
+
+#: option.c:2039 option.c:2067
+msgid "bad hex constant"
+msgstr ""
+
+#: option.c:2061
+msgid "cannot match tags in --dhcp-host"
+msgstr ""
+
+#: option.c:2129
+msgid "bad DHCP host name"
+msgstr ""
+
+#: option.c:2210
+msgid "bad tag-if"
+msgstr ""
+
+#: option.c:2499 option.c:2784
+msgid "invalid port number"
+msgstr ""
+
+#: option.c:2561
+msgid "bad dhcp-proxy address"
+msgstr ""
+
+#: option.c:2601
+msgid "invalid alias range"
+msgstr ""
+
+#: option.c:2639
msgid "bad CNAME"
msgstr ""
-#: option.c:2612
+#: option.c:2644
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2632
+#: option.c:2664
msgid "bad PTR record"
msgstr ""
-#: option.c:2663
+#: option.c:2695
msgid "bad NAPTR record"
msgstr ""
-#: option.c:2695
+#: option.c:2727
msgid "bad TXT record"
msgstr ""
-#: option.c:2738
+#: option.c:2770
msgid "bad SRV record"
msgstr ""
-#: option.c:2745
+#: option.c:2777
msgid "bad SRV target"
msgstr ""
-#: option.c:2759
+#: option.c:2791
msgid "invalid priority"
msgstr ""
-#: option.c:2766
+#: option.c:2798
msgid "invalid weight"
msgstr ""
-#: option.c:2785
+#: option.c:2817
msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
msgstr ""
-#: option.c:2849
+#: option.c:2881
msgid "missing \""
msgstr ""
-#: option.c:2908
+#: option.c:2940
msgid "bad option"
msgstr ""
-#: option.c:2910
+#: option.c:2942
msgid "extraneous parameter"
msgstr ""
-#: option.c:2912
+#: option.c:2944
msgid "missing parameter"
msgstr ""
-#: option.c:2916
+#: option.c:2948
msgid "error"
msgstr ""
-#: option.c:2921
+#: option.c:2953
#, c-format
msgid "%s at line %d of %%s"
msgstr ""
-#: option.c:2985 tftp.c:624
+#: option.c:3017 tftp.c:629
#, c-format
msgid "cannot read %s: %s"
msgstr ""
-#: option.c:3151 option.c:3187
+#: option.c:3183 option.c:3219
#, c-format
msgid "read %s"
msgstr ""
-#: option.c:3239
+#: option.c:3271
msgid "junk found in command line"
msgstr ""
-#: option.c:3269
+#: option.c:3301
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr ""
-#: option.c:3270
+#: option.c:3302
#, c-format
msgid ""
"Compile time options %s\n"
"\n"
msgstr ""
-#: option.c:3271
+#: option.c:3303
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr ""
-#: option.c:3272
+#: option.c:3304
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr ""
-#: option.c:3273
+#: option.c:3305
#, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr ""
-#: option.c:3284
+#: option.c:3316
msgid "try --help"
msgstr ""
-#: option.c:3286
+#: option.c:3318
msgid "try -w"
msgstr ""
-#: option.c:3289
+#: option.c:3321
#, c-format
msgid "bad command line options: %s"
msgstr ""
-#: option.c:3330
+#: option.c:3362
#, c-format
msgid "cannot get host-name: %s"
msgstr ""
-#: option.c:3358
+#: option.c:3390
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr ""
-#: option.c:3368
+#: option.c:3400
msgid "must have exactly one resolv.conf to read domain from."
msgstr ""
-#: option.c:3371 network.c:848 dhcp.c:814
+#: option.c:3403 network.c:848 dhcp.c:823
#, c-format
msgid "failed to read %s: %s"
msgstr ""
-#: option.c:3388
+#: option.c:3420
#, c-format
msgid "no search directive found in %s"
msgstr ""
-#: option.c:3409
+#: option.c:3441
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
-#: option.c:3413
+#: option.c:3445
msgid "syntax check OK"
msgstr ""
-#: forward.c:461
+#: forward.c:471
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr ""
-#: forward.c:489
+#: forward.c:499
#, c-format
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
@@ -908,273 +925,281 @@ msgstr ""
msgid "using nameserver %s#%d"
msgstr ""
-#: dnsmasq.c:148
+#: dnsmasq.c:152
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr ""
-#: dnsmasq.c:153
+#: dnsmasq.c:157
+msgid "Cannot use --conntrack AND --query-port"
+msgstr ""
+
+#: dnsmasq.c:160
+msgid "Conntrack support not available: set HAVE_CONNTRACK in src/config.h"
+msgstr ""
+
+#: dnsmasq.c:165
msgid "asychronous logging is not available under Solaris"
msgstr ""
-#: dnsmasq.c:158
+#: dnsmasq.c:170
msgid "asychronous logging is not available under Android"
msgstr ""
-#: dnsmasq.c:177
+#: dnsmasq.c:189
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr ""
-#: dnsmasq.c:185
+#: dnsmasq.c:197
#, c-format
msgid "unknown interface %s"
msgstr ""
-#: dnsmasq.c:191
+#: dnsmasq.c:203
#, c-format
msgid "no interface with address %s"
msgstr ""
-#: dnsmasq.c:207 dnsmasq.c:678
+#: dnsmasq.c:219 dnsmasq.c:690
#, c-format
msgid "DBus error: %s"
msgstr ""
-#: dnsmasq.c:210
+#: dnsmasq.c:222
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr ""
-#: dnsmasq.c:236
+#: dnsmasq.c:248
#, c-format
msgid "unknown user or group: %s"
msgstr ""
-#: dnsmasq.c:291
+#: dnsmasq.c:303
#, c-format
msgid "cannot chdir to filesystem root: %s"
msgstr ""
-#: dnsmasq.c:455
+#: dnsmasq.c:467
#, c-format
msgid "started, version %s DNS disabled"
msgstr ""
-#: dnsmasq.c:457
+#: dnsmasq.c:469
#, c-format
msgid "started, version %s cachesize %d"
msgstr ""
-#: dnsmasq.c:459
+#: dnsmasq.c:471
#, c-format
msgid "started, version %s cache disabled"
msgstr ""
-#: dnsmasq.c:461
+#: dnsmasq.c:473
#, c-format
msgid "compile time options: %s"
msgstr ""
-#: dnsmasq.c:467
+#: dnsmasq.c:479
msgid "DBus support enabled: connected to system bus"
msgstr ""
-#: dnsmasq.c:469
+#: dnsmasq.c:481
msgid "DBus support enabled: bus connection pending"
msgstr ""
-#: dnsmasq.c:474
+#: dnsmasq.c:486
#, c-format
msgid "warning: failed to change owner of %s: %s"
msgstr ""
-#: dnsmasq.c:478
+#: dnsmasq.c:490
msgid "setting --bind-interfaces option because of OS limitations"
msgstr ""
-#: dnsmasq.c:483
-#, c-format
-msgid "warning: interface %s does not currently exist"
-msgstr ""
-
-#: dnsmasq.c:488
-msgid "warning: ignoring resolv-file flag because no-resolv is set"
-msgstr ""
-
-#: dnsmasq.c:491
-msgid "warning: no upstream servers configured"
-msgstr ""
-
#: dnsmasq.c:495
#, c-format
+msgid "warning: interface %s does not currently exist"
+msgstr ""
+
+#: dnsmasq.c:500
+msgid "warning: ignoring resolv-file flag because no-resolv is set"
+msgstr ""
+
+#: dnsmasq.c:503
+msgid "warning: no upstream servers configured"
+msgstr ""
+
+#: dnsmasq.c:507
+#, c-format
msgid "asynchronous logging enabled, queue limit is %d messages"
msgstr ""
-#: dnsmasq.c:508
+#: dnsmasq.c:520
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr ""
-#: dnsmasq.c:510
+#: dnsmasq.c:522
#, c-format
msgid "DHCP, proxy on subnet %.0s%s%.0s"
msgstr ""
-#: dnsmasq.c:511
+#: dnsmasq.c:523
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr ""
-#: dnsmasq.c:526
+#: dnsmasq.c:538
msgid "root is "
msgstr ""
-#: dnsmasq.c:526
+#: dnsmasq.c:538
msgid "enabled"
msgstr ""
-#: dnsmasq.c:528
+#: dnsmasq.c:540
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:554
+#: dnsmasq.c:566
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
-#: dnsmasq.c:680
+#: dnsmasq.c:692
msgid "connected to system DBus"
msgstr ""
-#: dnsmasq.c:775
+#: dnsmasq.c:787
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
-#: dnsmasq.c:778
+#: dnsmasq.c:790
#, c-format
msgid "failed to create helper: %s"
msgstr ""
-#: dnsmasq.c:781
+#: dnsmasq.c:793
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
-#: dnsmasq.c:785
+#: dnsmasq.c:797
#, c-format
msgid "failed to change user-id to %s: %s"
msgstr ""
-#: dnsmasq.c:790
+#: dnsmasq.c:802
#, c-format
msgid "failed to change group-id to %s: %s"
msgstr ""
-#: dnsmasq.c:793
+#: dnsmasq.c:805
#, c-format
msgid "failed to open pidfile %s: %s"
msgstr ""
-#: dnsmasq.c:796
+#: dnsmasq.c:808
#, c-format
msgid "cannot open %s: %s"
msgstr ""
-#: dnsmasq.c:851
+#: dnsmasq.c:863
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: dnsmasq.c:855
+#: dnsmasq.c:867
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: dnsmasq.c:859
+#: dnsmasq.c:871
#, c-format
msgid "failed to execute %s: %s"
msgstr ""
-#: dnsmasq.c:903
+#: dnsmasq.c:915
msgid "exiting on receipt of SIGTERM"
msgstr ""
-#: dnsmasq.c:931
+#: dnsmasq.c:943
#, c-format
msgid "failed to access %s: %s"
msgstr ""
-#: dnsmasq.c:961
+#: dnsmasq.c:973
#, c-format
msgid "reading %s"
msgstr ""
-#: dnsmasq.c:972
+#: dnsmasq.c:984
#, c-format
msgid "no servers found in %s, will retry"
msgstr ""
-#: dhcp.c:40
+#: dhcp.c:39
#, c-format
msgid "cannot create DHCP socket: %s"
msgstr ""
-#: dhcp.c:52
+#: dhcp.c:51
#, c-format
msgid "failed to set options on DHCP socket: %s"
msgstr ""
-#: dhcp.c:65
+#: dhcp.c:64
#, c-format
msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
msgstr ""
-#: dhcp.c:77
+#: dhcp.c:76
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr ""
-#: dhcp.c:103
+#: dhcp.c:102
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr ""
-#: dhcp.c:281
+#: dhcp.c:278
#, c-format
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:445
+#: dhcp.c:442
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr ""
-#: dhcp.c:852
+#: dhcp.c:861
#, c-format
msgid "bad line at %s line %d"
msgstr ""
-#: dhcp.c:895
+#: dhcp.c:904
#, c-format
msgid "ignoring %s line %d, duplicate name or IP address"
msgstr ""
-#: dhcp.c:978
+#: dhcp.c:987
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr ""
-#: dhcp.c:981
+#: dhcp.c:990
#, c-format
msgid "duplicate IP address %s in %s."
msgstr ""
-#: dhcp.c:1024
+#: dhcp.c:1033
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:1029
+#: dhcp.c:1038
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr ""
@@ -1203,178 +1228,183 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr ""
-#: rfc2131.c:315
+#: rfc2131.c:342
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:343
msgid "with subnet selector"
msgstr ""
-#: rfc2131.c:316
+#: rfc2131.c:343
msgid "via"
msgstr ""
-#: rfc2131.c:331
+#: rfc2131.c:355
#, c-format
msgid "%u available DHCP subnet: %s/%s"
msgstr ""
-#: rfc2131.c:334
+#: rfc2131.c:358
#, c-format
msgid "%u available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:363
+#: rfc2131.c:387
msgid "disabled"
msgstr ""
-#: rfc2131.c:404 rfc2131.c:916 rfc2131.c:1288
+#: rfc2131.c:428 rfc2131.c:945 rfc2131.c:1337
msgid "ignored"
msgstr ""
-#: rfc2131.c:419 rfc2131.c:1135
+#: rfc2131.c:443 rfc2131.c:1183
msgid "address in use"
msgstr ""
-#: rfc2131.c:433 rfc2131.c:970
+#: rfc2131.c:457 rfc2131.c:999
msgid "no address available"
msgstr ""
-#: rfc2131.c:440 rfc2131.c:1098
+#: rfc2131.c:464 rfc2131.c:1146
msgid "wrong network"
msgstr ""
-#: rfc2131.c:454
+#: rfc2131.c:479
msgid "no address configured"
msgstr ""
-#: rfc2131.c:460 rfc2131.c:1148
+#: rfc2131.c:485 rfc2131.c:1196
msgid "no leases left"
msgstr ""
-#: rfc2131.c:545
+#: rfc2131.c:570
#, c-format
msgid "%u client provides name: %s"
msgstr ""
-#: rfc2131.c:700
+#: rfc2131.c:725
#, c-format
msgid "%u vendor class: %s"
msgstr ""
-#: rfc2131.c:702
+#: rfc2131.c:727
#, c-format
msgid "%u user class: %s"
msgstr ""
-#: rfc2131.c:761
+#: rfc2131.c:786
msgid "PXE BIS not supported"
msgstr ""
-#: rfc2131.c:886
+#: rfc2131.c:915
#, c-format
msgid "disabling DHCP static address %s for %s"
msgstr ""
-#: rfc2131.c:907
+#: rfc2131.c:936
msgid "unknown lease"
msgstr ""
-#: rfc2131.c:939
+#: rfc2131.c:968
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:949
+#: rfc2131.c:978
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:952
+#: rfc2131.c:981
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:968 rfc2131.c:1141
+#: rfc2131.c:997 rfc2131.c:1189
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1037
+#: rfc2131.c:1084
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:1055
+#: rfc2131.c:1103
msgid "wrong address"
msgstr ""
-#: rfc2131.c:1073
+#: rfc2131.c:1121
msgid "lease not found"
msgstr ""
-#: rfc2131.c:1106
+#: rfc2131.c:1154
msgid "address not available"
msgstr ""
-#: rfc2131.c:1117
+#: rfc2131.c:1165
msgid "static lease available"
msgstr ""
-#: rfc2131.c:1121
+#: rfc2131.c:1169
msgid "address reserved"
msgstr ""
-#: rfc2131.c:1129
+#: rfc2131.c:1177
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1710
+#: rfc2131.c:1746
#, c-format
msgid "%u tags: %s"
msgstr ""
-#: rfc2131.c:1723
+#: rfc2131.c:1774
#, c-format
msgid "%u bootfile name: %s"
msgstr ""
-#: rfc2131.c:1732
+#: rfc2131.c:1783
#, c-format
msgid "%u server name: %s"
msgstr ""
-#: rfc2131.c:1746
+#: rfc2131.c:1791
#, c-format
msgid "%u next server: %s"
msgstr ""
-#: rfc2131.c:1749
+#: rfc2131.c:1794
#, c-format
msgid "%u broadcast response"
msgstr ""
-#: rfc2131.c:1812
+#: rfc2131.c:1857
#, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr ""
-#: rfc2131.c:2058
+#: rfc2131.c:2097
msgid "PXE menu too large"
msgstr ""
-#: rfc2131.c:2171
+#: rfc2131.c:2253
+#, c-format
+msgid "Ignoring duplicate dhcp-option %d"
+msgstr ""
+
+#: rfc2131.c:2257
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:2189
+#: rfc2131.c:2275
#, c-format
msgid "%u requested options: %s"
msgstr ""
-#: rfc2131.c:2456
+#: rfc2131.c:2550
#, c-format
msgid "cannot send RFC3925 option: too many options for enterprise number %d"
msgstr ""
@@ -1401,55 +1431,60 @@ msgstr ""
msgid "could not register a DBus message handler"
msgstr ""
-#: bpf.c:217
+#: bpf.c:224
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr ""
-#: bpf.c:245
+#: bpf.c:252
#, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr ""
-#: tftp.c:281
+#: tftp.c:286
msgid "unable to get free port for TFTP"
msgstr ""
-#: tftp.c:296
+#: tftp.c:301
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:406
+#: tftp.c:411
#, c-format
msgid "file %s not found"
msgstr ""
-#: tftp.c:522
+#: tftp.c:527
#, c-format
msgid "error %d %s received from %s"
msgstr ""
-#: tftp.c:554
+#: tftp.c:559
#, c-format
msgid "failed sending %s to %s"
msgstr ""
-#: tftp.c:568
+#: tftp.c:573
#, c-format
msgid "sent %s to %s"
msgstr ""
-#: log.c:177
+#: log.c:190
#, c-format
msgid "overflow: %d log entries lost"
msgstr ""
-#: log.c:254
+#: log.c:267
#, c-format
msgid "log failed: %s"
msgstr ""
-#: log.c:462
+#: log.c:471
msgid "FAILED to start up"
msgstr ""
+
+#: conntrack.c:65
+#, c-format
+msgid "Conntrack connection mark retrieval failed: %s"
+msgstr ""
diff --git a/po/ro.po b/po/ro.po
index 094da79..a3b6ba4 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -20,17 +20,17 @@ msgstr ""
msgid "failed to load names from %s: %s"
msgstr "încărcarea numelor din %s: %s a eşuat"
-#: cache.c:795 dhcp.c:865
+#: cache.c:795 dhcp.c:874
#, c-format
msgid "bad address at %s line %d"
msgstr "adresă greşită în %s, linia %d"
-#: cache.c:853 dhcp.c:881
+#: cache.c:853 dhcp.c:890
#, c-format
msgid "bad name at %s line %d"
msgstr "nume greşit în %s linia %d"
-#: cache.c:860 dhcp.c:956
+#: cache.c:860 dhcp.c:965
#, c-format
msgid "read %s - %d addresses"
msgstr "citesc %s - %d adrese"
@@ -39,32 +39,37 @@ msgstr "citesc %s - %d adrese"
msgid "cleared cache"
msgstr "memoria temporară a fost ştearsă"
-#: cache.c:960
+#: cache.c:934
+#, c-format
+msgid "No IPv4 address found for %s"
+msgstr ""
+
+#: cache.c:975
#, c-format
msgid "%s is a CNAME, not giving it to the DHCP lease of %s"
msgstr ""
-#: cache.c:966
+#: cache.c:981
#, c-format
msgid "not giving name %s to the DHCP lease of %s because the name exists in %s with address %s"
msgstr "nu pot da numele %s împrumutului de adresă DHCP a lui %s deoarece numeleexistă în %s cu adresa %s"
-#: cache.c:1039
+#: cache.c:1054
#, c-format
msgid "time %lu"
msgstr ""
-#: cache.c:1040
+#: cache.c:1055
#, fuzzy, c-format
msgid "cache size %d, %d/%d cache insertions re-used unexpired cache entries."
msgstr "cantitate de memorie temporară %d, %d/%d stocări temporare aureutilizat locaţii neexpirate."
-#: cache.c:1042
+#: cache.c:1057
#, c-format
msgid "queries forwarded %u, queries answered locally %u"
msgstr ""
-#: cache.c:1068
+#: cache.c:1083
#, c-format
msgid "server %s#%d: queries sent %u, retried or failed %u"
msgstr ""
@@ -79,7 +84,7 @@ msgstr "ascultarea pe socket a eşuat: %s"
msgid "failed to allocate memory"
msgstr "nu pot încărca %d bytes"
-#: util.c:227 option.c:573
+#: util.c:227 option.c:579
msgid "could not get memory"
msgstr "nu am putut aloca memorie"
@@ -93,469 +98,477 @@ msgstr "nu pot citi %s: %s"
msgid "failed to allocate %d bytes"
msgstr "nu pot încărca %d bytes"
-#: util.c:350
+#: util.c:358
#, c-format
msgid "infinite"
msgstr "infinit"
-#: option.c:244
+#: option.c:248
msgid "Specify local address(es) to listen on."
msgstr "Specificaţi adresele locale deservite."
-#: option.c:245
+#: option.c:249
msgid "Return ipaddr for all hosts in specified domains."
msgstr "Afişează adresele IP ale maşinilor în domeniul dat."
-#: option.c:246
+#: option.c:250
msgid "Fake reverse lookups for RFC1918 private address ranges."
msgstr "Simulează căutări după adresă pentru domenii de adresă private (RFC1918)."
-#: option.c:247
+#: option.c:251
msgid "Treat ipaddr as NXDOMAIN (defeats Verisign wildcard)."
msgstr "Interpretează adresa IP ca NXDOMAIN (împotriva manipulărilor Verisign)"
-#: option.c:248
+#: option.c:252
#, c-format
msgid "Specify the size of the cache in entries (defaults to %s)."
msgstr "Specifică mărimea înregistrărilor temporare (implicit e %s)."
-#: option.c:249
+#: option.c:253
#, c-format
msgid "Specify configuration file (defaults to %s)."
msgstr "Specifică fişier de configurare (implicit e %s)."
-#: option.c:250
+#: option.c:254
msgid "Do NOT fork into the background: run in debug mode."
msgstr "NU porneşte în fundal: rulează în modul depanare."
-#: option.c:251
+#: option.c:255
msgid "Do NOT forward queries with no domain part."
msgstr "NU înainta cererile ce nu conţin domeniu DNS."
-#: option.c:252
+#: option.c:256
msgid "Return self-pointing MX records for local hosts."
msgstr "Răspunde cu înregistrări MX spre el însuşi pentru maşini locale."
-#: option.c:253
+#: option.c:257
msgid "Expand simple names in /etc/hosts with domain-suffix."
msgstr "Adaugă numelor simple din /etc/hosts numele domeniului ca sufix."
-#: option.c:254
+#: option.c:258
msgid "Don't forward spurious DNS requests from Windows hosts."
msgstr "Nu inainta cereri DNS defecte provenite de la maşini Windows."
-#: option.c:255
+#: option.c:259
msgid "Enable DHCP in the range given with lease duration."
msgstr "Activează DHCP în domeniul dat cu durată limitată de împrumut."
-#: option.c:256
+#: option.c:260
#, c-format
msgid "Change to this group after startup (defaults to %s)."
msgstr "Rulează sub acest grup după pornire (implicit e %s)."
-#: option.c:257
+#: option.c:261
msgid "Set address or hostname for a specified machine."
msgstr "Schimbă adresa sau numele maşinii specificate."
-#: option.c:258
+#: option.c:262
#, fuzzy
msgid "Read DHCP host specs from file."
msgstr "nume MX invalid"
-#: option.c:259
+#: option.c:263
msgid "Read DHCP option specs from file."
msgstr ""
-#: option.c:260
+#: option.c:264
msgid "Evaluate conditional tag expression."
msgstr ""
-#: option.c:261
+#: option.c:265
#, c-format
msgid "Do NOT load %s file."
msgstr "Nu încarcă fişierul %s."
-#: option.c:262
+#: option.c:266
#, c-format
msgid "Specify a hosts file to be read in addition to %s."
msgstr "Specifică spre citire un fişier hosts adiţional la %s."
-#: option.c:263
+#: option.c:267
msgid "Specify interface(s) to listen on."
msgstr "Specifică interfeţele deservite."
-#: option.c:264
+#: option.c:268
msgid "Specify interface(s) NOT to listen on."
msgstr "Specifică interfeţele NE-deservite."
-#: option.c:265
+#: option.c:269
#, fuzzy
msgid "Map DHCP user class to tag."
msgstr "Leagă clasa de utilizator DHCP cu grup de opţiuni."
-#: option.c:266
+#: option.c:270
msgid "Map RFC3046 circuit-id to tag."
msgstr ""
-#: option.c:267
+#: option.c:271
msgid "Map RFC3046 remote-id to tag."
msgstr ""
-#: option.c:268
+#: option.c:272
msgid "Map RFC3993 subscriber-id to tag."
msgstr ""
-#: option.c:269
+#: option.c:273
#, fuzzy
msgid "Don't do DHCP for hosts with tag set."
msgstr "Nu furniza DHCP maşinilor din grupul de opţiuni."
-#: option.c:270
+#: option.c:274
#, fuzzy
msgid "Force broadcast replies for hosts with tag set."
msgstr "Nu furniza DHCP maşinilor din grupul de opţiuni."
-#: option.c:271
+#: option.c:275
msgid "Do NOT fork into the background, do NOT run in debug mode."
msgstr "NU porneşte în fundal, NU rulează în modul depanare."
-#: option.c:272
+#: option.c:276
msgid "Assume we are the only DHCP server on the local network."
msgstr "Presupune că suntem singurul server DHCP din reţeaua locală."
-#: option.c:273
+#: option.c:277
#, c-format
msgid "Specify where to store DHCP leases (defaults to %s)."
msgstr "Specifică fişierul de stocare a împrumuturilor DHCP (implicit e %s)."
-#: option.c:274
+#: option.c:278
msgid "Return MX records for local hosts."
msgstr "Răspunde cu întregistrări MX pentru maşini locale."
-#: option.c:275
+#: option.c:279
msgid "Specify an MX record."
msgstr "Specifică o înregistrare MX."
-#: option.c:276
+#: option.c:280
msgid "Specify BOOTP options to DHCP server."
msgstr "Specifică opţiuni BOOTP serverului DHCP."
-#: option.c:277
+#: option.c:281
#, c-format
msgid "Do NOT poll %s file, reload only on SIGHUP."
msgstr "Nu încărca fişierul %s, citeşte-l doar la SIGHUP."
-#: option.c:278
+#: option.c:282
msgid "Do NOT cache failed search results."
msgstr "NU memora rezultatele de căutare DNS eşuatată."
-#: option.c:279
+#: option.c:283
#, c-format
msgid "Use nameservers strictly in the order given in %s."
msgstr "Foloseşte servere DNS strict în ordinea dată în %s."
-#: option.c:280
+#: option.c:284
#, fuzzy
msgid "Specify options to be sent to DHCP clients."
msgstr "Configurează opţiuni în plusce trebuie trimise clienţilor DHCP."
-#: option.c:281
+#: option.c:285
msgid "DHCP option sent even if the client does not request it."
msgstr ""
-#: option.c:282
+#: option.c:286
msgid "Specify port to listen for DNS requests on (defaults to 53)."
msgstr "Specifică numărul portului pentru cereri DNS (implicit e 53)."
-#: option.c:283
+#: option.c:287
#, c-format
msgid "Maximum supported UDP packet size for EDNS.0 (defaults to %s)."
msgstr "Marimea maximă a pachetului UDP pentru EDNS.0 (implicit e %s)."
-#: option.c:284
+#: option.c:288
#, fuzzy
msgid "Log DNS queries."
msgstr "Înregistrează tranzacţiile."
-#: option.c:285
+#: option.c:289
#, fuzzy
msgid "Force the originating port for upstream DNS queries."
msgstr "Forţează acest port pentru datele ce pleacă."
-#: option.c:286
+#: option.c:290
msgid "Do NOT read resolv.conf."
msgstr "NU citi fişierul resolv.conf"
-#: option.c:287
+#: option.c:291
#, c-format
msgid "Specify path to resolv.conf (defaults to %s)."
msgstr "Specifică calea către resolv.conf (implicit e %s)."
-#: option.c:288
+#: option.c:292
msgid "Specify address(es) of upstream servers with optional domains."
msgstr "Specifică adresele server(elor) superioare cu domenii opţionale."
-#: option.c:289
+#: option.c:293
msgid "Never forward queries to specified domains."
msgstr "Nu înaintează cererile spre domeniile specificate."
-#: option.c:290
+#: option.c:294
msgid "Specify the domain to be assigned in DHCP leases."
msgstr "Specifică domeniul de transmis prin DHCP."
-#: option.c:291
+#: option.c:295
msgid "Specify default target in an MX record."
msgstr "Specifică o ţintă într-o înregistrare MX."
-#: option.c:292
+#: option.c:296
msgid "Specify time-to-live in seconds for replies from /etc/hosts."
msgstr "Specifică TTL în secunde pentru răspunsurile din /etc/hosts."
-#: option.c:293
+#: option.c:297
#, fuzzy
msgid "Specify time-to-live in seconds for negative caching."
msgstr "Specifică TTL în secunde pentru răspunsurile din /etc/hosts."
-#: option.c:294
+#: option.c:298
#, fuzzy
msgid "Specify time-to-live in seconds for maximum TTL to send to clients."
msgstr "Specifică TTL în secunde pentru răspunsurile din /etc/hosts."
-#: option.c:295
+#: option.c:299
#, c-format
msgid "Change to this user after startup. (defaults to %s)."
msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
-#: option.c:296
+#: option.c:300
#, fuzzy
msgid "Map DHCP vendor class to tag."
msgstr "Trimite opţiuni DHCP în funcţie de marca plăcii de reţea."
-#: option.c:297
+#: option.c:301
msgid "Display dnsmasq version and copyright information."
msgstr "Afişează versiunea dnsmasq şi drepturile de autor."
-#: option.c:298
+#: option.c:302
msgid "Translate IPv4 addresses from upstream servers."
msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
-#: option.c:299
+#: option.c:303
msgid "Specify a SRV record."
msgstr "Specifică o înregistrare SRV."
-#: option.c:300
+#: option.c:304
msgid "Display this message. Use --help dhcp for known DHCP options."
msgstr ""
-#: option.c:301
+#: option.c:305
#, fuzzy, c-format
msgid "Specify path of PID file (defaults to %s)."
msgstr "Specifică o cale pentru fişierul PID. (implicit %s)."
-#: option.c:302
+#: option.c:306
#, c-format
msgid "Specify maximum number of DHCP leases (defaults to %s)."
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
-#: option.c:303
+#: option.c:307
msgid "Answer DNS queries based on the interface a query was sent to."
msgstr "Răspunde cererilor DNS în funcţie de interfaţa pe care a venit cererea."
-#: option.c:304
+#: option.c:308
msgid "Specify TXT DNS record."
msgstr "Specifică o înregistrare TXT."
-#: option.c:305
+#: option.c:309
#, fuzzy
msgid "Specify PTR DNS record."
msgstr "Specifică o înregistrare TXT."
-#: option.c:306
+#: option.c:310
msgid "Give DNS name to IPv4 address of interface."
msgstr ""
-#: option.c:307
+#: option.c:311
msgid "Bind only to interfaces in use."
msgstr "Ascultă doar pe interfeţele active."
-#: option.c:308
+#: option.c:312
#, c-format
msgid "Read DHCP static host information from %s."
msgstr "Citeşte informaţii DHCP statice despre maşină din %s."
-#: option.c:309
+#: option.c:313
msgid "Enable the DBus interface for setting upstream servers, etc."
msgstr "Activeaza interfaţa DBus pentru configurarea serverelor superioare."
-#: option.c:310
+#: option.c:314
msgid "Do not provide DHCP on this interface, only provide DNS."
msgstr "Nu activează DHCP ci doar DNS pe această interfaţă."
-#: option.c:311
+#: option.c:315
msgid "Enable dynamic address allocation for bootp."
msgstr "Activează alocarea dinamică a adreselor pentru BOOTP."
-#: option.c:312
+#: option.c:316
#, fuzzy
msgid "Map MAC address (with wildcards) to option set."
msgstr "Trimite opţiuni DHCP în funcţie de marca plăcii de reţea."
-#: option.c:313
+#: option.c:317
msgid "Treat DHCP requests on aliases as arriving from interface."
msgstr ""
-#: option.c:314
+#: option.c:318
msgid "Disable ICMP echo address checking in the DHCP server."
msgstr ""
-#: option.c:315
+#: option.c:319
msgid "Script to run on DHCP lease creation and destruction."
msgstr ""
-#: option.c:316
+#: option.c:320
msgid "Read configuration from all the files in this directory."
msgstr ""
-#: option.c:317
+#: option.c:321
#, fuzzy
msgid "Log to this syslog facility or file. (defaults to DAEMON)"
msgstr "Rulează sub acest utilizator după pornire. (implicit e %s)."
-#: option.c:318
+#: option.c:322
msgid "Do not use leasefile."
msgstr ""
-#: option.c:319
+#: option.c:323
#, fuzzy, c-format
msgid "Maximum number of concurrent DNS queries. (defaults to %s)"
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
-#: option.c:320
+#: option.c:324
#, c-format
msgid "Clear DNS cache when reloading %s."
msgstr ""
-#: option.c:321
+#: option.c:325
msgid "Ignore hostnames provided by DHCP clients."
msgstr ""
-#: option.c:322
+#: option.c:326
msgid "Do NOT reuse filename and server fields for extra DHCP options."
msgstr ""
-#: option.c:323
+#: option.c:327
msgid "Enable integrated read-only TFTP server."
msgstr ""
-#: option.c:324
+#: option.c:328
msgid "Export files by TFTP only from the specified subtree."
msgstr ""
-#: option.c:325
+#: option.c:329
msgid "Add client IP address to tftp-root."
msgstr ""
-#: option.c:326
+#: option.c:330
msgid "Allow access only to files owned by the user running dnsmasq."
msgstr ""
-#: option.c:327
+#: option.c:331
#, fuzzy, c-format
msgid "Maximum number of conncurrent TFTP transfers (defaults to %s)."
msgstr "Specifică numărul maxim de împrumuturi DHCP (implicit %s)."
-#: option.c:328
+#: option.c:332
msgid "Disable the TFTP blocksize extension."
msgstr ""
-#: option.c:329
+#: option.c:333
msgid "Ephemeral port range for use by TFTP transfers."
msgstr ""
-#: option.c:330
+#: option.c:334
msgid "Extra logging for DHCP."
msgstr ""
-#: option.c:331
+#: option.c:335
msgid "Enable async. logging; optionally set queue length."
msgstr ""
-#: option.c:332
+#: option.c:336
msgid "Stop DNS rebinding. Filter private IP ranges when resolving."
msgstr ""
-#: option.c:333
+#: option.c:337
msgid "Allow rebinding of 127.0.0.0/8, for RBL servers."
msgstr ""
-#: option.c:334
+#: option.c:338
msgid "Inhibit DNS-rebind protection on this domain."
msgstr ""
-#: option.c:335
+#: option.c:339
msgid "Always perform DNS queries to all servers."
msgstr ""
-#: option.c:336
+#: option.c:340
msgid "Set tag if client includes matching option in request."
msgstr ""
-#: option.c:337
+#: option.c:341
msgid "Use alternative ports for DHCP."
msgstr ""
-#: option.c:338
+#: option.c:342
msgid "Run lease-change script as this user."
msgstr ""
-#: option.c:339
+#: option.c:343
#, fuzzy
msgid "Specify NAPTR DNS record."
msgstr "Specifică o înregistrare TXT."
-#: option.c:340
+#: option.c:344
msgid "Specify lowest port available for DNS query transmission."
msgstr ""
-#: option.c:341
+#: option.c:345
msgid "Use only fully qualified domain names for DHCP clients."
msgstr ""
-#: option.c:342
+#: option.c:346
msgid "Generate hostnames based on MAC address for nameless clients."
msgstr ""
-#: option.c:343
+#: option.c:347
msgid "Use these DHCP relays as full proxies."
msgstr ""
-#: option.c:344
-msgid "Specify alias name for LOCAL DNS name."
-msgstr ""
-
-#: option.c:345
-#, fuzzy
-msgid "Prompt to send to PXE clients."
-msgstr "Configurează opţiuni în plusce trebuie trimise clienţilor DHCP."
-
-#: option.c:346
-msgid "Boot service for PXE menu."
-msgstr ""
-
-#: option.c:347
-msgid "Check configuration syntax."
-msgstr ""
-
#: option.c:348
-msgid "Add requestor's MAC address to forwarded DNS queries"
+msgid "Specify alias name for LOCAL DNS name."
msgstr ""
#: option.c:349
#, fuzzy
-msgid "Proxy DNSSEC validation results from upstream nameservers"
+msgid "Prompt to send to PXE clients."
+msgstr "Configurează opţiuni în plusce trebuie trimise clienţilor DHCP."
+
+#: option.c:350
+msgid "Boot service for PXE menu."
+msgstr ""
+
+#: option.c:351
+msgid "Check configuration syntax."
+msgstr ""
+
+#: option.c:352
+msgid "Add requestor's MAC address to forwarded DNS queries."
+msgstr ""
+
+#: option.c:353
+#, fuzzy
+msgid "Proxy DNSSEC validation results from upstream nameservers."
msgstr "Traduce adresele IPv4 de la serverele DNS superioare."
-#: option.c:638
+#: option.c:354
+msgid "Attempt to allocate sequential IP addresses to DHCP clients."
+msgstr ""
+
+#: option.c:355
+msgid "Copy connection-track mark from queries to upstream connections."
+msgstr ""
+
+#: option.c:644
#, c-format
msgid ""
"Usage: dnsmasq [options]\n"
@@ -564,238 +577,242 @@ msgstr ""
"Utilizare: dnsmasq [opţiuni]\n"
"\n"
-#: option.c:640
+#: option.c:646
#, c-format
msgid "Use short options only on the command line.\n"
msgstr "Folosiţi opţiunile prescurtate doar în linie de comandă.\n"
-#: option.c:642
+#: option.c:648
#, fuzzy, c-format
msgid "Valid options are:\n"
msgstr "Opţiunile valide sunt:\n"
-#: option.c:683
+#: option.c:689
#, c-format
msgid "Known DHCP options:\n"
msgstr ""
-#: option.c:798
+#: option.c:804
msgid "bad dhcp-option"
msgstr "dhcp-option invalid"
-#: option.c:860
+#: option.c:866
#, fuzzy
msgid "bad IP address"
msgstr "citesc %s - %d adrese"
-#: option.c:968
+#: option.c:974
msgid "bad domain in dhcp-option"
msgstr "domeniu DNS invalid în declaraţia dhcp-option"
-#: option.c:1034
+#: option.c:1040
msgid "dhcp-option too long"
msgstr "declararea dhcp-option este prea lungă"
-#: option.c:1043
+#: option.c:1049
msgid "illegal dhcp-match"
msgstr ""
-#: option.c:1087
+#: option.c:1093
msgid "illegal repeated flag"
msgstr ""
-#: option.c:1095
+#: option.c:1101
msgid "illegal repeated keyword"
msgstr ""
-#: option.c:1147 option.c:3030
+#: option.c:1153 option.c:3062
#, fuzzy, c-format
msgid "cannot access directory %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:1178 tftp.c:460
+#: option.c:1184 tftp.c:465
#, fuzzy, c-format
msgid "cannot access %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:1207
+#: option.c:1213
msgid "setting log facility is not possible under Android"
msgstr ""
-#: option.c:1216
+#: option.c:1222
msgid "bad log facility"
msgstr ""
-#: option.c:1265
+#: option.c:1271
msgid "bad MX preference"
msgstr "preferinţă MX invalidă"
-#: option.c:1270
+#: option.c:1276
msgid "bad MX name"
msgstr "nume MX invalid"
-#: option.c:1284
+#: option.c:1290
msgid "bad MX target"
msgstr "ţintă MX invalidă"
-#: option.c:1294
+#: option.c:1300
msgid "cannot run scripts under uClinux"
msgstr ""
-#: option.c:1296
+#: option.c:1302
msgid "recompile with HAVE_SCRIPT defined to enable lease-change scripts"
msgstr ""
-#: option.c:1597 option.c:1601
+#: option.c:1607 option.c:1611
msgid "bad port"
msgstr "port invalid"
-#: option.c:1620 option.c:1645
+#: option.c:1634 option.c:1665
msgid "interface binding not supported"
msgstr ""
-#: option.c:1791
-#, fuzzy
-msgid "bad port range"
-msgstr "port invalid"
-
-#: option.c:1808
-msgid "bad bridge-interface"
-msgstr ""
-
-#: option.c:1850
-msgid "bad dhcp-range"
-msgstr "dhcp-range invalid"
-
-#: option.c:1878
-msgid "only one tag allowed"
-msgstr ""
-
-#: option.c:1925
-msgid "inconsistent DHCP range"
-msgstr "domeniu DHCP inconsistent"
-
-#: option.c:2019 option.c:2045
-#, fuzzy
-msgid "bad hex constant"
-msgstr "dhcp-host invalid"
-
-#: option.c:2107
-#, fuzzy
-msgid "bad DHCP host name"
-msgstr "nume MX invalid"
-
-#: option.c:2188
-#, fuzzy
-msgid "bad tag-if"
-msgstr "ţintă MX invalidă"
-
-#: option.c:2467 option.c:2752
-msgid "invalid port number"
-msgstr "număr de port invalid"
-
-#: option.c:2529
-#, fuzzy
-msgid "bad dhcp-proxy address"
-msgstr "citesc %s - %d adrese"
-
-#: option.c:2569
-#, fuzzy
-msgid "invalid alias range"
-msgstr "pondere invalidă"
-
-#: option.c:2582
+#: option.c:1645 option.c:2614
#, fuzzy
msgid "bad interface name"
msgstr "nume MX invalid"
-#: option.c:2607
+#: option.c:1810
+#, fuzzy
+msgid "bad port range"
+msgstr "port invalid"
+
+#: option.c:1827
+msgid "bad bridge-interface"
+msgstr ""
+
+#: option.c:1870
+msgid "bad dhcp-range"
+msgstr "dhcp-range invalid"
+
+#: option.c:1898
+msgid "only one tag allowed"
+msgstr ""
+
+#: option.c:1945
+msgid "inconsistent DHCP range"
+msgstr "domeniu DHCP inconsistent"
+
+#: option.c:2039 option.c:2067
+#, fuzzy
+msgid "bad hex constant"
+msgstr "dhcp-host invalid"
+
+#: option.c:2061
+msgid "cannot match tags in --dhcp-host"
+msgstr ""
+
+#: option.c:2129
+#, fuzzy
+msgid "bad DHCP host name"
+msgstr "nume MX invalid"
+
+#: option.c:2210
+#, fuzzy
+msgid "bad tag-if"
+msgstr "ţintă MX invalidă"
+
+#: option.c:2499 option.c:2784
+msgid "invalid port number"
+msgstr "număr de port invalid"
+
+#: option.c:2561
+#, fuzzy
+msgid "bad dhcp-proxy address"
+msgstr "citesc %s - %d adrese"
+
+#: option.c:2601
+#, fuzzy
+msgid "invalid alias range"
+msgstr "pondere invalidă"
+
+#: option.c:2639
msgid "bad CNAME"
msgstr ""
-#: option.c:2612
+#: option.c:2644
msgid "duplicate CNAME"
msgstr ""
-#: option.c:2632
+#: option.c:2664
#, fuzzy
msgid "bad PTR record"
msgstr "înregistrare SRV invalidă"
-#: option.c:2663
+#: option.c:2695
#, fuzzy
msgid "bad NAPTR record"
msgstr "înregistrare SRV invalidă"
-#: option.c:2695
+#: option.c:2727
msgid "bad TXT record"
msgstr "înregistrare TXT invalidă"
-#: option.c:2738
+#: option.c:2770
msgid "bad SRV record"
msgstr "înregistrare SRV invalidă"
-#: option.c:2745
+#: option.c:2777
msgid "bad SRV target"
msgstr "ţintă SRV invalidă"
-#: option.c:2759
+#: option.c:2791
msgid "invalid priority"
msgstr "prioritate invalidă"
-#: option.c:2766
+#: option.c:2798
msgid "invalid weight"
msgstr "pondere invalidă"
-#: option.c:2785
+#: option.c:2817
msgid "unsupported option (check that dnsmasq was compiled with DHCP/TFTP/DBus support)"
msgstr ""
-#: option.c:2849
+#: option.c:2881
msgid "missing \""
msgstr "lipseşte \""
-#: option.c:2908
+#: option.c:2940
msgid "bad option"
msgstr "opţiune invalidă"
-#: option.c:2910
+#: option.c:2942
msgid "extraneous parameter"
msgstr "parametru nerecunoscut"
-#: option.c:2912
+#: option.c:2944
msgid "missing parameter"
msgstr "parametru lipsa"
-#: option.c:2916
+#: option.c:2948
msgid "error"
msgstr "eroare"
-#: option.c:2921
+#: option.c:2953
#, c-format
msgid "%s at line %d of %%s"
msgstr "%s la linia %d din %%s"
-#: option.c:2985 tftp.c:624
+#: option.c:3017 tftp.c:629
#, c-format
msgid "cannot read %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:3151 option.c:3187
+#: option.c:3183 option.c:3219
#, fuzzy, c-format
msgid "read %s"
msgstr "citesc %s"
-#: option.c:3239
+#: option.c:3271
msgid "junk found in command line"
msgstr ""
-#: option.c:3269
+#: option.c:3301
#, c-format
msgid "Dnsmasq version %s %s\n"
msgstr "dnsmasq versiunea %s %s\n"
-#: option.c:3270
+#: option.c:3302
#, c-format
msgid ""
"Compile time options %s\n"
@@ -804,71 +821,71 @@ msgstr ""
"Opţiuni cu care a fost compilat %s\n"
"\n"
-#: option.c:3271
+#: option.c:3303
#, c-format
msgid "This software comes with ABSOLUTELY NO WARRANTY.\n"
msgstr "Acest program vine FĂRĂ NICI O GARANŢIE.\n"
-#: option.c:3272
+#: option.c:3304
#, c-format
msgid "Dnsmasq is free software, and you are welcome to redistribute it\n"
msgstr "Dnsmasq este un program gratuit, sunteţi invitaţi să-l redistribuiţi\n"
-#: option.c:3273
+#: option.c:3305
#, fuzzy, c-format
msgid "under the terms of the GNU General Public License, version 2 or 3.\n"
msgstr "în termenii Licenţei publice generale GNU, versiunea 2.\n"
-#: option.c:3284
+#: option.c:3316
msgid "try --help"
msgstr ""
-#: option.c:3286
+#: option.c:3318
msgid "try -w"
msgstr ""
-#: option.c:3289
+#: option.c:3321
#, fuzzy, c-format
msgid "bad command line options: %s"
msgstr "opţiuni în linie de comandă invalide: %s."
-#: option.c:3330
+#: option.c:3362
#, c-format
msgid "cannot get host-name: %s"
msgstr "nu pot citi numele maşinii: %s"
-#: option.c:3358
+#: option.c:3390
msgid "only one resolv.conf file allowed in no-poll mode."
msgstr "se permite un singur fişier resolv.conf în modul no-poll"
-#: option.c:3368
+#: option.c:3400
msgid "must have exactly one resolv.conf to read domain from."
msgstr "am nevoie de un singur resolv.conf din care să citesc numele domeniului."
-#: option.c:3371 network.c:848 dhcp.c:814
+#: option.c:3403 network.c:848 dhcp.c:823
#, fuzzy, c-format
msgid "failed to read %s: %s"
msgstr "nu pot citi %s: %s"
-#: option.c:3388
+#: option.c:3420
#, c-format
msgid "no search directive found in %s"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
-#: option.c:3409
+#: option.c:3441
msgid "there must be a default domain when --dhcp-fqdn is set"
msgstr ""
-#: option.c:3413
+#: option.c:3445
msgid "syntax check OK"
msgstr ""
-#: forward.c:461
+#: forward.c:471
#, c-format
msgid "nameserver %s refused to do a recursive query"
msgstr "serverul DNS %s refuză interogările recursive"
-#: forward.c:489
+#: forward.c:499
#, c-format
msgid "possible DNS-rebind attack detected: %s"
msgstr ""
@@ -939,279 +956,288 @@ msgstr "folosim serverul DNS %s#%d"
msgid "using nameserver %s#%d"
msgstr "folosim serverul DNS %s#%d"
-#: dnsmasq.c:148
+#: dnsmasq.c:152
#, fuzzy
msgid "TFTP server not available: set HAVE_TFTP in src/config.h"
msgstr "DBus nu este disponibil: puneţi HAVE_DBUS in src/config.h"
-#: dnsmasq.c:153
+#: dnsmasq.c:157
+msgid "Cannot use --conntrack AND --query-port"
+msgstr ""
+
+#: dnsmasq.c:160
+#, fuzzy
+msgid "Conntrack support not available: set HAVE_CONNTRACK in src/config.h"
+msgstr "DBus nu este disponibil: puneţi HAVE_DBUS in src/config.h"
+
+#: dnsmasq.c:165
msgid "asychronous logging is not available under Solaris"
msgstr ""
-#: dnsmasq.c:158
+#: dnsmasq.c:170
msgid "asychronous logging is not available under Android"
msgstr ""
-#: dnsmasq.c:177
+#: dnsmasq.c:189
#, c-format
msgid "failed to find list of interfaces: %s"
msgstr "enumerarea interfeţelor a eşuat: %s"
-#: dnsmasq.c:185
+#: dnsmasq.c:197
#, c-format
msgid "unknown interface %s"
msgstr "interfaţă necunoscută %s"
-#: dnsmasq.c:191
+#: dnsmasq.c:203
#, c-format
msgid "no interface with address %s"
msgstr "nu exista interfaţă pentru adresa %s"
-#: dnsmasq.c:207 dnsmasq.c:678
+#: dnsmasq.c:219 dnsmasq.c:690
#, c-format
msgid "DBus error: %s"
msgstr "eroare DBus: %s"
-#: dnsmasq.c:210
+#: dnsmasq.c:222
msgid "DBus not available: set HAVE_DBUS in src/config.h"
msgstr "DBus nu este disponibil: puneţi HAVE_DBUS in src/config.h"
-#: dnsmasq.c:236
+#: dnsmasq.c:248
#, c-format
msgid "unknown user or group: %s"
msgstr ""
-#: dnsmasq.c:291
+#: dnsmasq.c:303
#, c-format
msgid "cannot chdir to filesystem root: %s"
msgstr ""
-#: dnsmasq.c:455
+#: dnsmasq.c:467
#, fuzzy, c-format
msgid "started, version %s DNS disabled"
msgstr "am pornit, versiunea %s memorie temporară dezactivată"
-#: dnsmasq.c:457
+#: dnsmasq.c:469
#, c-format
msgid "started, version %s cachesize %d"
msgstr "am ponit, versiunea %s memorie temporară %d"
-#: dnsmasq.c:459
+#: dnsmasq.c:471
#, c-format
msgid "started, version %s cache disabled"
msgstr "am pornit, versiunea %s memorie temporară dezactivată"
-#: dnsmasq.c:461
+#: dnsmasq.c:473
#, c-format
msgid "compile time options: %s"
msgstr "compilat cu opţiunile: %s"
-#: dnsmasq.c:467
+#: dnsmasq.c:479
msgid "DBus support enabled: connected to system bus"
msgstr "suportul DBus activ: sunt conectat la magistrala sistem"
-#: dnsmasq.c:469
+#: dnsmasq.c:481
msgid "DBus support enabled: bus connection pending"
msgstr "suportul DBus activ: aştept conexiunea la magistrală"
# for compatibility purposes the letters â, ă, ş, ţ and î can be written as their look-alike correspondent.
-#: dnsmasq.c:474
+#: dnsmasq.c:486
#, fuzzy, c-format
msgid "warning: failed to change owner of %s: %s"
msgstr "încărcarea numelor din %s: %s a eşuat"
-#: dnsmasq.c:478
+#: dnsmasq.c:490
msgid "setting --bind-interfaces option because of OS limitations"
msgstr "specific opţiunea --bind-interfaces din cauza limitărilor SO"
-#: dnsmasq.c:483
+#: dnsmasq.c:495
#, c-format
msgid "warning: interface %s does not currently exist"
msgstr "atenţie: interfaţa %s nu există momentan"
-#: dnsmasq.c:488
+#: dnsmasq.c:500
msgid "warning: ignoring resolv-file flag because no-resolv is set"
msgstr ""
-#: dnsmasq.c:491
+#: dnsmasq.c:503
#, fuzzy
msgid "warning: no upstream servers configured"
msgstr "configurăm serverele superioare prin Dbus"
-#: dnsmasq.c:495
+#: dnsmasq.c:507
#, c-format
msgid "asynchronous logging enabled, queue limit is %d messages"
msgstr ""
-#: dnsmasq.c:508
+#: dnsmasq.c:520
#, c-format
msgid "DHCP, static leases only on %.0s%s, lease time %s"
msgstr "DHCP, împrumuturi statice doar către %.0s%s, timpul reînoirii %s"
-#: dnsmasq.c:510
+#: dnsmasq.c:522
#, c-format
msgid "DHCP, proxy on subnet %.0s%s%.0s"
msgstr ""
-#: dnsmasq.c:511
+#: dnsmasq.c:523
#, c-format
msgid "DHCP, IP range %s -- %s, lease time %s"
msgstr "DHCP, domeniu IP %s -- %s, timpul reînoirii %s"
-#: dnsmasq.c:526
+#: dnsmasq.c:538
msgid "root is "
msgstr ""
-#: dnsmasq.c:526
+#: dnsmasq.c:538
#, fuzzy
msgid "enabled"
msgstr "dezactivat"
-#: dnsmasq.c:528
+#: dnsmasq.c:540
msgid "secure mode"
msgstr ""
-#: dnsmasq.c:554
+#: dnsmasq.c:566
#, c-format
msgid "restricting maximum simultaneous TFTP transfers to %d"
msgstr ""
-#: dnsmasq.c:680
+#: dnsmasq.c:692
msgid "connected to system DBus"
msgstr "magistrala sistem Dbus conectată"
-#: dnsmasq.c:775
+#: dnsmasq.c:787
#, c-format
msgid "cannot fork into background: %s"
msgstr ""
-#: dnsmasq.c:778
+#: dnsmasq.c:790
#, fuzzy, c-format
msgid "failed to create helper: %s"
msgstr "nu pot citi %s: %s"
-#: dnsmasq.c:781
+#: dnsmasq.c:793
#, c-format
msgid "setting capabilities failed: %s"
msgstr ""
# for compatibility purposes the letters â, ă, ş, ţ and î can be written as their look-alike correspondent.
-#: dnsmasq.c:785
+#: dnsmasq.c:797
#, fuzzy, c-format
msgid "failed to change user-id to %s: %s"
msgstr "încărcarea numelor din %s: %s a eşuat"
# for compatibility purposes the letters â, ă, ş, ţ and î can be written as their look-alike correspondent.
-#: dnsmasq.c:790
+#: dnsmasq.c:802
#, fuzzy, c-format
msgid "failed to change group-id to %s: %s"
msgstr "încărcarea numelor din %s: %s a eşuat"
-#: dnsmasq.c:793
+#: dnsmasq.c:805
#, fuzzy, c-format
msgid "failed to open pidfile %s: %s"
msgstr "nu pot citi %s: %s"
-#: dnsmasq.c:796
+#: dnsmasq.c:808
#, fuzzy, c-format
msgid "cannot open %s: %s"
msgstr "nu pot deschide %s:%s"
-#: dnsmasq.c:851
+#: dnsmasq.c:863
#, c-format
msgid "child process killed by signal %d"
msgstr ""
-#: dnsmasq.c:855
+#: dnsmasq.c:867
#, c-format
msgid "child process exited with status %d"
msgstr ""
-#: dnsmasq.c:859
+#: dnsmasq.c:871
#, fuzzy, c-format
msgid "failed to execute %s: %s"
msgstr "accesarea serverului %s a eşuat: %s"
-#: dnsmasq.c:903
+#: dnsmasq.c:915
msgid "exiting on receipt of SIGTERM"
msgstr "am primit SIGTERM, am terminat"
-#: dnsmasq.c:931
+#: dnsmasq.c:943
#, fuzzy, c-format
msgid "failed to access %s: %s"
msgstr "accesarea serverului %s a eşuat: %s"
-#: dnsmasq.c:961
+#: dnsmasq.c:973
#, c-format
msgid "reading %s"
msgstr "citesc %s"
-#: dnsmasq.c:972
+#: dnsmasq.c:984
#, fuzzy, c-format
msgid "no servers found in %s, will retry"
msgstr "nu s-a găsit nici un criteriu de căutare în %s"
-#: dhcp.c:40
+#: dhcp.c:39
#, c-format
msgid "cannot create DHCP socket: %s"
msgstr "nu pot creea socket DHCP: %s"
-#: dhcp.c:52
+#: dhcp.c:51
#, c-format
msgid "failed to set options on DHCP socket: %s"
msgstr "configurarea opţiunilor socketului DHCP a eşuat: %s"
-#: dhcp.c:65
+#: dhcp.c:64
#, fuzzy, c-format
msgid "failed to set SO_REUSE{ADDR|PORT} on DHCP socket: %s"
msgstr "configurarea SO_REUSEADDR pe socket-ul DHCP a eşuat: %s"
-#: dhcp.c:77
+#: dhcp.c:76
#, c-format
msgid "failed to bind DHCP server socket: %s"
msgstr "activarea socket-ului server-ului DHCP a eşuat: %s"
-#: dhcp.c:103
+#: dhcp.c:102
#, c-format
msgid "cannot create ICMP raw socket: %s."
msgstr "nu pot creea socket ICMP raw: %s."
-#: dhcp.c:281
+#: dhcp.c:278
#, c-format
msgid "DHCP packet received on %s which has no address"
msgstr ""
-#: dhcp.c:445
+#: dhcp.c:442
#, c-format
msgid "DHCP range %s -- %s is not consistent with netmask %s"
msgstr "domeniu DHCP %s -- %s nu este consistent cu masca de reţea %s"
-#: dhcp.c:852
+#: dhcp.c:861
#, c-format
msgid "bad line at %s line %d"
msgstr "linie invalidă în %s rândul %d"
-#: dhcp.c:895
+#: dhcp.c:904
#, c-format
msgid "ignoring %s line %d, duplicate name or IP address"
msgstr ""
-#: dhcp.c:978
+#: dhcp.c:987
#, c-format
msgid "duplicate IP address %s in dhcp-config directive."
msgstr "adresă IP duplicat %s în declaraţia dhcp-config."
-#: dhcp.c:981
+#: dhcp.c:990
#, fuzzy, c-format
msgid "duplicate IP address %s in %s."
msgstr "adresă IP duplicat %s în declaraţia dhcp-config."
-#: dhcp.c:1024
+#: dhcp.c:1033
#, c-format
msgid "%s has more than one address in hostsfile, using %s for DHCP"
msgstr ""
-#: dhcp.c:1029
+#: dhcp.c:1038
#, c-format
msgid "duplicate IP address %s (%s) in dhcp-config directive"
msgstr "adresă IP duplicat %s (%s) în declaraţia dhcp-config."
@@ -1240,178 +1266,183 @@ msgstr ""
msgid "failed to write %s: %s (retry in %us)"
msgstr "nu pot citi %s: %s"
-#: rfc2131.c:315
+#: rfc2131.c:342
#, c-format
msgid "no address range available for DHCP request %s %s"
msgstr "nici un domeniu de adrese disponibil pentru cererea DHCP %s %s"
-#: rfc2131.c:316
+#: rfc2131.c:343
msgid "with subnet selector"
msgstr "cu selectorul de subreţea"
-#: rfc2131.c:316
+#: rfc2131.c:343
msgid "via"
msgstr "prin"
-#: rfc2131.c:331
+#: rfc2131.c:355
#, fuzzy, c-format
msgid "%u available DHCP subnet: %s/%s"
msgstr "nici un domeniu de adrese disponibil pentru cererea DHCP %s %s"
-#: rfc2131.c:334
+#: rfc2131.c:358
#, c-format
msgid "%u available DHCP range: %s -- %s"
msgstr ""
-#: rfc2131.c:363
+#: rfc2131.c:387
msgid "disabled"
msgstr "dezactivat"
-#: rfc2131.c:404 rfc2131.c:916 rfc2131.c:1288
+#: rfc2131.c:428 rfc2131.c:945 rfc2131.c:1337
msgid "ignored"
msgstr "ignorat"
-#: rfc2131.c:419 rfc2131.c:1135
+#: rfc2131.c:443 rfc2131.c:1183
msgid "address in use"
msgstr "adresa este folosită"
-#: rfc2131.c:433 rfc2131.c:970
+#: rfc2131.c:457 rfc2131.c:999
msgid "no address available"
msgstr "nici o adresă disponibilă"
-#: rfc2131.c:440 rfc2131.c:1098
+#: rfc2131.c:464 rfc2131.c:1146
msgid "wrong network"
msgstr "reţea greşită"
-#: rfc2131.c:454
+#: rfc2131.c:479
msgid "no address configured"
msgstr "adresă lipsă"
-#: rfc2131.c:460 rfc2131.c:1148
+#: rfc2131.c:485 rfc2131.c:1196
msgid "no leases left"
msgstr "nu mai am de unde să împrumut"
-#: rfc2131.c:545
+#: rfc2131.c:570
#, c-format
msgid "%u client provides name: %s"
msgstr ""
-#: rfc2131.c:700
+#: rfc2131.c:725
#, fuzzy, c-format
msgid "%u vendor class: %s"
msgstr "eroare DBus: %s"
-#: rfc2131.c:702
+#: rfc2131.c:727
#, fuzzy, c-format
msgid "%u user class: %s"
msgstr "eroare DBus: %s"
-#: rfc2131.c:761
+#: rfc2131.c:786
msgid "PXE BIS not supported"
msgstr ""
-#: rfc2131.c:886
+#: rfc2131.c:915
#, fuzzy, c-format
msgid "disabling DHCP static address %s for %s"
msgstr "dezactivăm adresele DHCP statice %s"
-#: rfc2131.c:907
+#: rfc2131.c:936
msgid "unknown lease"
msgstr "împrumut necunoscut"
-#: rfc2131.c:939
+#: rfc2131.c:968
#, c-format
msgid "not using configured address %s because it is leased to %s"
msgstr ""
-#: rfc2131.c:949
+#: rfc2131.c:978
#, c-format
msgid "not using configured address %s because it is in use by the server or relay"
msgstr ""
-#: rfc2131.c:952
+#: rfc2131.c:981
#, c-format
msgid "not using configured address %s because it was previously declined"
msgstr ""
-#: rfc2131.c:968 rfc2131.c:1141
+#: rfc2131.c:997 rfc2131.c:1189
msgid "no unique-id"
msgstr ""
-#: rfc2131.c:1037
+#: rfc2131.c:1084
msgid "wrong server-ID"
msgstr ""
-#: rfc2131.c:1055
+#: rfc2131.c:1103
msgid "wrong address"
msgstr "adresă greşită"
-#: rfc2131.c:1073
+#: rfc2131.c:1121
msgid "lease not found"
msgstr "împrumutul nu a fost găsit"
-#: rfc2131.c:1106
+#: rfc2131.c:1154
msgid "address not available"
msgstr "adresă indisponibilă"
-#: rfc2131.c:1117
+#: rfc2131.c:1165
msgid "static lease available"
msgstr "împrumut static este disponibil"
-#: rfc2131.c:1121
+#: rfc2131.c:1169
msgid "address reserved"
msgstr "adresă rezervată"
-#: rfc2131.c:1129
+#: rfc2131.c:1177
#, c-format
msgid "abandoning lease to %s of %s"
msgstr ""
-#: rfc2131.c:1710
+#: rfc2131.c:1746
#, c-format
msgid "%u tags: %s"
msgstr ""
-#: rfc2131.c:1723
+#: rfc2131.c:1774
#, c-format
msgid "%u bootfile name: %s"
msgstr ""
-#: rfc2131.c:1732
+#: rfc2131.c:1783
#, fuzzy, c-format
msgid "%u server name: %s"
msgstr "eroare DBus: %s"
-#: rfc2131.c:1746
+#: rfc2131.c:1791
#, fuzzy, c-format
msgid "%u next server: %s"
msgstr "eroare DBus: %s"
-#: rfc2131.c:1749
+#: rfc2131.c:1794
#, c-format
msgid "%u broadcast response"
msgstr ""
-#: rfc2131.c:1812
+#: rfc2131.c:1857
#, fuzzy, c-format
msgid "cannot send DHCP/BOOTP option %d: no space left in packet"
msgstr "nu pot trimite opţiunea DHCP %d: nu mai este loc în pachet"
-#: rfc2131.c:2058
+#: rfc2131.c:2097
msgid "PXE menu too large"
msgstr ""
-#: rfc2131.c:2171
+#: rfc2131.c:2253
+#, c-format
+msgid "Ignoring duplicate dhcp-option %d"
+msgstr ""
+
+#: rfc2131.c:2257
#, c-format
msgid "Ignoring domain %s for DHCP host name %s"
msgstr ""
-#: rfc2131.c:2189
+#: rfc2131.c:2275
#, fuzzy, c-format
msgid "%u requested options: %s"
msgstr "compilat cu opţiunile: %s"
-#: rfc2131.c:2456
+#: rfc2131.c:2550
#, c-format
msgid "cannot send RFC3925 option: too many options for enterprise number %d"
msgstr ""
@@ -1438,59 +1469,64 @@ msgstr "configurăm serverele superioare prin Dbus"
msgid "could not register a DBus message handler"
msgstr "nu pot activa o interfaţă de mesaje DBus"
-#: bpf.c:217
+#: bpf.c:224
#, c-format
msgid "cannot create DHCP BPF socket: %s"
msgstr "nu pot creea socket DHCP BPF: %s"
-#: bpf.c:245
+#: bpf.c:252
#, fuzzy, c-format
msgid "DHCP request for unsupported hardware type (%d) received on %s"
msgstr "cerere DHCP pentru dispozitiv nesuportat (%d) recepţionată prin %s"
-#: tftp.c:281
+#: tftp.c:286
msgid "unable to get free port for TFTP"
msgstr ""
-#: tftp.c:296
+#: tftp.c:301
#, c-format
msgid "unsupported request from %s"
msgstr ""
-#: tftp.c:406
+#: tftp.c:411
#, fuzzy, c-format
msgid "file %s not found"
msgstr "împrumutul nu a fost găsit"
-#: tftp.c:522
+#: tftp.c:527
#, c-format
msgid "error %d %s received from %s"
msgstr ""
-#: tftp.c:554
+#: tftp.c:559
#, fuzzy, c-format
msgid "failed sending %s to %s"
msgstr "nu pot citi %s: %s"
-#: tftp.c:568
+#: tftp.c:573
#, c-format
msgid "sent %s to %s"
msgstr ""
-#: log.c:177
+#: log.c:190
#, c-format
msgid "overflow: %d log entries lost"
msgstr ""
-#: log.c:254
+#: log.c:267
#, c-format
msgid "log failed: %s"
msgstr ""
-#: log.c:462
+#: log.c:471
msgid "FAILED to start up"
msgstr "pornirea A EŞUAT"
+#: conntrack.c:65
+#, c-format
+msgid "Conntrack connection mark retrieval failed: %s"
+msgstr ""
+
#~ msgid "TXT record string too long"
#~ msgstr "şirul de caractere pentru înregistrarea TXT este prea lung"
diff --git a/setup.html b/setup.html
index 1183f3b..482ff5d 100644
--- a/setup.html
+++ b/setup.html
@@ -221,7 +221,7 @@ triggering dial-on-demand internet links.
Sending SIGHUP to the dnsmasq process will cause it to empty its cache and
then re-load /etc/hosts and /etc/resolv.conf.
Sending SIGUSR1 (killall -10 dnsmasq) to the dnsmasq process will
-cause to to write cache usage statisticss to the log, typically
+cause to write cache usage statisticss to the log, typically
/var/log/syslog or /var/log/messages.
The log-queries option tells dnsmasq to verbosely log the queries
it is handling and causes SIGUSR1 to trigger a complete dump of the
diff --git a/src/bpf.c b/src/bpf.c
index 9a77426..cffcf67 100644
--- a/src/bpf.c
+++ b/src/bpf.c
@@ -35,6 +35,13 @@ static struct iovec ifreq = {
#include
#include
+#ifndef SA_SIZE
+#define SA_SIZE(sa) \
+ ( (!(sa) || ((struct sockaddr *)(sa))->sa_len == 0) ? \
+ sizeof(long) : \
+ 1 + ( (((struct sockaddr *)(sa))->sa_len - 1) | (sizeof(long) - 1) ) )
+#endif
+
int arp_enumerate(void *parm, int (*callback)())
{
int mib[6];
diff --git a/src/cache.c b/src/cache.c
index 77c1972..11ccc0d 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -922,6 +922,21 @@ char *get_domain(struct in_addr addr)
}
#ifdef HAVE_DHCP
+struct in_addr a_record_from_hosts(char *name, time_t now)
+{
+ struct crec *crecp = NULL;
+ struct in_addr ret;
+
+ while ((crecp = cache_find_by_name(crecp, name, now, F_IPV4)))
+ if (crecp->flags & F_HOSTS)
+ return *(struct in_addr *)&crecp->addr;
+
+ my_syslog(MS_DHCP | LOG_WARNING, _("No IPv4 address found for %s"), name);
+
+ ret.s_addr = 0;
+ return ret;
+}
+
void cache_unhash_dhcp(void)
{
struct crec *cache, **up;
diff --git a/src/config.h b/src/config.h
index 7394253..a988770 100644
--- a/src/config.h
+++ b/src/config.h
@@ -14,7 +14,7 @@
along with this program. If not, see .
*/
-#define VERSION "2.57"
+#define VERSION "2.58"
#define FTABSIZ 150 /* max number of outstanding requests (default) */
#define MAX_PROCS 20 /* max no children for TCP requests */
@@ -134,6 +134,12 @@ HAVE_IDN
included when internationalisation support is built, using the
*-i18n makefile targets, even if HAVE_IDN is not explicitly set.
+HAVE_CONNTRACK
+ define this to include code which propogates conntrack marks from
+ incoming DNS queries to the corresponding upstream queries. This adds
+ a build-dependency on libnetfilter_conntrack, but the resulting binary will
+ still run happily on a kernel without conntrack support.
+
NOTES:
For Linux you should define
HAVE_LINUX_NETWORK
@@ -159,6 +165,7 @@ NOTES:
/* #define HAVE_BROKEN_RTC */
/* #define HAVE_DBUS */
/* #define HAVE_IDN */
+/* #define HAVE_CONNTRACK */
/* Allow TFTP to be disabled with COPTS=-DNO_TFTP */
#ifdef NO_TFTP
diff --git a/src/conntrack.c b/src/conntrack.c
new file mode 100644
index 0000000..4142c51
--- /dev/null
+++ b/src/conntrack.c
@@ -0,0 +1,90 @@
+/* dnsmasq is Copyright (c) 2000-2011 Simon Kelley
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; version 2 dated June, 1991, or
+ (at your option) version 3 dated 29 June, 2007.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+*/
+
+#include "dnsmasq.h"
+
+#ifdef HAVE_CONNTRACK
+
+#include
+
+static int gotit = 0; /* yuck */
+
+static int callback(enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data);
+
+int get_incoming_mark(union mysockaddr *peer_addr, struct all_addr *local_addr, int istcp, unsigned int *markp)
+{
+ struct nf_conntrack *ct;
+ struct nfct_handle *h;
+
+ gotit = 0;
+
+ if ((ct = nfct_new()))
+ {
+ nfct_set_attr_u8(ct, ATTR_L4PROTO, istcp ? IPPROTO_TCP : IPPROTO_UDP);
+ nfct_set_attr_u16(ct, ATTR_PORT_DST, htons(daemon->port));
+
+#ifdef HAVE_IPV6
+ if (peer_addr->sa.sa_family == AF_INET6)
+ {
+ nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET6);
+ nfct_set_attr(ct, ATTR_IPV6_SRC, peer_addr->in6.sin6_addr.s6_addr);
+ nfct_set_attr_u16(ct, ATTR_PORT_SRC, peer_addr->in6.sin6_port);
+ nfct_set_attr(ct, ATTR_IPV6_DST, local_addr->addr.addr6.s6_addr);
+ }
+ else
+#endif
+ {
+ nfct_set_attr_u8(ct, ATTR_L3PROTO, AF_INET);
+ nfct_set_attr_u32(ct, ATTR_IPV4_SRC, peer_addr->in.sin_addr.s_addr);
+ nfct_set_attr_u16(ct, ATTR_PORT_SRC, peer_addr->in.sin_port);
+ nfct_set_attr_u32(ct, ATTR_IPV4_DST, local_addr->addr.addr4.s_addr);
+ }
+
+
+ if ((h = nfct_open(CONNTRACK, 0)))
+ {
+ nfct_callback_register(h, NFCT_T_ALL, callback, (void *)markp);
+ if (nfct_query(h, NFCT_Q_GET, ct) == -1)
+ {
+ static int warned = 0;
+ if (!warned)
+ {
+ my_syslog(LOG_ERR, _("Conntrack connection mark retrieval failed: %s"), strerror(errno));
+ warned = 1;
+ }
+ }
+ nfct_close(h);
+ }
+ nfct_destroy(ct);
+ }
+
+ return gotit;
+}
+
+static int callback(enum nf_conntrack_msg_type type, struct nf_conntrack *ct, void *data)
+{
+ unsigned int *ret = (unsigned int *)data;
+ *ret = nfct_get_attr_u32(ct, ATTR_MARK);
+ (void)type; /* eliminate warning */
+ gotit = 1;
+
+ return NFCT_CB_CONTINUE;
+}
+
+#endif
+
+
+
diff --git a/src/dhcp.c b/src/dhcp.c
index 29ddf24..28a3dac 100644
--- a/src/dhcp.c
+++ b/src/dhcp.c
@@ -19,7 +19,6 @@
#ifdef HAVE_DHCP
struct iface_param {
- struct in_addr relay, primary;
struct dhcp_context *current;
int ind;
};
@@ -269,8 +268,6 @@ void dhcp_packet(time_t now, int pxe_fd)
for (context = daemon->dhcp; context; context = context->next)
context->current = context;
- parm.relay = mess->giaddr;
- parm.primary = iface_addr;
parm.current = NULL;
parm.ind = iface_index;
@@ -299,7 +296,7 @@ void dhcp_packet(time_t now, int pxe_fd)
return;
lease_prune(NULL, now); /* lose any expired leases */
iov.iov_len = dhcp_reply(parm.current, ifr.ifr_name, iface_index, (size_t)sz,
- now, unicast_dest, &is_inform, pxe_fd);
+ now, unicast_dest, &is_inform, pxe_fd, iface_addr);
lease_update_file(now);
lease_update_dns();
@@ -448,38 +445,27 @@ static int complete_context(struct in_addr local, int if_index,
context->netmask = netmask;
}
- if (context->netmask.s_addr)
+ if (context->netmask.s_addr != 0 &&
+ is_same_net(local, context->start, context->netmask) &&
+ is_same_net(local, context->end, context->netmask))
{
- if (is_same_net(local, context->start, context->netmask) &&
- is_same_net(local, context->end, context->netmask))
+ /* link it onto the current chain if we've not seen it before */
+ if (if_index == param->ind && context->current == context)
{
- /* link it onto the current chain if we've not seen it before */
- if (if_index == param->ind && context->current == context)
- {
- context->router = local;
- context->local = local;
- context->current = param->current;
- param->current = context;
- }
-
- if (!(context->flags & CONTEXT_BRDCAST))
- {
- if (is_same_net(broadcast, context->start, context->netmask))
- context->broadcast = broadcast;
- else
- context->broadcast.s_addr = context->start.s_addr | ~context->netmask.s_addr;
- }
- }
- else if (param->relay.s_addr && is_same_net(param->relay, context->start, context->netmask))
+ context->router = local;
+ context->local = local;
+ context->current = param->current;
+ param->current = context;
+ }
+
+ if (!(context->flags & CONTEXT_BRDCAST))
{
- context->router = param->relay;
- context->local = param->primary;
- /* fill in missing broadcast addresses for relayed ranges */
- if (!(context->flags & CONTEXT_BRDCAST))
+ if (is_same_net(broadcast, context->start, context->netmask))
+ context->broadcast = broadcast;
+ else
context->broadcast.s_addr = context->start.s_addr | ~context->netmask.s_addr;
}
-
- }
+ }
}
return 1;
@@ -505,7 +491,7 @@ struct dhcp_context *address_available(struct dhcp_context *context,
start = ntohl(tmp->start.s_addr);
end = ntohl(tmp->end.s_addr);
- if (!(tmp->flags & CONTEXT_STATIC) &&
+ if (!(tmp->flags & (CONTEXT_STATIC | CONTEXT_PROXY)) &&
addr >= start &&
addr <= end &&
match_netid(tmp->filter, netids, 1))
@@ -540,7 +526,8 @@ struct dhcp_context *narrow_context(struct dhcp_context *context,
if (!tmp)
for (tmp = context; tmp; tmp = tmp->current)
if (match_netid(tmp->filter, netids, 1) &&
- is_same_net(taddr, tmp->start, tmp->netmask))
+ is_same_net(taddr, tmp->start, tmp->netmask) &&
+ !(tmp->flags & CONTEXT_PROXY))
break;
}
@@ -626,16 +613,22 @@ int address_allocate(struct dhcp_context *context,
for (pass = 0; pass <= 1; pass++)
for (c = context; c; c = c->current)
- if (c->flags & CONTEXT_STATIC)
+ if (c->flags & (CONTEXT_STATIC | CONTEXT_PROXY))
continue;
else if (!match_netid(c->filter, netids, pass))
continue;
else
{
- /* pick a seed based on hwaddr then iterate until we find a free address. */
- start.s_addr = addr.s_addr =
- htonl(ntohl(c->start.s_addr) +
- ((j + c->addr_epoch) % (1 + ntohl(c->end.s_addr) - ntohl(c->start.s_addr))));
+ if (option_bool(OPT_CONSEC_ADDR))
+ /* seed is largest extant lease addr in this context */
+ start = lease_find_max_addr(c);
+ else
+ /* pick a seed based on hwaddr */
+ start.s_addr = htonl(ntohl(c->start.s_addr) +
+ ((j + c->addr_epoch) % (1 + ntohl(c->end.s_addr) - ntohl(c->start.s_addr))));
+
+ /* iterate until we find a free address. */
+ addr = start;
do {
/* eliminate addresses in use by the server. */
@@ -660,9 +653,6 @@ int address_allocate(struct dhcp_context *context,
*addrp = addr;
- if (option_bool(OPT_NO_PING))
- return 1;
-
/* check if we failed to ping addr sometime in the last
PING_CACHE_TIME seconds. If so, assume the same situation still exists.
This avoids problems when a stupid client bangs
@@ -672,33 +662,51 @@ int address_allocate(struct dhcp_context *context,
for (count = 0, r = daemon->ping_results; r; r = r->next)
if (difftime(now, r->time) > (float)PING_CACHE_TIME)
victim = r; /* old record */
- else if (++count == max || r->addr.s_addr == addr.s_addr)
- return 1;
-
- if (icmp_ping(addr))
- /* address in use: perturb address selection so that we are
- less likely to try this address again. */
- c->addr_epoch++;
- else
+ else
+ {
+ count++;
+ if (r->addr.s_addr == addr.s_addr)
+ {
+ /* consec-ip mode: we offered this address for another client
+ (different hash) recently, don't offer it to this one. */
+ if (option_bool(OPT_CONSEC_ADDR) && r->hash != j)
+ break;
+
+ return 1;
+ }
+ }
+
+ if (!r)
{
- /* at this point victim may hold an expired record */
- if (!victim)
+ if ((count < max) && !option_bool(OPT_NO_PING) && icmp_ping(addr))
{
- if ((victim = whine_malloc(sizeof(struct ping_result))))
+ /* address in use: perturb address selection so that we are
+ less likely to try this address again. */
+ if (!option_bool(OPT_CONSEC_ADDR))
+ c->addr_epoch++;
+ }
+ else
+ {
+ /* at this point victim may hold an expired record */
+ if (!victim)
{
- victim->next = daemon->ping_results;
- daemon->ping_results = victim;
+ if ((victim = whine_malloc(sizeof(struct ping_result))))
+ {
+ victim->next = daemon->ping_results;
+ daemon->ping_results = victim;
+ }
}
+
+ /* record that this address is OK for 30s
+ without more ping checks */
+ if (victim)
+ {
+ victim->addr = addr;
+ victim->time = now;
+ victim->hash = j;
+ }
+ return 1;
}
-
- /* record that this address is OK for 30s
- without more ping checks */
- if (victim)
- {
- victim->addr = addr;
- victim->time = now;
- }
- return 1;
}
}
@@ -709,6 +717,7 @@ int address_allocate(struct dhcp_context *context,
} while (addr.s_addr != start.s_addr);
}
+
return 0;
}
diff --git a/src/dns_protocol.h b/src/dns_protocol.h
index bc18e79..456a997 100644
--- a/src/dns_protocol.h
+++ b/src/dns_protocol.h
@@ -56,7 +56,7 @@ struct dns_header {
u16 id;
u8 hb3,hb4;
u16 qdcount,ancount,nscount,arcount;
-} ;
+};
#define HB3_QR 0x80
#define HB3_OPCODE 0x78
diff --git a/src/dnsmasq.c b/src/dnsmasq.c
index 827b0dc..821b7f0 100644
--- a/src/dnsmasq.c
+++ b/src/dnsmasq.c
@@ -40,7 +40,7 @@ static char *compile_opts =
#ifndef LOCALEDIR
"no-"
#endif
-"I18N "
+"i18n "
#ifndef HAVE_DHCP
"no-"
#endif
@@ -52,6 +52,10 @@ static char *compile_opts =
"no-"
#endif
"TFTP "
+#ifndef HAVE_CONNTRACK
+"no-"
+#endif
+"conntrack "
#if !defined(LOCALEDIR) && !defined(HAVE_IDN)
"no-"
#endif
@@ -148,6 +152,14 @@ int main (int argc, char **argv)
die(_("TFTP server not available: set HAVE_TFTP in src/config.h"), NULL, EC_BADCONF);
#endif
+#ifdef HAVE_CONNTRACK
+ if (option_bool(OPT_CONNTRACK) && (daemon->query_port != 0 || daemon->osport))
+ die (_("Cannot use --conntrack AND --query-port"), NULL, EC_BADCONF);
+#else
+ if (option_bool(OPT_CONNTRACK))
+ die(_("Conntrack support not available: set HAVE_CONNTRACK in src/config.h"), NULL, EC_BADCONF);
+#endif
+
#ifdef HAVE_SOLARIS_NETWORK
if (daemon->max_logs != 0)
die(_("asychronous logging is not available under Solaris"), NULL, EC_BADCONF);
@@ -1147,9 +1159,6 @@ static void check_dns_listeners(fd_set *set, time_t now)
unsigned char *buff;
struct server *s;
int flags;
- struct in_addr dst_addr_4;
-
- dst_addr_4.s_addr = 0;
#ifndef NO_FORK
/* Arrange for SIGALARM after CHILD_LIFETIME seconds to
@@ -1168,10 +1177,7 @@ static void check_dns_listeners(fd_set *set, time_t now)
if ((flags = fcntl(confd, F_GETFL, 0)) != -1)
fcntl(confd, F_SETFL, flags & ~O_NONBLOCK);
- if (listener->family == AF_INET)
- dst_addr_4 = iface->addr.in.sin_addr;
-
- buff = tcp_request(confd, now, dst_addr_4, iface->netmask);
+ buff = tcp_request(confd, now, &iface->addr, iface->netmask);
shutdown(confd, SHUT_RDWR);
close(confd);
diff --git a/src/dnsmasq.h b/src/dnsmasq.h
index a386a31..3bf7a44 100644
--- a/src/dnsmasq.h
+++ b/src/dnsmasq.h
@@ -202,7 +202,9 @@ struct event_desc {
#define OPT_NO_REBIND 31
#define OPT_ADD_MAC 32
#define OPT_DNSSEC 33
-#define OPT_LAST 34
+#define OPT_CONSEC_ADDR 34
+#define OPT_CONNTRACK 35
+#define OPT_LAST 36
/* extra flags for my_syslog, we use a couple of facilities since they are known
not to occupy the same bits as priorities, no matter how syslog.h is set up. */
@@ -309,7 +311,6 @@ struct crec {
#define F_RRNAME (1u<<17)
#define F_SERVER (1u<<18)
#define F_QUERY (1u<<19)
-#define F_NSRR (1u<<20)
/* struct sockaddr is not large enough to hold any address,
@@ -517,9 +518,10 @@ struct dhcp_opt {
#define DHOPT_HEX 512
#define DHOPT_VENDOR_MATCH 1024
#define DHOPT_RFC3925 2048
+#define DHOPT_TAGOK 4096
struct dhcp_boot {
- char *file, *sname;
+ char *file, *sname, *tftp_sname;
struct in_addr next_server;
struct dhcp_netid *netid;
struct dhcp_boot *next;
@@ -585,6 +587,7 @@ struct dhcp_context {
struct ping_result {
struct in_addr addr;
time_t time;
+ unsigned int hash;
struct ping_result *next;
};
@@ -742,6 +745,7 @@ struct crec *cache_insert(char *name, struct all_addr *addr,
time_t now, unsigned long ttl, unsigned short flags);
void cache_reload(void);
void cache_add_dhcp_entry(char *host_name, struct in_addr *host_address, time_t ttd);
+struct in_addr a_record_from_hosts(char *name, time_t now);
void cache_unhash_dhcp(void);
void dump_cache(time_t now);
char *cache_get_name(struct crec *crecp);
@@ -813,7 +817,7 @@ struct hostsfile *expand_filelist(struct hostsfile *list);
void reply_query(int fd, int family, time_t now);
void receive_query(struct listener *listen, time_t now);
unsigned char *tcp_request(int confd, time_t now,
- struct in_addr local_addr, struct in_addr netmask);
+ union mysockaddr *local_addr, struct in_addr netmask);
void server_gone(struct server *server);
struct frec *get_new_frec(time_t now, int *wait);
@@ -875,6 +879,7 @@ void lease_set_interface(struct dhcp_lease *lease, int interface);
struct dhcp_lease *lease_find_by_client(unsigned char *hwaddr, int hw_len, int hw_type,
unsigned char *clid, int clid_len);
struct dhcp_lease *lease_find_by_addr(struct in_addr addr);
+struct in_addr lease_find_max_addr(struct dhcp_context *context);
void lease_prune(struct dhcp_lease *target, time_t now);
void lease_update_from_configs(void);
int do_script_run(time_t now);
@@ -884,7 +889,7 @@ void rerun_scripts(void);
/* rfc2131.c */
#ifdef HAVE_DHCP
size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
- size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe_fd);
+ size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe_fd, struct in_addr fallback);
unsigned char *extended_hwaddr(int hwtype, int hwlen, unsigned char *hwaddr,
int clid_len, unsigned char *clid, int *len_out);
#endif
@@ -938,3 +943,9 @@ int helper_buf_empty(void);
void tftp_request(struct listener *listen, time_t now);
void check_tftp_listeners(fd_set *rset, time_t now);
#endif
+
+/* conntrack.c */
+#ifdef HAVE_CONNTRACK
+int get_incoming_mark(union mysockaddr *peer_addr, struct all_addr *local_addr,
+ int istcp, unsigned int *markp);
+#endif
diff --git a/src/forward.c b/src/forward.c
index 92bc6b0..bdf6bfb 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -207,10 +207,10 @@ static unsigned int search_servers(time_t now, struct all_addr **addrpp,
}
}
- if (flags == 0 && !(qtype & F_NSRR) &&
+ if (flags == 0 && !(qtype & F_QUERY) &&
option_bool(OPT_NODOTS_LOCAL) && !strchr(qdomain, '.') && namelen != 0)
- /* don't forward simple names, make exception for NS queries and empty name. */
- flags = F_NXDOMAIN;
+ /* don't forward A or AAAA queries for simple names, except the empty name */
+ flags = F_NOERR;
if (flags == F_NXDOMAIN && check_for_local_domain(qdomain, now))
flags = F_NOERR;
@@ -243,7 +243,7 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
unsigned int flags = 0;
unsigned int gotname = extract_request(header, plen, daemon->namebuff, NULL);
struct server *start = NULL;
-
+
/* RFC 4035: sect 4.6 para 2 */
header->hb4 &= ~HB4_AD;
@@ -366,6 +366,16 @@ static int forward_query(int udpfd, union mysockaddr *udpaddr,
daemon->rfd_save = forward->rfd4;
fd = forward->rfd4->fd;
}
+
+#ifdef HAVE_CONNTRACK
+ /* Copy connection mark of incoming query to outgoing connection. */
+ if (option_bool(OPT_CONNTRACK))
+ {
+ unsigned int mark;
+ if (get_incoming_mark(udpaddr, dst_addr, 0, &mark))
+ setsockopt(fd, SOL_SOCKET, SO_MARK, &mark, sizeof(unsigned int));
+ }
+#endif
}
if (sendto(fd, (char *)header, plen, 0,
@@ -797,7 +807,7 @@ void receive_query(struct listener *listen, time_t now)
about resources for debug mode, when the fork is suppressed: that's
done by the caller. */
unsigned char *tcp_request(int confd, time_t now,
- struct in_addr local_addr, struct in_addr netmask)
+ union mysockaddr *local_addr, struct in_addr netmask)
{
size_t size = 0;
int norebind = 0;
@@ -809,7 +819,13 @@ unsigned char *tcp_request(int confd, time_t now,
unsigned char *packet = whine_malloc(65536 + MAXDNAME + RRFIXEDSZ);
struct dns_header *header;
struct server *last_server;
+ struct in_addr dst_addr_4;
+ union mysockaddr peer_addr;
+ socklen_t peer_len = sizeof(union mysockaddr);
+ if (getpeername(confd, (struct sockaddr *)&peer_addr, &peer_len) == -1)
+ return packet;
+
while (1)
{
if (!packet ||
@@ -831,29 +847,28 @@ unsigned char *tcp_request(int confd, time_t now,
if ((gotname = extract_request(header, (unsigned int)size, daemon->namebuff, &qtype)))
{
- union mysockaddr peer_addr;
- socklen_t peer_len = sizeof(union mysockaddr);
+ char types[20];
- if (getpeername(confd, (struct sockaddr *)&peer_addr, &peer_len) != -1)
- {
- char types[20];
-
- querystr(types, qtype);
-
- if (peer_addr.sa.sa_family == AF_INET)
- log_query(F_QUERY | F_IPV4 | F_FORWARD, daemon->namebuff,
- (struct all_addr *)&peer_addr.in.sin_addr, types);
+ querystr(types, qtype);
+
+ if (peer_addr.sa.sa_family == AF_INET)
+ log_query(F_QUERY | F_IPV4 | F_FORWARD, daemon->namebuff,
+ (struct all_addr *)&peer_addr.in.sin_addr, types);
#ifdef HAVE_IPV6
- else
- log_query(F_QUERY | F_IPV6 | F_FORWARD, daemon->namebuff,
- (struct all_addr *)&peer_addr.in6.sin6_addr, types);
+ else
+ log_query(F_QUERY | F_IPV6 | F_FORWARD, daemon->namebuff,
+ (struct all_addr *)&peer_addr.in6.sin6_addr, types);
#endif
- }
}
+ if (local_addr->sa.sa_family == AF_INET)
+ dst_addr_4 = local_addr->in.sin_addr;
+ else
+ dst_addr_4.s_addr = 0;
+
/* m > 0 if answered from cache */
m = answer_request(header, ((char *) header) + 65536, (unsigned int)size,
- local_addr, netmask, now);
+ dst_addr_4, netmask, now);
/* Do this by steam now we're not in the select() loop */
check_log_writer(NULL);
@@ -866,14 +881,8 @@ unsigned char *tcp_request(int confd, time_t now,
char *domain = NULL;
if (option_bool(OPT_ADD_MAC))
- {
- union mysockaddr peer_addr;
- socklen_t peer_len = sizeof(union mysockaddr);
-
- if (getpeername(confd, (struct sockaddr *)&peer_addr, &peer_len) != -1)
- size = add_mac(header, size, ((char *) header) + 65536, &peer_addr);
- }
-
+ size = add_mac(header, size, ((char *) header) + 65536, &peer_addr);
+
if (gotname)
flags = search_servers(now, &addrp, gotname, daemon->namebuff, &type, &domain, &norebind);
@@ -907,18 +916,38 @@ unsigned char *tcp_request(int confd, time_t now,
if (type != (last_server->flags & SERV_TYPE) ||
(type == SERV_HAS_DOMAIN && !hostname_isequal(domain, last_server->domain)))
continue;
-
- if ((last_server->tcpfd == -1) &&
- (last_server->tcpfd = socket(last_server->addr.sa.sa_family, SOCK_STREAM, 0)) != -1 &&
- (!local_bind(last_server->tcpfd, &last_server->source_addr, last_server->interface, 1) ||
- connect(last_server->tcpfd, &last_server->addr.sa, sa_len(&last_server->addr)) == -1))
+
+ if (last_server->tcpfd == -1)
{
- close(last_server->tcpfd);
- last_server->tcpfd = -1;
+ if ((last_server->tcpfd = socket(last_server->addr.sa.sa_family, SOCK_STREAM, 0)) == -1)
+ continue;
+
+ if ((!local_bind(last_server->tcpfd, &last_server->source_addr, last_server->interface, 1) ||
+ connect(last_server->tcpfd, &last_server->addr.sa, sa_len(&last_server->addr)) == -1))
+ {
+ close(last_server->tcpfd);
+ last_server->tcpfd = -1;
+ continue;
+ }
+
+#ifdef HAVE_CONNTRACK
+ /* Copy connection mark of incoming query to outgoing connection. */
+ if (option_bool(OPT_CONNTRACK))
+ {
+ unsigned int mark;
+ struct all_addr local;
+#ifdef HAVE_IPV6
+ if (local_addr->sa.sa_family == AF_INET6)
+ local.addr.addr6 = local_addr->in6.sin6_addr;
+ else
+#endif
+ local.addr.addr4 = local_addr->in.sin_addr;
+
+ if (get_incoming_mark(&peer_addr, &local, 1, &mark))
+ setsockopt(last_server->tcpfd, SOL_SOCKET, SO_MARK, &mark, sizeof(unsigned int));
+ }
+#endif
}
-
- if (last_server->tcpfd == -1)
- continue;
c1 = size >> 8;
c2 = size;
diff --git a/src/lease.c b/src/lease.c
index cfa7543..0945495 100644
--- a/src/lease.c
+++ b/src/lease.c
@@ -323,6 +323,21 @@ struct dhcp_lease *lease_find_by_addr(struct in_addr addr)
return NULL;
}
+/* Find largest assigned address in context */
+struct in_addr lease_find_max_addr(struct dhcp_context *context)
+{
+ struct dhcp_lease *lease;
+ struct in_addr addr = context->start;
+
+ if (!(context->flags & (CONTEXT_STATIC | CONTEXT_PROXY)))
+ for (lease = leases; lease; lease = lease->next)
+ if (((unsigned)ntohl(lease->addr.s_addr)) > ((unsigned)ntohl(context->start.s_addr)) &&
+ ((unsigned)ntohl(lease->addr.s_addr)) <= ((unsigned)ntohl(context->end.s_addr)) &&
+ ((unsigned)ntohl(lease->addr.s_addr)) > ((unsigned)ntohl(addr.s_addr)))
+ addr = lease->addr;
+
+ return addr;
+}
struct dhcp_lease *lease_allocate(struct in_addr addr)
{
diff --git a/src/log.c b/src/log.c
index baaae7c..08ce62b 100644
--- a/src/log.c
+++ b/src/log.c
@@ -154,6 +154,19 @@ static void log_write(void)
while (entries)
{
+ /* The data in the payoad is written with a terminating zero character
+ and the length reflects this. For a stream connection we need to
+ send the zero as a record terminator, but this isn't done for a
+ datagram connection, so treat the length as one less than reality
+ to elide the zero. If we're logging to a file, turn the zero into
+ a newline, and leave the length alone. */
+ int len_adjust = 0;
+
+ if (log_to_file)
+ entries->payload[entries->offset + entries->length - 1] = '\n';
+ else if (connection_type == SOCK_DGRAM)
+ len_adjust = 1;
+
/* Avoid duplicates over a fork() */
if (entries->pid != getpid())
{
@@ -163,11 +176,11 @@ static void log_write(void)
connection_good = 1;
- if ((rc = write(log_fd, entries->payload + entries->offset, entries->length)) != -1)
+ if ((rc = write(log_fd, entries->payload + entries->offset, entries->length - len_adjust)) != -1)
{
entries->length -= rc;
entries->offset += rc;
- if (entries->length == 0)
+ if (entries->length == len_adjust)
{
free_entry();
if (entries_lost != 0)
@@ -366,10 +379,6 @@ void my_syslog(int priority, const char *format, ...)
entry->length = len > MAX_MESSAGE ? MAX_MESSAGE : len;
entry->offset = 0;
entry->pid = pid;
-
- /* replace terminator with \n */
- if (log_to_file)
- entry->payload[entry->length - 1] = '\n';
}
/* almost always, logging won't block, so try and write this now,
diff --git a/src/netlink.c b/src/netlink.c
index f6da7db..df3585f 100644
--- a/src/netlink.c
+++ b/src/netlink.c
@@ -222,7 +222,7 @@ int iface_enumerate(int family, void *parm, int (*callback)())
}
if (addrp)
- if (!((*callback)(addrp, ifa->ifa_index, ifa->ifa_index, parm)))
+ if (!((*callback)(addrp, ifa->ifa_scope, ifa->ifa_index, parm)))
return 0;
}
#endif
diff --git a/src/network.c b/src/network.c
index 7b2e905..fe5557a 100644
--- a/src/network.c
+++ b/src/network.c
@@ -896,20 +896,38 @@ int reload_servers(char *fname)
source_addr.in.sin_port = htons(daemon->query_port);
}
#ifdef HAVE_IPV6
- else if (inet_pton(AF_INET6, token, &addr.in6.sin6_addr) > 0)
- {
+ else
+ {
+ int scope_index = 0;
+ char *scope_id = strchr(token, '%');
+
+ if (scope_id)
+ {
+ *(scope_id++) = 0;
+ scope_index = if_nametoindex(scope_id);
+ }
+
+ if (inet_pton(AF_INET6, token, &addr.in6.sin6_addr) > 0)
+ {
#ifdef HAVE_SOCKADDR_SA_LEN
- source_addr.in6.sin6_len = addr.in6.sin6_len = sizeof(source_addr.in6);
+ source_addr.in6.sin6_len = addr.in6.sin6_len = sizeof(source_addr.in6);
#endif
- source_addr.in6.sin6_family = addr.in6.sin6_family = AF_INET6;
- addr.in6.sin6_port = htons(NAMESERVER_PORT);
- source_addr.in6.sin6_addr = in6addr_any;
- source_addr.in6.sin6_port = htons(daemon->query_port);
+ source_addr.in6.sin6_family = addr.in6.sin6_family = AF_INET6;
+ source_addr.in6.sin6_flowinfo = addr.in6.sin6_flowinfo = 0;
+ addr.in6.sin6_port = htons(NAMESERVER_PORT);
+ addr.in6.sin6_scope_id = scope_index;
+ source_addr.in6.sin6_addr = in6addr_any;
+ source_addr.in6.sin6_port = htons(daemon->query_port);
+ source_addr.in6.sin6_scope_id = 0;
+ }
+ else
+ continue;
}
-#endif /* IPV6 */
+#else /* IPV6 */
else
continue;
-
+#endif
+
if (old_servers)
{
serv = old_servers;
diff --git a/src/option.c b/src/option.c
index 4cee0a2..7e8f47a 100644
--- a/src/option.c
+++ b/src/option.c
@@ -110,6 +110,8 @@ struct myoption {
#define LOPT_LOC_REBND 299
#define LOPT_ADD_MAC 300
#define LOPT_DNSSEC 301
+#define LOPT_INCR_ADDR 302
+#define LOPT_CONNTRACK 303
#ifdef HAVE_GETOPT_LONG
static const struct option opts[] =
@@ -225,6 +227,8 @@ static const struct myoption opts[] =
{ "rebind-localhost-ok", 0, 0, LOPT_LOC_REBND },
{ "add-mac", 0, 0, LOPT_ADD_MAC },
{ "proxy-dnssec", 0, 0, LOPT_DNSSEC },
+ { "dhcp-sequential-ip", 0, 0, LOPT_INCR_ADDR },
+ { "conntrack", 0, 0, LOPT_CONNTRACK },
{ NULL, 0, 0, 0 }
};
@@ -345,8 +349,10 @@ static struct {
{ LOPT_PXE_PROMT, ARG_DUP, ",[]", gettext_noop("Prompt to send to PXE clients."), NULL },
{ LOPT_PXE_SERV, ARG_DUP, "", gettext_noop("Boot service for PXE menu."), NULL },
{ LOPT_TEST, 0, NULL, gettext_noop("Check configuration syntax."), NULL },
- { LOPT_ADD_MAC, OPT_ADD_MAC, NULL, gettext_noop("Add requestor's MAC address to forwarded DNS queries"), NULL },
- { LOPT_DNSSEC, OPT_DNSSEC, NULL, gettext_noop("Proxy DNSSEC validation results from upstream nameservers"), NULL },
+ { LOPT_ADD_MAC, OPT_ADD_MAC, NULL, gettext_noop("Add requestor's MAC address to forwarded DNS queries."), NULL },
+ { LOPT_DNSSEC, OPT_DNSSEC, NULL, gettext_noop("Proxy DNSSEC validation results from upstream nameservers."), NULL },
+ { LOPT_INCR_ADDR, OPT_CONSEC_ADDR, NULL, gettext_noop("Attempt to allocate sequential IP addresses to DHCP clients."), NULL },
+ { LOPT_CONNTRACK, OPT_CONNTRACK, NULL, gettext_noop("Copy connection-track mark from queries to upstream connections."), NULL },
{ 0, 0, NULL, NULL, NULL }
};
@@ -1590,6 +1596,10 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
{
int source_port = 0, serv_port = NAMESERVER_PORT;
char *portno, *source;
+#ifdef HAVE_IPV6
+ int scope_index = 0;
+ char *scope_id;
+#endif
if ((source = split_chr(arg, '@')) && /* is there a source. */
(portno = split_chr(source, '#')) &&
@@ -1600,6 +1610,10 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
!atoi_check16(portno, &serv_port))
problem = _("bad port");
+#ifdef HAVE_IPV6
+ scope_id = split_chr(arg, '%');
+#endif
+
if ((newlist->addr.in.sin_addr.s_addr = inet_addr(arg)) != (in_addr_t) -1)
{
newlist->addr.in.sin_port = htons(serv_port);
@@ -1627,16 +1641,22 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
#ifdef HAVE_IPV6
else if (inet_pton(AF_INET6, arg, &newlist->addr.in6.sin6_addr) > 0)
{
+ if (scope_id && (scope_index = if_nametoindex(scope_id)) == 0)
+ problem = _("bad interface name");
+
newlist->addr.in6.sin6_port = htons(serv_port);
+ newlist->addr.in6.sin6_scope_id = scope_index;
newlist->source_addr.in6.sin6_port = htons(source_port);
+ newlist->source_addr.in6.sin6_scope_id = 0;
newlist->addr.sa.sa_family = newlist->source_addr.sa.sa_family = AF_INET6;
+ newlist->addr.in6.sin6_flowinfo = newlist->source_addr.in6.sin6_flowinfo = 0;
#ifdef HAVE_SOCKADDR_SA_LEN
newlist->addr.in6.sin6_len = newlist->source_addr.in6.sin6_len = sizeof(newlist->addr.in6);
#endif
if (source)
{
- newlist->flags |= SERV_HAS_SOURCE;
- if (inet_pton(AF_INET6, source, &newlist->source_addr.in6.sin6_addr) == 0)
+ newlist->flags |= SERV_HAS_SOURCE;
+ if (inet_pton(AF_INET6, source, &newlist->source_addr.in6.sin6_addr) == 0)
{
#if defined(SO_BINDTODEVICE)
newlist->source_addr.in6.sin6_addr = in6addr_any;
@@ -1652,7 +1672,6 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
#endif
else
option = '?'; /* error */
-
}
serv = newlist;
@@ -1842,6 +1861,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
new->netmask.s_addr = 0;
new->broadcast.s_addr = 0;
new->router.s_addr = 0;
+ new->local.s_addr = 0;
new->netid.net = NULL;
new->filter = NULL;
new->flags = 0;
@@ -2037,7 +2057,9 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
strcpy(newtag->net, arg+4);
unhide_metas(newtag->net);
}
- else
+ else if (strstr(arg, "tag:") == arg)
+ problem = _("cannot match tags in --dhcp-host");
+ else
{
struct hwaddr_config *newhw = opt_malloc(sizeof(struct hwaddr_config));
if ((newhw->hwaddr_len = parse_hex(a[j], newhw->hwaddr, DHCP_CHADDR_MAX,
@@ -2218,7 +2240,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
option = '?';
else
{
- char *dhcp_file, *dhcp_sname = NULL;
+ char *dhcp_file, *dhcp_sname = NULL, *tftp_sname = NULL;
struct in_addr dhcp_next_server;
comma = split(arg);
dhcp_file = opt_string_alloc(arg);
@@ -2231,8 +2253,17 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
if (comma)
{
unhide_metas(comma);
- if ((dhcp_next_server.s_addr = inet_addr(comma)) == (in_addr_t)-1)
- option = '?';
+ if ((dhcp_next_server.s_addr = inet_addr(comma)) == (in_addr_t)-1) {
+
+ /*
+ * The user may have specified the tftp hostname here.
+ * save it so that it can be resolved/looked up during
+ * actual dhcp_reply().
+ */
+
+ tftp_sname = opt_string_alloc(comma);
+ dhcp_next_server.s_addr = 0;
+ }
}
}
if (option != '?')
@@ -2240,6 +2271,7 @@ static char *one_opt(int option, char *arg, char *gen_prob, int command_line)
struct dhcp_boot *new = opt_malloc(sizeof(struct dhcp_boot));
new->file = dhcp_file;
new->sname = dhcp_sname;
+ new->tftp_sname = tftp_sname;
new->next_server = dhcp_next_server;
new->netid = id;
new->next = daemon->boot_config;
diff --git a/src/rfc1035.c b/src/rfc1035.c
index 889c1f0..25cbeec 100644
--- a/src/rfc1035.c
+++ b/src/rfc1035.c
@@ -642,7 +642,6 @@ static int private_net(struct in_addr addr, int ban_localhost)
static unsigned char *do_doctor(unsigned char *p, int count, struct dns_header *header, size_t qlen, char *name)
{
int i, qtype, qclass, rdlen;
- unsigned long ttl;
for (i = count; i != 0; i--)
{
@@ -656,7 +655,7 @@ static unsigned char *do_doctor(unsigned char *p, int count, struct dns_header *
GETSHORT(qtype, p);
GETSHORT(qclass, p);
- GETLONG(ttl, p);
+ p += 4; /* ttl */
GETSHORT(rdlen, p);
if (qclass == C_IN && qtype == T_A)
@@ -1044,8 +1043,6 @@ unsigned int extract_request(struct dns_header *header, size_t qlen, char *name,
return F_IPV6;
if (qtype == T_ANY)
return F_IPV4 | F_IPV6;
- if (qtype == T_NS || qtype == T_SOA)
- return F_QUERY | F_NSRR;
}
return F_QUERY;
@@ -1101,12 +1098,17 @@ int check_for_local_domain(char *name, time_t now)
struct txt_record *txt;
struct interface_name *intr;
struct ptr_record *ptr;
-
- if ((crecp = cache_find_by_name(NULL, name, now, F_IPV4 | F_IPV6)) &&
+ struct naptr *naptr;
+
+ if ((crecp = cache_find_by_name(NULL, name, now, F_IPV4 | F_IPV6 | F_CNAME)) &&
(crecp->flags & (F_HOSTS | F_DHCP)))
return 1;
- for (mx = daemon->mxnames; mx; mx = mx->next)
+ for (naptr = daemon->naptr; naptr; naptr = naptr->next)
+ if (hostname_isequal(name, naptr->name))
+ return 1;
+
+ for (mx = daemon->mxnames; mx; mx = mx->next)
if (hostname_isequal(name, mx->name))
return 1;
@@ -1309,11 +1311,11 @@ size_t answer_request(struct dns_header *header, char *limit, size_t qlen,
if (find_pseudoheader(header, qlen, NULL, &pheader, &is_sign))
{
- unsigned short udpsz, ext_rcode, flags;
+ unsigned short udpsz, flags;
unsigned char *psave = pheader;
GETSHORT(udpsz, pheader);
- GETSHORT(ext_rcode, pheader);
+ pheader += 2; /* ext_rcode */
GETSHORT(flags, pheader);
sec_reqd = flags & 0x8000; /* do bit */
diff --git a/src/rfc2131.c b/src/rfc2131.c
index ed9af7f..b96b197 100644
--- a/src/rfc2131.c
+++ b/src/rfc2131.c
@@ -41,8 +41,8 @@ static void log_packet(char *type, void *addr, unsigned char *ext_mac,
int mac_len, char *interface, char *string, u32 xid);
static unsigned char *option_find(struct dhcp_packet *mess, size_t size, int opt_type, int minsize);
static unsigned char *option_find1(unsigned char *p, unsigned char *end, int opt, int minsize);
-static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *netid,
- unsigned char *agent_id, unsigned char *real_end);
+static void log_tags(struct dhcp_netid *netid, struct dhcp_packet *mess);
+static size_t dhcp_packet_size(struct dhcp_packet *mess, unsigned char *agent_id, unsigned char *real_end);
static void clear_packet(struct dhcp_packet *mess, unsigned char *end);
static void do_options(struct dhcp_context *context,
struct dhcp_packet *mess,
@@ -51,11 +51,12 @@ static void do_options(struct dhcp_context *context,
char *hostname,
char *domain, char *config_domain,
struct dhcp_netid *netid,
- struct in_addr subnet_addr,
+ struct in_addr subnet_addr,
unsigned char fqdn_flags,
int null_term, int pxearch,
unsigned char *uuid,
- int vendor_class_len);
+ int vendor_class_len,
+ time_t now);
static void match_vendor_opts(unsigned char *opt, struct dhcp_opt *dopt);
@@ -67,7 +68,7 @@ struct dhcp_boot *find_boot(struct dhcp_netid *netid);
size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
- size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe)
+ size_t sz, time_t now, int unicast_dest, int *is_inform, int pxe, struct in_addr fallback)
{
unsigned char *opt, *clid = NULL;
struct dhcp_lease *ltmp, *lease = NULL;
@@ -85,7 +86,7 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
unsigned int time;
struct dhcp_config *config;
struct dhcp_netid *netid, *tagif_netid;
- struct in_addr subnet_addr, fallback, override;
+ struct in_addr subnet_addr, override;
unsigned short fuzz = 0;
unsigned int mess_type = 0;
unsigned char fqdn_flags = 0;
@@ -297,17 +298,43 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
if (!context_new)
for (context_tmp = daemon->dhcp; context_tmp; context_tmp = context_tmp->next)
- if (context_tmp->netmask.s_addr &&
- is_same_net(addr, context_tmp->start, context_tmp->netmask) &&
- is_same_net(addr, context_tmp->end, context_tmp->netmask))
- {
- context_tmp->current = context_new;
- context_new = context_tmp;
- }
+ {
+ struct in_addr netmask = context_tmp->netmask;
+
+ /* guess the netmask for relayed networks */
+ if (!(context_tmp->flags & CONTEXT_NETMASK) && context_tmp->netmask.s_addr == 0)
+ {
+ if (IN_CLASSA(ntohl(context_tmp->start.s_addr)) && IN_CLASSA(ntohl(context_tmp->end.s_addr)))
+ netmask.s_addr = htonl(0xff000000);
+ else if (IN_CLASSB(ntohl(context_tmp->start.s_addr)) && IN_CLASSB(ntohl(context_tmp->end.s_addr)))
+ netmask.s_addr = htonl(0xffff0000);
+ else if (IN_CLASSC(ntohl(context_tmp->start.s_addr)) && IN_CLASSC(ntohl(context_tmp->end.s_addr)))
+ netmask.s_addr = htonl(0xffffff00);
+ }
+
+ /* This section fills in context mainly when a client which is on a remote (relayed)
+ network renews a lease without using the relay, after dnsmasq has restarted. */
+ if (netmask.s_addr != 0 &&
+ is_same_net(addr, context_tmp->start, netmask) &&
+ is_same_net(addr, context_tmp->end, netmask))
+ {
+ context_tmp->netmask = netmask;
+ if (context_tmp->local.s_addr == 0)
+ context_tmp->local = fallback;
+ if (context_tmp->router.s_addr == 0)
+ context_tmp->router = mess->giaddr;
+
+ /* fill in missing broadcast addresses for relayed ranges */
+ if (!(context_tmp->flags & CONTEXT_BRDCAST) && context_tmp->broadcast.s_addr == 0 )
+ context_tmp->broadcast.s_addr = context_tmp->start.s_addr | ~context_tmp->netmask.s_addr;
+
+ context_tmp->current = context_new;
+ context_new = context_tmp;
+ }
+ }
if (context_new || force)
- context = context_new;
-
+ context = context_new;
}
if (!context)
@@ -318,9 +345,6 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
return 0;
}
- /* keep _a_ local address available. */
- fallback = context->local;
-
if (option_bool(OPT_LOG_OPTS))
{
struct dhcp_context *context_tmp;
@@ -441,9 +465,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
else if (context->netid.net)
{
context->netid.next = netid;
- netid = &context->netid;
- tagif_netid = run_tag_if(netid);
+ tagif_netid = run_tag_if(&context->netid);
}
+
+ log_tags(tagif_netid, mess);
if (!message && !nailed)
{
@@ -474,13 +499,13 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
clear_packet(mess, end);
do_options(context, mess, end, NULL, hostname, get_domain(mess->yiaddr),
- domain, tagif_netid, subnet_addr, 0, 0, 0, NULL, 0);
+ domain, netid, subnet_addr, 0, 0, 0, NULL, 0, now);
}
}
log_packet("BOOTP", logaddr, mess->chaddr, mess->hlen, iface_name, message, mess->xid);
- return message ? 0 : dhcp_packet_size(mess, tagif_netid, agent_id, real_end);
+ return message ? 0 : dhcp_packet_size(mess, agent_id, real_end);
}
if ((opt = option_find(mess, sz, OPTION_CLIENT_FQDN, 4)))
@@ -795,7 +820,8 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
do_encap_opts(&opt71, OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, 0);
log_packet("PXE", &mess->yiaddr, emac, emac_len, iface_name, (char *)mess->file, mess->xid);
- return dhcp_packet_size(mess, tagif_netid, agent_id, real_end);
+ log_tags(tagif_netid, mess);
+ return dhcp_packet_size(mess, agent_id, real_end);
}
if ((opt = option_find(mess, sz, OPTION_ARCH, 2)))
@@ -829,8 +855,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
and set discovery_control = 8 */
if (boot)
{
- if (boot->next_server.s_addr)
+ if (boot->next_server.s_addr)
mess->siaddr = boot->next_server;
+ else if (boot->tftp_sname)
+ mess->siaddr = a_record_from_hosts(boot->tftp_sname, now);
if (boot->file)
strncpy((char *)mess->file, boot->file, sizeof(mess->file)-1);
@@ -844,7 +872,8 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
do_encap_opts(pxe_opts(pxearch, tagif_netid, context->local), OPTION_VENDOR_CLASS_OPT, DHOPT_VENDOR_MATCH, mess, end, 0);
log_packet("PXE", NULL, emac, emac_len, iface_name, ignore ? "proxy-ignored" : "proxy", mess->xid);
- return ignore ? 0 : dhcp_packet_size(mess, tagif_netid, agent_id, real_end);
+ log_tags(tagif_netid, mess);
+ return ignore ? 0 : dhcp_packet_size(mess, agent_id, real_end);
}
}
}
@@ -975,15 +1004,16 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
if (message || !(context = narrow_context(context, mess->yiaddr, tagif_netid)))
return 0;
- log_packet("DHCPOFFER" , &mess->yiaddr, emac, emac_len, iface_name, NULL, mess->xid);
-
if (context->netid.net)
{
context->netid.next = netid;
- netid = &context->netid;
- tagif_netid = run_tag_if(netid);
+ tagif_netid = run_tag_if(&context->netid);
}
-
+
+ log_tags(tagif_netid, mess);
+
+ log_packet("DHCPOFFER" , &mess->yiaddr, emac, emac_len, iface_name, NULL, mess->xid);
+
time = calc_time(context, config, option_find(mess, sz, OPTION_LEASE_TIME, 4));
clear_packet(mess, end);
option_put(mess, end, OPTION_MESSAGE_TYPE, 1, DHCPOFFER);
@@ -996,9 +1026,9 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
option_put(mess, end, OPTION_T2, 4, (time*7)/8);
}
do_options(context, mess, end, req_options, offer_hostname, get_domain(mess->yiaddr),
- domain, tagif_netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid, vendor_class_len);
+ domain, netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid, vendor_class_len, now);
- return dhcp_packet_size(mess, tagif_netid, agent_id, real_end);
+ return dhcp_packet_size(mess, agent_id, real_end);
case DHCPREQUEST:
if (ignore || have_config(config, CONFIG_DISABLE))
@@ -1029,12 +1059,30 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
if (!context)
{
- /* In auth mode, a REQUEST sent to the wrong server
- should be faulted, so that the client establishes
- communication with us, otherwise, silently ignore. */
- if (!option_bool(OPT_AUTHORITATIVE))
- return 0;
- message = _("wrong server-ID");
+ /* Handle very strange configs where clients have more than one route to the server.
+ If a clients idea of its server-id matches any of our DHCP interfaces, we let it pass.
+ Have to set override to make sure we echo back the correct server-id */
+ struct irec *intr;
+
+ enumerate_interfaces();
+
+ for (intr = daemon->interfaces; intr; intr = intr->next)
+ if (intr->addr.sa.sa_family == AF_INET &&
+ intr->addr.in.sin_addr.s_addr == option_addr(opt).s_addr &&
+ intr->tftp_ok)
+ break;
+
+ if (intr)
+ override = intr->addr.in.sin_addr;
+ else
+ {
+ /* In auth mode, a REQUEST sent to the wrong server
+ should be faulted, so that the client establishes
+ communication with us, otherwise, silently ignore. */
+ if (!option_bool(OPT_AUTHORITATIVE))
+ return 0;
+ message = _("wrong server-ID");
+ }
}
}
@@ -1173,9 +1221,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
if (context->netid.net)
{
context->netid.next = netid;
- netid = &context->netid;
- tagif_netid = run_tag_if(netid);
+ tagif_netid = run_tag_if( &context->netid);
}
+
+ log_tags(tagif_netid, mess);
#ifdef HAVE_SCRIPT
if (do_classes && daemon->lease_change_command)
@@ -1278,10 +1327,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
option_put(mess, end, OPTION_T2, 4, ((time/8)*7) - fuzz);
}
do_options(context, mess, end, req_options, hostname, get_domain(mess->yiaddr),
- domain, tagif_netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid, vendor_class_len);
+ domain, netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid, vendor_class_len, now);
}
- return dhcp_packet_size(mess, tagif_netid, agent_id, real_end);
+ return dhcp_packet_size(mess, agent_id, real_end);
case DHCPINFORM:
if (ignore || have_config(config, CONFIG_DISABLE))
@@ -1304,15 +1353,16 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
if (!hostname && (hostname = host_from_dns(mess->ciaddr)))
domain = get_domain(mess->ciaddr);
-
- log_packet("DHCPACK", &mess->ciaddr, emac, emac_len, iface_name, hostname, mess->xid);
if (context && context->netid.net)
{
context->netid.next = netid;
- netid = &context->netid;
- tagif_netid = run_tag_if(netid);
+ tagif_netid = run_tag_if( &context->netid);
}
+
+ log_tags(tagif_netid, mess);
+
+ log_packet("DHCPACK", &mess->ciaddr, emac, emac_len, iface_name, hostname, mess->xid);
if (lease)
{
@@ -1337,10 +1387,10 @@ size_t dhcp_reply(struct dhcp_context *context, char *iface_name, int int_index,
}
do_options(context, mess, end, req_options, hostname, get_domain(mess->ciaddr),
- domain, tagif_netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid, vendor_class_len);
+ domain, netid, subnet_addr, fqdn_flags, borken_opt, pxearch, uuid, vendor_class_len, now);
*is_inform = 1; /* handle reply differently */
- return dhcp_packet_size(mess, tagif_netid, agent_id, real_end);
+ return dhcp_packet_size(mess, agent_id, real_end);
}
return 0;
@@ -1432,7 +1482,7 @@ static struct in_addr server_id(struct dhcp_context *context, struct in_addr ove
{
if (override.s_addr != 0)
return override;
- else if (context)
+ else if (context && context->local.s_addr != 0)
return context->local;
else
return fallback;
@@ -1672,30 +1722,16 @@ static unsigned char *find_overload(struct dhcp_packet *mess)
return NULL;
}
-static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *netid,
- unsigned char *agent_id, unsigned char *real_end)
+static void log_tags(struct dhcp_netid *netid, struct dhcp_packet *mess)
{
- unsigned char *p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
- unsigned char *overload;
- size_t ret;
- struct dhcp_netid_list *id_list;
- struct dhcp_netid *n;
-
- /* move agent_id back down to the end of the packet */
- if (agent_id)
- {
- memmove(p, agent_id, real_end - agent_id);
- p += real_end - agent_id;
- memset(p, 0, real_end - p); /* in case of overlap */
- }
-
- /* We do logging too */
if (netid && option_bool(OPT_LOG_OPTS))
{
char *s = daemon->namebuff;
for (*s = 0; netid; netid = netid->next)
{
/* kill dupes. */
+ struct dhcp_netid *n;
+
for (n = netid->next; n; n = n->next)
if (strcmp(netid->net, n->net) == 0)
break;
@@ -1709,7 +1745,22 @@ static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *neti
}
my_syslog(MS_DHCP | LOG_INFO, _("%u tags: %s"), ntohl(mess->xid), s);
}
-
+}
+
+static size_t dhcp_packet_size(struct dhcp_packet *mess, unsigned char *agent_id, unsigned char *real_end)
+{
+ unsigned char *p = dhcp_skip_opts(&mess->options[0] + sizeof(u32));
+ unsigned char *overload;
+ size_t ret;
+
+ /* move agent_id back down to the end of the packet */
+ if (agent_id)
+ {
+ memmove(p, agent_id, real_end - agent_id);
+ p += real_end - agent_id;
+ memset(p, 0, real_end - p); /* in case of overlap */
+ }
+
/* add END options to the regions. */
overload = find_overload(mess);
@@ -1734,12 +1785,6 @@ static size_t dhcp_packet_size(struct dhcp_packet *mess, struct dhcp_netid *neti
*p++ = OPTION_END;
- for (id_list = daemon->force_broadcast; id_list; id_list = id_list->next)
- if ((!id_list->list) || match_netid(id_list->list, netid, 0))
- break;
- if (id_list)
- mess->flags |= htons(0x8000); /* force broadcast */
-
if (option_bool(OPT_LOG_OPTS))
{
if (mess->siaddr.s_addr != 0)
@@ -1889,20 +1934,14 @@ static int in_list(unsigned char *list, int opt)
return 0;
}
-static struct dhcp_opt *option_find2(struct dhcp_netid *netid, struct dhcp_opt *opts, int opt)
+static struct dhcp_opt *option_find2(int opt)
{
- struct dhcp_opt *tmp;
- for (tmp = opts; tmp; tmp = tmp->next)
- if (tmp->opt == opt && !(tmp->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925)))
- if (match_netid(tmp->netid, netid, 0))
- return tmp;
-
- /* No match, look for one without a netid */
- for (tmp = opts; tmp; tmp = tmp->next)
- if (tmp->opt == opt && !(tmp->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925)))
- if (match_netid(tmp->netid, netid, 1))
- return tmp;
-
+ struct dhcp_opt *opts;
+
+ for (opts = daemon->dhcp_opts; opts; opts = opts->next)
+ if (opts->opt == opt && (opts->flags & DHOPT_TAGOK))
+ return opts;
+
return NULL;
}
@@ -2157,7 +2196,8 @@ static void do_options(struct dhcp_context *context,
unsigned char fqdn_flags,
int null_term, int pxe_arch,
unsigned char *uuid,
- int vendor_class_len)
+ int vendor_class_len,
+ time_t now)
{
struct dhcp_opt *opt, *config_opts = daemon->dhcp_opts;
struct dhcp_boot *boot;
@@ -2166,7 +2206,53 @@ static void do_options(struct dhcp_context *context,
unsigned char f0 = 0, s0 = 0;
int done_file = 0, done_server = 0;
int done_vendor_class = 0;
+ struct dhcp_netid *tagif;
+ struct dhcp_netid_list *id_list;
+ /* flag options which are valid with the current tag set (sans context tags) */
+ tagif = run_tag_if(netid);
+ for (opt = config_opts; opt; opt = opt->next)
+ {
+ opt->flags &= ~DHOPT_TAGOK;
+ if (!(opt->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925)) &&
+ match_netid(opt->netid, tagif, 0))
+ opt->flags |= DHOPT_TAGOK;
+ }
+
+ /* now flag options which are valid, including the context tags,
+ otherwise valid options are inhibited if we found a higher priotity one above */
+ if (context && context->netid.net)
+ {
+ context->netid.next = netid;
+ tagif = run_tag_if(&context->netid);
+
+ for (opt = config_opts; opt; opt = opt->next)
+ if (!(opt->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925 | DHOPT_TAGOK)) &&
+ match_netid(opt->netid, tagif, 0))
+ {
+ struct dhcp_opt *tmp;
+ for (tmp = config_opts; tmp; tmp = tmp->next)
+ if (tmp->opt == opt->opt && opt->netid && (tmp->flags & DHOPT_TAGOK))
+ break;
+ if (!tmp)
+ opt->flags |= DHOPT_TAGOK;
+ }
+ }
+
+ /* now flag untagged options which are not overridden by tagged ones */
+ for (opt = config_opts; opt; opt = opt->next)
+ if (!(opt->flags & (DHOPT_ENCAPSULATE | DHOPT_VENDOR | DHOPT_RFC3925 | DHOPT_TAGOK)) && !opt->netid)
+ {
+ struct dhcp_opt *tmp;
+ for (tmp = config_opts; tmp; tmp = tmp->next)
+ if (tmp->opt == opt->opt && (tmp->flags & DHOPT_TAGOK))
+ break;
+ if (!tmp)
+ opt->flags |= DHOPT_TAGOK;
+ else if (!tmp->netid)
+ my_syslog(MS_DHCP | LOG_WARNING, _("Ignoring duplicate dhcp-option %d"), tmp->opt);
+ }
+
if (config_domain && (!domain || !hostname_isequal(domain, config_domain)))
my_syslog(MS_DHCP | LOG_WARNING, _("Ignoring domain %s for DHCP host name %s"), config_domain, hostname);
@@ -2191,6 +2277,12 @@ static void do_options(struct dhcp_context *context,
}
}
+ for (id_list = daemon->force_broadcast; id_list; id_list = id_list->next)
+ if ((!id_list->list) || match_netid(id_list->list, netid, 0))
+ break;
+ if (id_list)
+ mess->flags |= htons(0x8000); /* force broadcast */
+
if (context)
mess->siaddr = context->local;
@@ -2200,7 +2292,7 @@ static void do_options(struct dhcp_context *context,
provide an manual option to disable it.
Some PXE ROMs have bugs (surprise!) and need zero-terminated
names, so we always send those. */
- if ((boot = find_boot(netid)))
+ if ((boot = find_boot(tagif)))
{
if (boot->sname)
{
@@ -2222,8 +2314,10 @@ static void do_options(struct dhcp_context *context,
strncpy((char *)mess->file, boot->file, sizeof(mess->file)-1);
}
- if (boot->next_server.s_addr)
+ if (boot->next_server.s_addr)
mess->siaddr = boot->next_server;
+ else if (boot->tftp_sname)
+ mess->siaddr = a_record_from_hosts(boot->tftp_sname, now);
}
else
/* Use the values of the relevant options if no dhcp-boot given and
@@ -2232,20 +2326,20 @@ static void do_options(struct dhcp_context *context,
dhcp-optsfile. */
{
if ((!req_options || !in_list(req_options, OPTION_FILENAME)) &&
- (opt = option_find2(netid, config_opts, OPTION_FILENAME)) && !(opt->flags & DHOPT_FORCE))
+ (opt = option_find2(OPTION_FILENAME)) && !(opt->flags & DHOPT_FORCE))
{
strncpy((char *)mess->file, (char *)opt->val, sizeof(mess->file)-1);
done_file = 1;
}
if ((!req_options || !in_list(req_options, OPTION_SNAME)) &&
- (opt = option_find2(netid, config_opts, OPTION_SNAME)) && !(opt->flags & DHOPT_FORCE))
+ (opt = option_find2(OPTION_SNAME)) && !(opt->flags & DHOPT_FORCE))
{
strncpy((char *)mess->sname, (char *)opt->val, sizeof(mess->sname)-1);
done_server = 1;
}
- if ((opt = option_find2(netid, config_opts, OPTION_END)))
+ if ((opt = option_find2(OPTION_END)))
mess->siaddr.s_addr = ((struct in_addr *)opt->val)->s_addr;
}
@@ -2273,36 +2367,36 @@ static void do_options(struct dhcp_context *context,
/* replies to DHCPINFORM may not have a valid context */
if (context)
{
- if (!option_find2(netid, config_opts, OPTION_NETMASK))
+ if (!option_find2(OPTION_NETMASK))
option_put(mess, end, OPTION_NETMASK, INADDRSZ, ntohl(context->netmask.s_addr));
/* May not have a "guessed" broadcast address if we got no packets via a relay
from this net yet (ie just unicast renewals after a restart */
if (context->broadcast.s_addr &&
- !option_find2(netid, config_opts, OPTION_BROADCAST))
+ !option_find2(OPTION_BROADCAST))
option_put(mess, end, OPTION_BROADCAST, INADDRSZ, ntohl(context->broadcast.s_addr));
/* Same comments as broadcast apply, and also may not be able to get a sensible
default when using subnet select. User must configure by steam in that case. */
if (context->router.s_addr &&
in_list(req_options, OPTION_ROUTER) &&
- !option_find2(netid, config_opts, OPTION_ROUTER))
+ !option_find2(OPTION_ROUTER))
option_put(mess, end, OPTION_ROUTER, INADDRSZ, ntohl(context->router.s_addr));
if (in_list(req_options, OPTION_DNSSERVER) &&
- !option_find2(netid, config_opts, OPTION_DNSSERVER))
+ !option_find2(OPTION_DNSSERVER))
option_put(mess, end, OPTION_DNSSERVER, INADDRSZ, ntohl(context->local.s_addr));
}
if (domain && in_list(req_options, OPTION_DOMAINNAME) &&
- !option_find2(netid, config_opts, OPTION_DOMAINNAME))
+ !option_find2(OPTION_DOMAINNAME))
option_put_string(mess, end, OPTION_DOMAINNAME, domain, null_term);
/* Note that we ignore attempts to set the fqdn using --dhc-option=81, */
if (hostname)
{
if (in_list(req_options, OPTION_HOSTNAME) &&
- !option_find2(netid, config_opts, OPTION_HOSTNAME))
+ !option_find2(OPTION_HOSTNAME))
option_put_string(mess, end, OPTION_HOSTNAME, hostname, null_term);
if (fqdn_flags != 0)
@@ -2351,6 +2445,10 @@ static void do_options(struct dhcp_context *context,
{
int optno = opt->opt;
+ /* netids match and not encapsulated? */
+ if (!(opt->flags & DHOPT_TAGOK))
+ continue;
+
/* was it asked for, or are we sending it anyway? */
if (!(opt->flags & DHOPT_FORCE) && !in_list(req_options, optno))
continue;
@@ -2369,10 +2467,6 @@ static void do_options(struct dhcp_context *context,
if (optno == OPTION_FILENAME && done_file)
continue;
- /* netids match and not encapsulated? */
- if (opt != option_find2(netid, config_opts, optno))
- continue;
-
/* For the options we have default values on
dhc-option= means "don't include this option"
not "include a zero-length option" */
@@ -2439,7 +2533,7 @@ static void do_options(struct dhcp_context *context,
continue;
o->flags |= DHOPT_ENCAP_DONE;
- if (match_netid(o->netid, netid, 1) &&
+ if (match_netid(o->netid, tagif, 1) &&
((o->flags & DHOPT_FORCE) || in_list(req_options, outer)))
{
o->flags |= DHOPT_ENCAP_MATCH;
@@ -2473,12 +2567,12 @@ static void do_options(struct dhcp_context *context,
}
}
- force_encap = prune_vendor_opts(netid);
+ force_encap = prune_vendor_opts(tagif);
if (context && pxe_arch != -1)
{
pxe_misc(mess, end, uuid);
- config_opts = pxe_opts(pxe_arch, netid, context->local);
+ config_opts = pxe_opts(pxe_arch, tagif, context->local);
}
if ((force_encap || in_list(req_options, OPTION_VENDOR_CLASS_OPT)) &&
diff --git a/src/tftp.c b/src/tftp.c
index 789c444..9cecdd9 100644
--- a/src/tftp.c
+++ b/src/tftp.c
@@ -222,17 +222,22 @@ void tftp_request(struct listener *listen, time_t now)
if (strcmp(ir->interface, name) == 0)
special = 1;
-#ifdef HAVE_SOCKADDR_SA_LEN
- addr.sa.sa_len = sa_len(&addr);
-#endif
-
if (listen->family == AF_INET)
- addr.in.sin_port = htons(port);
+ {
+ addr.in.sin_port = htons(port);
+#ifdef HAVE_SOCKADDR_SA_LEN
+ addr.in.sin_len = sizeof(addr.in);
+#endif
+ }
#ifdef HAVE_IPV6
else
{
addr.in6.sin6_port = htons(port);
addr.in6.sin6_flowinfo = 0;
+ addr.in6.sin6_scope_id = 0;
+#ifdef HAVE_SOCKADDR_SA_LEN
+ addr.in6.sin6_len = sizeof(addr.in6);
+#endif
}
#endif
@@ -260,7 +265,7 @@ void tftp_request(struct listener *listen, time_t now)
/* if we have a nailed-down range, iterate until we find a free one. */
while (1)
{
- if (bind(transfer->sockfd, &addr.sa, sizeof(addr)) == -1 ||
+ if (bind(transfer->sockfd, &addr.sa, sa_len(&addr)) == -1 ||
#if defined(IP_MTU_DISCOVER) && defined(IP_PMTUDISC_DONT)
setsockopt(transfer->sockfd, SOL_IP, IP_MTU_DISCOVER, &mtuflag, sizeof(mtuflag)) == -1 ||
#endif
@@ -685,15 +690,13 @@ static ssize_t get_block(char *packet, struct tftp_transfer *transfer)
for (i = 0, newcarrylf = 0; i < size; i++)
if (mess->data[i] == '\n' && ( i != 0 || !transfer->carrylf))
{
- if (size == transfer->blocksize)
- {
- transfer->expansion++;
- if (i == size - 1)
- newcarrylf = 1; /* don't expand LF again if it moves to the next block */
- }
- else
+ transfer->expansion++;
+
+ if (size != transfer->blocksize)
size++; /* room in this block */
-
+ else if (i == size - 1)
+ newcarrylf = 1; /* don't expand LF again if it moves to the next block */
+
/* make space and insert CR */
memmove(&mess->data[i+1], &mess->data[i], size - (i + 1));
mess->data[i] = '\r';
diff --git a/src/util.c b/src/util.c
index e64f1a6..e11360b 100644
--- a/src/util.c
+++ b/src/util.c
@@ -333,7 +333,15 @@ int prettyprint_addr(union mysockaddr *addr, char *buf)
}
else if (addr->sa.sa_family == AF_INET6)
{
+ char name[IF_NAMESIZE];
inet_ntop(AF_INET6, &addr->in6.sin6_addr, buf, ADDRSTRLEN);
+ if (addr->in6.sin6_scope_id != 0 &&
+ if_indextoname(addr->in6.sin6_scope_id, name) &&
+ strlen(buf) + strlen(name) + 2 <= ADDRSTRLEN)
+ {
+ strcat(buf, "%");
+ strcat(buf, name);
+ }
port = ntohs(addr->in6.sin6_port);
}
#else