diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | hwdb/60-sensor.hwdb | 3 | ||||
-rw-r--r-- | man/logind.conf.xml | 10 | ||||
-rw-r--r-- | man/sd_journal_get_catalog.xml | 2 | ||||
-rw-r--r-- | man/systemd.netdev.xml | 8 | ||||
-rw-r--r-- | po/pt_BR.po | 240 | ||||
-rw-r--r-- | src/basic/missing.h | 8 | ||||
-rw-r--r-- | src/libsystemd-network/sd-ipv4ll.c | 6 | ||||
-rw-r--r-- | src/libsystemd/sd-netlink/netlink-types.c | 3 | ||||
-rw-r--r-- | src/login/logind-inhibit.c | 5 | ||||
-rw-r--r-- | src/network/netdev/netdev-gperf.gperf | 1 | ||||
-rw-r--r-- | src/network/netdev/vxlan.c | 40 | ||||
-rw-r--r-- | src/network/netdev/vxlan.h | 13 | ||||
-rw-r--r-- | src/network/networkd-ipv4ll.c | 10 | ||||
-rw-r--r-- | src/network/networkd-ndisc.c | 30 | ||||
-rw-r--r-- | src/network/networkd-network.c | 2 | ||||
-rw-r--r-- | src/nspawn/nspawn.c | 23 | ||||
-rw-r--r-- | src/resolve/resolved-bus.c | 3 | ||||
-rw-r--r-- | src/systemd/sd-ipv4ll.h | 1 | ||||
-rw-r--r-- | src/udev/udev-builtin-net_id.c | 40 |
20 files changed, 314 insertions, 136 deletions
diff --git a/configure.ac b/configure.ac index 16c5d42911..4f139adc78 100644 --- a/configure.ac +++ b/configure.ac @@ -360,7 +360,7 @@ AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE, IFLA_PHYS_PORT_ID, IFLA_BOND_AD_INFO, IFLA_VLAN_PROTOCOL, - IFLA_VXLAN_REMCSUM_NOPARTIAL, + IFLA_VXLAN_GPE, IFLA_IPTUN_ENCAP_DPORT, IFLA_GRE_ENCAP_DPORT, IFLA_BRIDGE_VLAN_INFO, diff --git a/hwdb/60-sensor.hwdb b/hwdb/60-sensor.hwdb index 454f403761..2436ca7367 100644 --- a/hwdb/60-sensor.hwdb +++ b/hwdb/60-sensor.hwdb @@ -47,6 +47,9 @@ sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP500LB* ACCEL_MOUNT_MATRIX=0, 1, 0; 1, 0, 0; 0, 0, 0 +sensor:modalias:acpi:SMO8500*:dmi:*svn*ASUSTeK*:*pn*TP300LJ* + ACCEL_MOUNT_MATRIX=0, -1, 0; -1, 0, 0; 0, 0, 1 + ######################################### # Endless ######################################### diff --git a/man/logind.conf.xml b/man/logind.conf.xml index 1d7b1becd0..16f51af72c 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -244,8 +244,9 @@ <para>A different application may disable logind's handling of system power and sleep keys and the lid switch by taking a low-level inhibitor lock - ("handle-power-key", "handle-suspend-key", "handle-hibernate-key", - "handle-lid-switch"). This is most commonly used by graphical desktop environments + (<literal>handle-power-key</literal>, <literal>handle-suspend-key</literal>, + <literal>handle-hibernate-key</literal>, <literal>handle-lid-switch</literal>). + This is most commonly used by graphical desktop environments to take over suspend and hibernation handling, and to use their own configuration mechanisms. If a low-level inhibitor lock is taken, logind will not take any action when that key or switch is triggered and the <varname>Handle*=</varname> @@ -261,8 +262,9 @@ <listitem><para>Controls whether actions that <command>systemd-logind</command> takes when the power and sleep keys and the lid switch are triggered are subject to high-level inhibitor locks ("shutdown", "sleep", "idle"). Low level inhibitor - locks ("handle-*-key" and "handle-lid-switch"), are always honored, - irrespective of this setting.</para> + locks (<literal>handle-power-key</literal>, <literal>handle-suspend-key</literal>, + <literal>handle-hibernate-key</literal>, <literal>handle-lid-switch</literal>), + are always honored, irrespective of this setting.</para> <para>These settings take boolean arguments. If <literal>no</literal>, the inhibitor locks taken by applications are respected. If <literal>yes</literal>, diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml index 604deb4e8c..92ed0dea06 100644 --- a/man/sd_journal_get_catalog.xml +++ b/man/sd_journal_get_catalog.xml @@ -114,7 +114,7 @@ <para>Function <function>sd_journal_get_catalog()</function> is thread-agnostic and only a single thread may operate on a given <structname>sd_journal</structname> object. Function - <function>sd_journal_get_catalog_for_message_id() is thread-safe.</function></para> + <function>sd_journal_get_catalog_for_message_id()</function> is thread-safe.</para> <para>The <function>sd_journal_get_catalog()</function> and <function>sd_journal_get_catalog_for_message_id()</function> diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml index 39e69480ec..de22a6d49e 100644 --- a/man/systemd.netdev.xml +++ b/man/systemd.netdev.xml @@ -604,6 +604,14 @@ ports, and allows overriding via configuration.</para> </listitem> </varlistentry> + <varlistentry> + <term><varname>FlowLabel=</varname></term> + <listitem> + <para>Specifies the flow label to use in outgoing packets. + The valid range is 0-1048575. + </para> + </listitem> + </varlistentry> </variablelist> </refsect1> <refsect1> diff --git a/po/pt_BR.po b/po/pt_BR.po index 2a11371f97..a087a4786b 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1,23 +1,22 @@ # Brazilian Portuguese translation for systemd. -# Copyright (C) 2015 systemd's COPYRIGHT HOLDER +# Copyright (C) 2017 systemd's COPYRIGHT HOLDER # This file is distributed under the same license as the systemd package. -# Rafael Ferreira <rafael.f.f1@gmail.com>, 2014. # Enrico Nicoletto <liverig@gmail.com>, 2014. -# +# Rafael Fontenelle <rafaelff@gnome.org>, 2015, 2017. msgid "" msgstr "" "Project-Id-Version: systemd master\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-11-22 16:37+0100\n" -"PO-Revision-Date: 2015-01-10 12:23-0300\n" -"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n" +"Report-Msgid-Bugs-To: https://github.com/systemd/systemd/issues\n" +"POT-Creation-Date: 2016-11-17 03:29+0000\n" +"PO-Revision-Date: 2017-04-03 14:25-0200\n" +"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.7.1\n" +"X-Generator: Virtaal 1.0.0-beta1\n" #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1 msgid "Send passphrase back to system" @@ -31,15 +30,14 @@ msgstr "" "sistema." #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3 -#, fuzzy msgid "Manage system services or other units" -msgstr "Gerenciar unidades e serviços do sistema" +msgstr "Gerenciar serviços do sistema e outras unidades" #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4 -#, fuzzy msgid "Authentication is required to manage system services or other units." msgstr "" -"É necessária autenticação para gerenciar unidades e serviços do sistema." +"É necessária autenticação para gerenciar serviços do sistema ou outras " +"unidades." #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:5 msgid "Manage system service or unit files" @@ -52,18 +50,18 @@ msgstr "" "sistema." #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:7 -#, fuzzy msgid "Set or unset system and service manager environment variables" -msgstr "Acesso privilegiado ao gerenciador de serviço e de sistema" +msgstr "" +"Definir ou retirar definição de variáveis de ambiente de gerenciador de " +"serviço e sistema" #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:8 -#, fuzzy msgid "" "Authentication is required to set or unset system and service manager " "environment variables." msgstr "" -"É necessária autenticação para gerenciar arquivos \"unit\" e \"service\" do " -"sistema." +"É necessária autenticação para definir ou retirar definição de variáveis de " +"ambiente de gerenciador de serviço e sistema." #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:9 msgid "Reload the systemd state" @@ -103,30 +101,27 @@ msgstr "É necessária autenticação para definir informações de máquina loc #: ../src/import/org.freedesktop.import1.policy.in.h:1 msgid "Import a VM or container image" -msgstr "" +msgstr "Importar uma VM ou imagem contêiner" #: ../src/import/org.freedesktop.import1.policy.in.h:2 -#, fuzzy msgid "Authentication is required to import a VM or container image" -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "É necessária autenticação para importar uma VM ou imagem contêiner" #: ../src/import/org.freedesktop.import1.policy.in.h:3 msgid "Export a VM or container image" -msgstr "" +msgstr "Exportar uma VM ou imagem contêiner" #: ../src/import/org.freedesktop.import1.policy.in.h:4 -#, fuzzy msgid "Authentication is required to export a VM or container image" -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "É necessária autenticação para exportar uma VM ou imagem contêiner" #: ../src/import/org.freedesktop.import1.policy.in.h:5 msgid "Download a VM or container image" -msgstr "" +msgstr "Baixar uma VM ou imagem contêiner" #: ../src/import/org.freedesktop.import1.policy.in.h:6 -#, fuzzy msgid "Authentication is required to download a VM or container image" -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "É necessária autenticação para baixar uma VM ou imagem contêiner" #: ../src/locale/org.freedesktop.locale1.policy.in.h:1 msgid "Set system locale" @@ -254,48 +249,61 @@ msgstr "" "sistema sobre o interruptor da tela." #: ../src/login/org.freedesktop.login1.policy.in.h:19 +#| msgid "Allow non-logged-in users to run programs" +msgid "Allow non-logged-in user to run programs" +msgstr "" +"Permitir que programas sejam executados por usuário que não possui sessão" + +#: ../src/login/org.freedesktop.login1.policy.in.h:20 +#| msgid "Authentication is required to run programs as a non-logged-in user." +msgid "Explicit request is required to run programs as a non-logged-in user." +msgstr "" +"É necessária requisição explícita para executar programas como usuário sem " +"sessão aberta." + +#: ../src/login/org.freedesktop.login1.policy.in.h:21 msgid "Allow non-logged-in users to run programs" msgstr "" "Permitir que programas sejam executados por usuários que não possuem sessão" -#: ../src/login/org.freedesktop.login1.policy.in.h:20 +#: ../src/login/org.freedesktop.login1.policy.in.h:22 msgid "Authentication is required to run programs as a non-logged-in user." msgstr "" "É necessária autenticação para executar programas como usuário sem sessão " "aberta." -#: ../src/login/org.freedesktop.login1.policy.in.h:21 +#: ../src/login/org.freedesktop.login1.policy.in.h:23 msgid "Allow attaching devices to seats" msgstr "Permitir conectar dispositivos em estações" -#: ../src/login/org.freedesktop.login1.policy.in.h:22 +#: ../src/login/org.freedesktop.login1.policy.in.h:24 msgid "Authentication is required for attaching a device to a seat." msgstr "É necessária autenticação para conectar um dispositivo em uma estação." -#: ../src/login/org.freedesktop.login1.policy.in.h:23 +#: ../src/login/org.freedesktop.login1.policy.in.h:25 msgid "Flush device to seat attachments" msgstr "Liberar dispositivo para conexões da estação" -#: ../src/login/org.freedesktop.login1.policy.in.h:24 +#: ../src/login/org.freedesktop.login1.policy.in.h:26 msgid "" "Authentication is required for resetting how devices are attached to seats." msgstr "" "É necessária autenticação para redefinir a quantidade de dispositivos " "conectados na estação." -#: ../src/login/org.freedesktop.login1.policy.in.h:25 +#: ../src/login/org.freedesktop.login1.policy.in.h:27 msgid "Power off the system" msgstr "Desligar o sistema" -#: ../src/login/org.freedesktop.login1.policy.in.h:26 +#: ../src/login/org.freedesktop.login1.policy.in.h:28 msgid "Authentication is required for powering off the system." msgstr "É necessária autenticação para desligar o sistema." -#: ../src/login/org.freedesktop.login1.policy.in.h:27 +#: ../src/login/org.freedesktop.login1.policy.in.h:29 msgid "Power off the system while other users are logged in" msgstr "Desligar o sistema enquanto outros usuários estão conectados" -#: ../src/login/org.freedesktop.login1.policy.in.h:28 +#: ../src/login/org.freedesktop.login1.policy.in.h:30 msgid "" "Authentication is required for powering off the system while other users are " "logged in." @@ -303,11 +311,11 @@ msgstr "" "É necessária autenticação para desligar o sistema enquanto outros usuários " "estão conectados." -#: ../src/login/org.freedesktop.login1.policy.in.h:29 +#: ../src/login/org.freedesktop.login1.policy.in.h:31 msgid "Power off the system while an application asked to inhibit it" msgstr "Desligar o sistema enquanto um aplicativo solicitou inibição" -#: ../src/login/org.freedesktop.login1.policy.in.h:30 +#: ../src/login/org.freedesktop.login1.policy.in.h:32 msgid "" "Authentication is required for powering off the system while an application " "asked to inhibit it." @@ -315,19 +323,19 @@ msgstr "" "É necessária autenticação para desligar o sistema enquanto um aplicativo " "solicitou inibição." -#: ../src/login/org.freedesktop.login1.policy.in.h:31 +#: ../src/login/org.freedesktop.login1.policy.in.h:33 msgid "Reboot the system" msgstr "Reiniciar o sistema" -#: ../src/login/org.freedesktop.login1.policy.in.h:32 +#: ../src/login/org.freedesktop.login1.policy.in.h:34 msgid "Authentication is required for rebooting the system." msgstr "É necessária autenticação para reiniciar o sistema." -#: ../src/login/org.freedesktop.login1.policy.in.h:33 +#: ../src/login/org.freedesktop.login1.policy.in.h:35 msgid "Reboot the system while other users are logged in" msgstr "Reiniciar o sistema enquanto outros usuários estiverem conectados" -#: ../src/login/org.freedesktop.login1.policy.in.h:34 +#: ../src/login/org.freedesktop.login1.policy.in.h:36 msgid "" "Authentication is required for rebooting the system while other users are " "logged in." @@ -335,11 +343,11 @@ msgstr "" "É necessária autenticação para reiniciar o sistema enquanto outros usuários " "estiverem conectados." -#: ../src/login/org.freedesktop.login1.policy.in.h:35 +#: ../src/login/org.freedesktop.login1.policy.in.h:37 msgid "Reboot the system while an application asked to inhibit it" msgstr "Reiniciar o sistema enquanto um aplicativo solicitou inibição" -#: ../src/login/org.freedesktop.login1.policy.in.h:36 +#: ../src/login/org.freedesktop.login1.policy.in.h:38 msgid "" "Authentication is required for rebooting the system while an application " "asked to inhibit it." @@ -347,19 +355,19 @@ msgstr "" "É necessária autenticação para reiniciar o sistema enquanto um aplicativo " "solicitou inibição." -#: ../src/login/org.freedesktop.login1.policy.in.h:37 +#: ../src/login/org.freedesktop.login1.policy.in.h:39 msgid "Suspend the system" msgstr "Suspender o sistema" -#: ../src/login/org.freedesktop.login1.policy.in.h:38 +#: ../src/login/org.freedesktop.login1.policy.in.h:40 msgid "Authentication is required for suspending the system." msgstr "É necessária autenticação para suspender o sistema." -#: ../src/login/org.freedesktop.login1.policy.in.h:39 +#: ../src/login/org.freedesktop.login1.policy.in.h:41 msgid "Suspend the system while other users are logged in" msgstr "Suspender o sistema enquanto outros usuários estiverem conectados" -#: ../src/login/org.freedesktop.login1.policy.in.h:40 +#: ../src/login/org.freedesktop.login1.policy.in.h:42 msgid "" "Authentication is required for suspending the system while other users are " "logged in." @@ -367,11 +375,11 @@ msgstr "" "É necessária autenticação para suspender o sistema enquanto outros usuários " "estiverem conectados." -#: ../src/login/org.freedesktop.login1.policy.in.h:41 +#: ../src/login/org.freedesktop.login1.policy.in.h:43 msgid "Suspend the system while an application asked to inhibit it" msgstr "Suspender o sistema enquanto um aplicativo solicitou inibição" -#: ../src/login/org.freedesktop.login1.policy.in.h:42 +#: ../src/login/org.freedesktop.login1.policy.in.h:44 msgid "" "Authentication is required for suspending the system while an application " "asked to inhibit it." @@ -379,19 +387,19 @@ msgstr "" "É necessária autenticação para suspender o sistema enquanto um aplicativo " "solicitou inibição." -#: ../src/login/org.freedesktop.login1.policy.in.h:43 +#: ../src/login/org.freedesktop.login1.policy.in.h:45 msgid "Hibernate the system" msgstr "Hibernar o sistema" -#: ../src/login/org.freedesktop.login1.policy.in.h:44 +#: ../src/login/org.freedesktop.login1.policy.in.h:46 msgid "Authentication is required for hibernating the system." msgstr "É necessária autenticação para hibernar o sistema." -#: ../src/login/org.freedesktop.login1.policy.in.h:45 +#: ../src/login/org.freedesktop.login1.policy.in.h:47 msgid "Hibernate the system while other users are logged in" msgstr "Hibernar o sistema enquanto outros usuários estiverem conectados" -#: ../src/login/org.freedesktop.login1.policy.in.h:46 +#: ../src/login/org.freedesktop.login1.policy.in.h:48 msgid "" "Authentication is required for hibernating the system while other users are " "logged in." @@ -399,11 +407,11 @@ msgstr "" "É necessária autenticação para hibernar o sistema enquanto outros usuários " "estiverem conectados." -#: ../src/login/org.freedesktop.login1.policy.in.h:47 +#: ../src/login/org.freedesktop.login1.policy.in.h:49 msgid "Hibernate the system while an application asked to inhibit it" msgstr "Hibernar o sistema enquanto um aplicativo solicitou inibição" -#: ../src/login/org.freedesktop.login1.policy.in.h:48 +#: ../src/login/org.freedesktop.login1.policy.in.h:50 msgid "" "Authentication is required for hibernating the system while an application " "asked to inhibit it." @@ -411,123 +419,121 @@ msgstr "" "É necessária autenticação para hibernar o sistema enquanto um aplicativo " "solicitou inibição." -#: ../src/login/org.freedesktop.login1.policy.in.h:49 +#: ../src/login/org.freedesktop.login1.policy.in.h:51 msgid "Manage active sessions, users and seats" -msgstr "" +msgstr "Gerenciar estações, usuários e sessões ativas" -#: ../src/login/org.freedesktop.login1.policy.in.h:50 -#, fuzzy +#: ../src/login/org.freedesktop.login1.policy.in.h:52 msgid "" "Authentication is required for managing active sessions, users and seats." -msgstr "É necessária autenticação para conectar um dispositivo em uma estação." +msgstr "" +"É necessária autenticação para gerenciar estações, usuários e sessões ativas." -#: ../src/login/org.freedesktop.login1.policy.in.h:51 +#: ../src/login/org.freedesktop.login1.policy.in.h:53 msgid "Lock or unlock active sessions" -msgstr "" +msgstr "Travar ou destravar sessões ativas" -#: ../src/login/org.freedesktop.login1.policy.in.h:52 -#, fuzzy +#: ../src/login/org.freedesktop.login1.policy.in.h:54 msgid "Authentication is required to lock or unlock active sessions." -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "É necessária autenticação para travar ou destravar sessões ativas." -#: ../src/login/org.freedesktop.login1.policy.in.h:53 +#: ../src/login/org.freedesktop.login1.policy.in.h:55 msgid "Allow indication to the firmware to boot to setup interface" msgstr "" +"Permitir indicação para o firmware inicializar para a interface de " +"configuração" -#: ../src/login/org.freedesktop.login1.policy.in.h:54 -#, fuzzy +#: ../src/login/org.freedesktop.login1.policy.in.h:56 msgid "" "Authentication is required to indicate to the firmware to boot to setup " "interface." -msgstr "É necessária autenticação para definir nome de máquina local." +msgstr "" +"É necessária autenticação para indicar para o firmware inicializar para a " +"interface de configuração." -#: ../src/login/org.freedesktop.login1.policy.in.h:55 +#: ../src/login/org.freedesktop.login1.policy.in.h:57 msgid "Set a wall message" -msgstr "" +msgstr "Definir uma mensagem de parede" -#: ../src/login/org.freedesktop.login1.policy.in.h:56 -#, fuzzy +#: ../src/login/org.freedesktop.login1.policy.in.h:58 msgid "Authentication is required to set a wall message" -msgstr "É necessária autenticação para definir nome de máquina local." +msgstr "É necessária autenticação para definir uma mensagem de parede" #: ../src/machine/org.freedesktop.machine1.policy.in.h:1 msgid "Log into a local container" msgstr "Conectar a um contêiner local" #: ../src/machine/org.freedesktop.machine1.policy.in.h:2 -#, fuzzy msgid "Authentication is required to log into a local container." msgstr "É necessária autenticação para se conectar a um contêiner local." #: ../src/machine/org.freedesktop.machine1.policy.in.h:3 -#, fuzzy msgid "Log into the local host" -msgstr "Conectar a um contêiner local" +msgstr "Conectar a uma máquina local" #: ../src/machine/org.freedesktop.machine1.policy.in.h:4 -#, fuzzy msgid "Authentication is required to log into the local host." -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "É necessária autenticação para se conectar a uma máquina local." #: ../src/machine/org.freedesktop.machine1.policy.in.h:5 -#, fuzzy msgid "Acquire a shell in a local container" -msgstr "Conectar a um contêiner local" +msgstr "Adquirir uma shell em um contêiner local" #: ../src/machine/org.freedesktop.machine1.policy.in.h:6 -#, fuzzy msgid "Authentication is required to acquire a shell in a local container." -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "" +"É necessária autenticação para adquirir uma shell em um contêiner local." #: ../src/machine/org.freedesktop.machine1.policy.in.h:7 msgid "Acquire a shell on the local host" -msgstr "" +msgstr "Adquirir uma shell na máquina local" #: ../src/machine/org.freedesktop.machine1.policy.in.h:8 -#, fuzzy msgid "Authentication is required to acquire a shell on the local host." -msgstr "É necessária autenticação para definir nome de máquina local." +msgstr "" +"É necessária autenticação para adquirir uma shell em uma máquina local." #: ../src/machine/org.freedesktop.machine1.policy.in.h:9 -#, fuzzy msgid "Acquire a pseudo TTY in a local container" -msgstr "Conectar a um contêiner local" +msgstr "Adquirir um pseudo TTY em um contêiner local" #: ../src/machine/org.freedesktop.machine1.policy.in.h:10 -#, fuzzy msgid "" "Authentication is required to acquire a pseudo TTY in a local container." -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "" +"É necessária autenticação para adquirir um pseudo TTY em um contêiner local." #: ../src/machine/org.freedesktop.machine1.policy.in.h:11 msgid "Acquire a pseudo TTY on the local host" -msgstr "" +msgstr "Adquiri um pseudo TTY na máquina local" #: ../src/machine/org.freedesktop.machine1.policy.in.h:12 -#, fuzzy msgid "Authentication is required to acquire a pseudo TTY on the local host." -msgstr "É necessária autenticação para definir nome de máquina local." +msgstr "" +"É necessária autenticação para adquirir um pseudo TTY em um máquina local." #: ../src/machine/org.freedesktop.machine1.policy.in.h:13 msgid "Manage local virtual machines and containers" -msgstr "" +msgstr "Gerenciar máquinas virtuais locais e contêineres" #: ../src/machine/org.freedesktop.machine1.policy.in.h:14 -#, fuzzy msgid "" "Authentication is required to manage local virtual machines and containers." -msgstr "É necessária autenticação para definir informações de máquina local." +msgstr "" +"É necessária autenticação para gerenciar máquinas virtuais locais e " +"contêineres." #: ../src/machine/org.freedesktop.machine1.policy.in.h:15 msgid "Manage local virtual machine and container images" -msgstr "" +msgstr "Gerenciar máquinas virtuais locais e imagens contêineres" #: ../src/machine/org.freedesktop.machine1.policy.in.h:16 -#, fuzzy msgid "" "Authentication is required to manage local virtual machine and container " "images." -msgstr "É necessária autenticação para definir informações de máquina local." +msgstr "" +"É necessária autenticação para gerenciar máquinas virtuais locais e imagens " +"contêineres." #: ../src/timedate/org.freedesktop.timedate1.policy.in.h:1 msgid "Set system time" @@ -569,37 +575,31 @@ msgstr "" "É necessária autenticação para controlar se deve ser habilitada, ou não, a " "sincronização de horário através de rede." -#: ../src/core/dbus-unit.c:428 -#, fuzzy +#: ../src/core/dbus-unit.c:457 msgid "Authentication is required to start '$(unit)'." -msgstr "É necessária autenticação para definir o horário do sistema." +msgstr "É necessária autenticação para iniciar '$(unit)'." -#: ../src/core/dbus-unit.c:429 -#, fuzzy +#: ../src/core/dbus-unit.c:458 msgid "Authentication is required to stop '$(unit)'." -msgstr "É necessária autenticação para definir o horário do sistema." +msgstr "É necessária autenticação para parar '$(unit)'." -#: ../src/core/dbus-unit.c:430 -#, fuzzy +#: ../src/core/dbus-unit.c:459 msgid "Authentication is required to reload '$(unit)'." -msgstr "É necessária autenticação para recarregar o estado do sistema." +msgstr "É necessária autenticação para recarregar '$(unit)'." -#: ../src/core/dbus-unit.c:431 ../src/core/dbus-unit.c:432 -#, fuzzy +#: ../src/core/dbus-unit.c:460 ../src/core/dbus-unit.c:461 msgid "Authentication is required to restart '$(unit)'." -msgstr "É necessária autenticação para definir o horário do sistema." +msgstr "É necessária autenticação para reiniciar '$(unit)'." -#: ../src/core/dbus-unit.c:535 -#, fuzzy +#: ../src/core/dbus-unit.c:568 msgid "Authentication is required to kill '$(unit)'." -msgstr "É necessária autenticação para se conectar a um contêiner local." +msgstr "É necessária autenticação para matar '$(unit)'." -#: ../src/core/dbus-unit.c:565 -#, fuzzy +#: ../src/core/dbus-unit.c:599 msgid "Authentication is required to reset the \"failed\" state of '$(unit)'." -msgstr "É necessária autenticação para definir nome de máquina local." +msgstr "" +"É necessária autenticação para reiniciar o estado \"failed\" de '$(unit)'." -#: ../src/core/dbus-unit.c:597 -#, fuzzy +#: ../src/core/dbus-unit.c:632 msgid "Authentication is required to set properties on '$(unit)'." -msgstr "É necessária autenticação para definir o horário do sistema." +msgstr "É necessária autenticação para definir propriedades em '$(unit)'." diff --git a/src/basic/missing.h b/src/basic/missing.h index 480462357d..284cbaffc0 100644 --- a/src/basic/missing.h +++ b/src/basic/missing.h @@ -726,7 +726,7 @@ struct btrfs_ioctl_quota_ctl_args { #define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1) #endif -#if !HAVE_DECL_IFLA_VXLAN_REMCSUM_NOPARTIAL +#if !HAVE_DECL_IFLA_VXLAN_GPE #define IFLA_VXLAN_UNSPEC 0 #define IFLA_VXLAN_ID 1 #define IFLA_VXLAN_GROUP 2 @@ -752,7 +752,11 @@ struct btrfs_ioctl_quota_ctl_args { #define IFLA_VXLAN_REMCSUM_RX 22 #define IFLA_VXLAN_GBP 23 #define IFLA_VXLAN_REMCSUM_NOPARTIAL 24 -#define __IFLA_VXLAN_MAX 25 +#define IFLA_VXLAN_COLLECT_METADATA 25 +#define IFLA_VXLAN_LABEL 26 +#define IFLA_VXLAN_GPE 27 + +#define __IFLA_VXLAN_MAX 28 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) #endif diff --git a/src/libsystemd-network/sd-ipv4ll.c b/src/libsystemd-network/sd-ipv4ll.c index 13209261f9..88a90e593b 100644 --- a/src/libsystemd-network/sd-ipv4ll.c +++ b/src/libsystemd-network/sd-ipv4ll.c @@ -248,6 +248,12 @@ static int ipv4ll_pick_address(sd_ipv4ll *ll) { return sd_ipv4ll_set_address(ll, &(struct in_addr) { addr }); } +int sd_ipv4ll_restart(sd_ipv4ll *ll) { + ll->address = 0; + + return sd_ipv4ll_start(ll); +} + #define MAC_HASH_KEY SD_ID128_MAKE(df,04,22,98,3f,ad,14,52,f9,87,2e,d1,9c,70,e2,f2) int sd_ipv4ll_start(sd_ipv4ll *ll) { diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c index ff0e99558e..fc13a4ce14 100644 --- a/src/libsystemd/sd-netlink/netlink-types.c +++ b/src/libsystemd/sd-netlink/netlink-types.c @@ -170,6 +170,9 @@ static const NLType rtnl_link_info_data_vxlan_types[] = { [IFLA_VXLAN_REMCSUM_RX] = { .type = NETLINK_TYPE_U8 }, [IFLA_VXLAN_GBP] = { .type = NETLINK_TYPE_FLAG }, [IFLA_VXLAN_REMCSUM_NOPARTIAL] = { .type = NETLINK_TYPE_FLAG }, + [IFLA_VXLAN_COLLECT_METADATA] = { .type = NETLINK_TYPE_U8 }, + [IFLA_VXLAN_LABEL] = { .type = NETLINK_TYPE_U32 }, + [IFLA_VXLAN_GPE] = { .type = NETLINK_TYPE_FLAG }, }; static const NLType rtnl_bond_arp_target_types[] = { diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c index 5ca42b1ca2..1e6f383738 100644 --- a/src/login/logind-inhibit.c +++ b/src/login/logind-inhibit.c @@ -347,7 +347,7 @@ InhibitWhat manager_inhibit_what(Manager *m, InhibitMode mm) { assert(m); HASHMAP_FOREACH(i, m->inhibitors, j) - if (i->mode == mm) + if (i->mode == mm && i->started) what |= i->what; return what; @@ -388,6 +388,9 @@ bool manager_is_inhibited( assert(w > 0 && w < _INHIBIT_WHAT_MAX); HASHMAP_FOREACH(i, m->inhibitors, j) { + if (!i->started) + continue; + if (!(i->what & w)) continue; diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf index e19fa9817e..925af1c579 100644 --- a/src/network/netdev/netdev-gperf.gperf +++ b/src/network/netdev/netdev-gperf.gperf @@ -78,6 +78,7 @@ VXLAN.GroupPolicyExtension, config_parse_bool, 0, VXLAN.MaximumFDBEntries, config_parse_unsigned, 0, offsetof(VxLan, max_fdb) VXLAN.PortRange, config_parse_port_range, 0, 0 VXLAN.DestinationPort, config_parse_destination_port, 0, offsetof(VxLan, dest_port) +VXLAN.FlowLabel, config_parse_flow_label, 0, 0 Tun.OneQueue, config_parse_bool, 0, offsetof(TunTap, one_queue) Tun.MultiQueue, config_parse_bool, 0, offsetof(TunTap, multi_queue) Tun.PacketInfo, config_parse_bool, 0, offsetof(TunTap, packet_info) diff --git a/src/network/netdev/vxlan.c b/src/network/netdev/vxlan.c index b677b000fd..7f20e6cdfe 100644 --- a/src/network/netdev/vxlan.c +++ b/src/network/netdev/vxlan.c @@ -157,6 +157,10 @@ static int netdev_vxlan_fill_message_create(NetDev *netdev, Link *link, sd_netli return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_PORT_RANGE attribute: %m"); } + r = sd_netlink_message_append_u32(m, IFLA_VXLAN_LABEL, htobe32(v->flow_label)); + if (r < 0) + return log_netdev_error_errno(netdev, r, "Could not append IFLA_VXLAN_LABEL attribute: %m"); + if (v->group_policy) { r = sd_netlink_message_append_flag(m, IFLA_VXLAN_GBP); if (r < 0) @@ -297,6 +301,42 @@ int config_parse_destination_port(const char *unit, return 0; } +int config_parse_flow_label(const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + VxLan *v = userdata; + unsigned f; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + r = safe_atou(rvalue, &f); + if (r < 0) { + log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse VXLAN flow label '%s'.", rvalue); + return 0; + } + + if (f & ~VXLAN_FLOW_LABEL_MAX_MASK) { + log_syntax(unit, LOG_ERR, filename, line, r, + "VXLAN flow label '%s' not valid. Flow label range should be [0-1048575].", rvalue); + return 0; + } + + v->flow_label = f; + + return 0; +} + static int netdev_vxlan_verify(NetDev *netdev, const char *filename) { VxLan *v = VXLAN(netdev); diff --git a/src/network/netdev/vxlan.h b/src/network/netdev/vxlan.h index dca58e7fe6..7f97a9edc4 100644 --- a/src/network/netdev/vxlan.h +++ b/src/network/netdev/vxlan.h @@ -25,6 +25,7 @@ typedef struct VxLan VxLan; #include "netdev/netdev.h" #define VXLAN_VID_MAX (1u << 24) - 1 +#define VXLAN_FLOW_LABEL_MAX_MASK 0xFFFFFU struct VxLan { NetDev meta; @@ -40,6 +41,7 @@ struct VxLan { unsigned tos; unsigned ttl; unsigned max_fdb; + unsigned flow_label; uint16_t dest_port; @@ -94,3 +96,14 @@ int config_parse_destination_port(const char *unit, const char *rvalue, void *data, void *userdata); + +int config_parse_flow_label(const char *unit, + const char *filename, + unsigned line, + const char *section, + unsigned section_line, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata); diff --git a/src/network/networkd-ipv4ll.c b/src/network/networkd-ipv4ll.c index 7ba05dbec3..e2578a298b 100644 --- a/src/network/networkd-ipv4ll.c +++ b/src/network/networkd-ipv4ll.c @@ -179,12 +179,22 @@ static void ipv4ll_handler(sd_ipv4ll *ll, int event, void *userdata) { switch(event) { case SD_IPV4LL_EVENT_STOP: + r = ipv4ll_address_lost(link); + if (r < 0) { + link_enter_failed(link); + return; + } + break; case SD_IPV4LL_EVENT_CONFLICT: r = ipv4ll_address_lost(link); if (r < 0) { link_enter_failed(link); return; } + + r = sd_ipv4ll_restart(ll); + if (r < 0) + log_link_warning(link, "Could not acquire IPv4 link-local address"); break; case SD_IPV4LL_EVENT_BIND: r = ipv4ll_address_claimed(ll, link); diff --git a/src/network/networkd-ndisc.c b/src/network/networkd-ndisc.c index 4fd5d8ae70..d52b511bb5 100644 --- a/src/network/networkd-ndisc.c +++ b/src/network/networkd-ndisc.c @@ -27,6 +27,7 @@ #define NDISC_DNSSL_MAX 64U #define NDISC_RDNSS_MAX 64U +#define NDISC_PREFIX_LFT_MIN 7200U static int ndisc_netlink_handler(sd_netlink *rtnl, sd_netlink_message *m, void *userdata) { _cleanup_link_unref_ Link *link = userdata; @@ -152,13 +153,21 @@ static void ndisc_router_process_default(Link *link, sd_ndisc_router *rt) { static void ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router *rt) { _cleanup_address_free_ Address *address = NULL; - uint32_t lifetime_valid, lifetime_preferred; + Address *existing_address; + uint32_t lifetime_valid, lifetime_preferred, lifetime_remaining; + usec_t time_now; unsigned prefixlen; int r; assert(link); assert(rt); + r = sd_ndisc_router_get_timestamp(rt, clock_boottime_or_monotonic(), &time_now); + if (r < 0) { + log_link_warning_errno(link, r, "Failed to get RA timestamp: %m"); + return; + } + r = sd_ndisc_router_prefix_get_prefixlen(rt, &prefixlen); if (r < 0) { log_link_error_errno(link, r, "Failed to get prefix length: %m"); @@ -207,7 +216,24 @@ static void ndisc_router_process_autonomous_prefix(Link *link, sd_ndisc_router * address->prefixlen = prefixlen; address->flags = IFA_F_NOPREFIXROUTE|IFA_F_MANAGETEMPADDR; address->cinfo.ifa_prefered = lifetime_preferred; - address->cinfo.ifa_valid = lifetime_valid; + + /* see RFC4862 section 5.5.3.e */ + r = address_get(link, address->family, &address->in_addr, address->prefixlen, &existing_address); + if (r > 0) { + lifetime_remaining = existing_address->cinfo.tstamp / 100 + existing_address->cinfo.ifa_valid - time_now / USEC_PER_SEC; + if (lifetime_valid > NDISC_PREFIX_LFT_MIN || lifetime_valid > lifetime_remaining) + address->cinfo.ifa_valid = lifetime_valid; + else if (lifetime_remaining <= NDISC_PREFIX_LFT_MIN) + address->cinfo.ifa_valid = lifetime_remaining; + else + address->cinfo.ifa_valid = NDISC_PREFIX_LFT_MIN; + } else if (lifetime_valid > 0) + address->cinfo.ifa_valid = lifetime_valid; + else + return; /* see RFC4862 section 5.5.3.d */ + + if (address->cinfo.ifa_valid == 0) + return; r = address_configure(address, link, ndisc_netlink_handler, true); if (r < 0) { diff --git a/src/network/networkd-network.c b/src/network/networkd-network.c index ab372568de..fac42d8478 100644 --- a/src/network/networkd-network.c +++ b/src/network/networkd-network.c @@ -428,7 +428,7 @@ int network_apply(Network *network, Link *link) { if (network->ipv4ll_route) { Route *route; - r = route_new_static(network, "Network", 0, &route); + r = route_new_static(network, NULL, 0, &route); if (r < 0) return r; diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 1fc0501c2e..bce26a383b 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1321,17 +1321,32 @@ static int setup_timezone(const char *dest) { return 0; } -static int resolved_running(void) { +static int resolved_listening(void) { _cleanup_(sd_bus_flush_close_unrefp) sd_bus *bus = NULL; + _cleanup_free_ char *dns_stub_listener_mode = NULL; int r; - /* Check if resolved is running */ + /* Check if resolved is listening */ r = sd_bus_open_system(&bus); if (r < 0) return r; - return bus_name_has_owner(bus, "org.freedesktop.resolve1", NULL); + r = bus_name_has_owner(bus, "org.freedesktop.resolve1", NULL); + if (r <= 0) + return r; + + r = sd_bus_get_property_string(bus, + "org.freedesktop.resolve1", + "/org/freedesktop/resolve1", + "org.freedesktop.resolve1.Manager", + "DNSStubListener", + NULL, + &dns_stub_listener_mode); + if (r < 0) + return r; + + return STR_IN_SET(dns_stub_listener_mode, "udp", "yes"); } static int setup_resolv_conf(const char *dest) { @@ -1358,7 +1373,7 @@ static int setup_resolv_conf(const char *dest) { } if (access("/usr/lib/systemd/resolv.conf", F_OK) >= 0 && - resolved_running() > 0) { + resolved_listening() > 0) { /* resolved is enabled on the host. In this, case bind mount its static resolv.conf file into the * container, so that the container can use the host's resolver. Given that network namespacing is diff --git a/src/resolve/resolved-bus.c b/src/resolve/resolved-bus.c index 2c50109388..efa16ad93d 100644 --- a/src/resolve/resolved-bus.c +++ b/src/resolve/resolved-bus.c @@ -1450,6 +1450,8 @@ static int bus_property_get_ntas( return sd_bus_message_close_container(reply); } +static BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_dns_stub_listener_mode, dns_stub_listener_mode, DnsStubListenerMode); + static int bus_method_reset_statistics(sd_bus_message *message, void *userdata, sd_bus_error *error) { Manager *m = userdata; DnsScope *s; @@ -1577,6 +1579,7 @@ static const sd_bus_vtable resolve_vtable[] = { SD_BUS_PROPERTY("DNSSECStatistics", "(tttt)", bus_property_get_dnssec_statistics, 0, 0), SD_BUS_PROPERTY("DNSSECSupported", "b", bus_property_get_dnssec_supported, 0, 0), SD_BUS_PROPERTY("DNSSECNegativeTrustAnchors", "as", bus_property_get_ntas, 0, 0), + SD_BUS_PROPERTY("DNSStubListener", "s", bus_property_get_dns_stub_listener_mode, offsetof(Manager, dns_stub_listener_mode), 0), SD_BUS_METHOD("ResolveHostname", "isit", "a(iiay)st", bus_method_resolve_hostname, SD_BUS_VTABLE_UNPRIVILEGED), SD_BUS_METHOD("ResolveAddress", "iiayt", "a(is)t", bus_method_resolve_address, SD_BUS_VTABLE_UNPRIVILEGED), diff --git a/src/systemd/sd-ipv4ll.h b/src/systemd/sd-ipv4ll.h index 1109ec52e0..5ba92083f4 100644 --- a/src/systemd/sd-ipv4ll.h +++ b/src/systemd/sd-ipv4ll.h @@ -47,6 +47,7 @@ int sd_ipv4ll_set_ifindex(sd_ipv4ll *ll, int interface_index); int sd_ipv4ll_set_address(sd_ipv4ll *ll, const struct in_addr *address); int sd_ipv4ll_set_address_seed(sd_ipv4ll *ll, uint64_t seed); int sd_ipv4ll_is_running(sd_ipv4ll *ll); +int sd_ipv4ll_restart(sd_ipv4ll *ll); int sd_ipv4ll_start(sd_ipv4ll *ll); int sd_ipv4ll_stop(sd_ipv4ll *ll); sd_ipv4ll *sd_ipv4ll_ref(sd_ipv4ll *ll); diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index bd7b789cad..dcbfba359f 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -45,6 +45,7 @@ * — PCI geographical location * [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] * — USB port number chain + * v<slot> - VIO slot number (IBM PowerVM) * * All multi-function PCI devices will carry the [f<function>] number in the * device name, including the function 0 device. @@ -122,6 +123,7 @@ enum netname_type{ NET_BCMA, NET_VIRTIO, NET_CCW, + NET_VIO, }; struct netnames { @@ -139,6 +141,7 @@ struct netnames { char usb_ports[IFNAMSIZ]; char bcma_core[IFNAMSIZ]; char ccw_busid[IFNAMSIZ]; + char vio_slot[IFNAMSIZ]; }; /* skip intermediate virtio devices */ @@ -319,6 +322,33 @@ out: return err; } +static int names_vio(struct udev_device *dev, struct netnames *names) { + struct udev_device *parent; + unsigned busid, slotid, ethid; + const char *syspath; + + /* check if our direct parent is a VIO device with no other bus in-between */ + parent = udev_device_get_parent(dev); + if (!parent) + return -ENOENT; + + if (!streq_ptr("vio", udev_device_get_subsystem(parent))) + return -ENOENT; + + /* The devices' $DEVPATH number is tied to (virtual) hardware (slot id + * selected in the HMC), thus this provides a reliable naming (e.g. + * "/devices/vio/30000002/net/eth1"); we ignore the bus number, as + * there should only ever be one bus, and then remove leading zeros. */ + syspath = udev_device_get_syspath(dev); + + if (sscanf(syspath, "/sys/devices/vio/%4x%4x/net/eth%u", &busid, &slotid, ðid) != 3) + return -EINVAL; + + xsprintf(names->vio_slot, "v%u", slotid); + names->type = NET_VIO; + return 0; +} + static int names_pci(struct udev_device *dev, struct netnames *names) { struct udev_device *parent; @@ -591,6 +621,16 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool goto out; } + /* get ibmveth/ibmvnic slot-based names. */ + err = names_vio(dev, &names); + if (err >= 0 && names.type == NET_VIO) { + char str[IFNAMSIZ]; + + if (snprintf(str, sizeof(str), "%s%s", prefix, names.vio_slot) < (int)sizeof(str)) + udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); + goto out; + } + /* get PCI based path names, we compose only PCI based paths */ err = names_pci(dev, &names); if (err < 0) |