mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
.network/.netdev/.link: allow to match on architecture
This commit is contained in:
parent
7a243b2204
commit
edbb03e95a
@ -133,6 +133,16 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>Architecture</varname></term>
|
||||
<listitem>
|
||||
<para>Checks whether the system is running on a specific
|
||||
architecture. See <literal>ConditionArchitecture=</literal> in
|
||||
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for details.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>The <literal>[NetDev]</literal> section accepts the following
|
||||
@ -257,6 +267,16 @@
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>Architecture</varname></term>
|
||||
<listitem>
|
||||
<para>Checks whether the system is running on a specific
|
||||
architecture. See <literal>ConditionArchitecture=</literal> in
|
||||
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for details.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>The <literal>[Network]</literal> section accepts the following keys:</para>
|
||||
|
@ -845,6 +845,15 @@
|
||||
for details.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>Architecture</varname></term>
|
||||
<listitem>
|
||||
<para>Checks whether the system is running on a specific
|
||||
architecture. See <literal>ConditionArchitecture=</literal> in
|
||||
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for details.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
||||
<para>The <literal>[Link]</literal> section accepts the following keys:</para>
|
||||
|
@ -15,9 +15,10 @@ struct ConfigPerfItem;
|
||||
%struct-type
|
||||
%includes
|
||||
%%
|
||||
Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(NetDev, condition_host)
|
||||
Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(NetDev, condition_virt)
|
||||
Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(NetDev, condition_kernel)
|
||||
Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(NetDev, match_host)
|
||||
Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(NetDev, match_virt)
|
||||
Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(NetDev, match_kernel)
|
||||
Match.Architecture, config_parse_net_condition, CONDITION_ARCHITECTURE, offsetof(NetDev, match_arch)
|
||||
NetDev.Description, config_parse_string, 0, offsetof(NetDev, description)
|
||||
NetDev.Name, config_parse_ifname, 0, offsetof(NetDev, name)
|
||||
NetDev.Kind, config_parse_netdev_kind, 0, offsetof(NetDev, kind)
|
||||
|
@ -364,9 +364,9 @@ static int netdev_load_one(Manager *manager, const char *filename) {
|
||||
return log_oom();
|
||||
|
||||
if (net_match_config(NULL, NULL, NULL, NULL, NULL,
|
||||
netdev->condition_host, netdev->condition_virt,
|
||||
netdev->condition_kernel, NULL, NULL, NULL,
|
||||
NULL, NULL) <= 0)
|
||||
netdev->match_host, netdev->match_virt,
|
||||
netdev->match_kernel, netdev->match_arch,
|
||||
NULL, NULL, NULL, NULL, NULL) <= 0)
|
||||
return 0;
|
||||
|
||||
r = hashmap_put(netdev->manager->netdevs, netdev->name, netdev);
|
||||
|
@ -23,6 +23,7 @@ Match.Name, config_parse_ifname, 0,
|
||||
Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(Network, match_host)
|
||||
Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(Network, match_virt)
|
||||
Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(Network, match_kernel)
|
||||
Match.Architecture, config_parse_net_condition, CONDITION_ARCHITECTURE, offsetof(Network, match_arch)
|
||||
Network.Description, config_parse_string, 0, offsetof(Network, description)
|
||||
Network.Bridge, config_parse_bridge, 0, offsetof(Network, bridge)
|
||||
Network.Bond, config_parse_bond, 0, offsetof(Network, bond)
|
||||
|
@ -177,6 +177,7 @@ int network_get(Manager *manager, struct udev_device *device, Network **ret) {
|
||||
network->match_driver, network->match_type,
|
||||
network->match_name, network->match_host,
|
||||
network->match_virt, network->match_kernel,
|
||||
network->match_arch,
|
||||
udev_device_get_sysattr_value(device, "address"),
|
||||
udev_device_get_property_value(device, "ID_PATH"),
|
||||
udev_device_get_driver(udev_device_get_parent(device)),
|
||||
|
@ -71,9 +71,10 @@ struct NetDev {
|
||||
|
||||
char *filename;
|
||||
|
||||
Condition *condition_host;
|
||||
Condition *condition_virt;
|
||||
Condition *condition_kernel;
|
||||
Condition *match_host;
|
||||
Condition *match_virt;
|
||||
Condition *match_kernel;
|
||||
Condition *match_arch;
|
||||
|
||||
char *description;
|
||||
char *name;
|
||||
@ -100,6 +101,7 @@ struct Network {
|
||||
Condition *match_host;
|
||||
Condition *match_virt;
|
||||
Condition *match_kernel;
|
||||
Condition *match_arch;
|
||||
|
||||
char *description;
|
||||
NetDev *bridge;
|
||||
|
@ -39,6 +39,7 @@ bool net_match_config(const struct ether_addr *match_mac,
|
||||
Condition *match_host,
|
||||
Condition *match_virt,
|
||||
Condition *match_kernel,
|
||||
Condition *match_arch,
|
||||
const char *dev_mac,
|
||||
const char *dev_path,
|
||||
const char *dev_driver,
|
||||
@ -54,6 +55,9 @@ bool net_match_config(const struct ether_addr *match_mac,
|
||||
if (match_kernel && !condition_test_kernel_command_line(match_kernel))
|
||||
return 0;
|
||||
|
||||
if (match_arch && !condition_test_architecture(match_arch))
|
||||
return 0;
|
||||
|
||||
if (match_mac && (!dev_mac || memcmp(match_mac, ether_aton(dev_mac), ETH_ALEN)))
|
||||
return 0;
|
||||
|
||||
|
@ -35,6 +35,7 @@ bool net_match_config(const struct ether_addr *match_mac,
|
||||
Condition *match_host,
|
||||
Condition *match_virt,
|
||||
Condition *match_kernel,
|
||||
Condition *match_arch,
|
||||
const char *dev_mac,
|
||||
const char *dev_path,
|
||||
const char *dev_driver,
|
||||
|
@ -23,6 +23,7 @@ Match.Type, config_parse_string, 0,
|
||||
Match.Host, config_parse_net_condition, CONDITION_HOST, offsetof(link_config, match_host)
|
||||
Match.Virtualization, config_parse_net_condition, CONDITION_VIRTUALIZATION, offsetof(link_config, match_virt)
|
||||
Match.KernelCommandLine, config_parse_net_condition, CONDITION_KERNEL_COMMAND_LINE, offsetof(link_config, match_kernel)
|
||||
Match.Architecture, config_parse_net_condition, CONDITION_ARCHITECTURE, offsetof(link_config, match_arch)
|
||||
Link.Description, config_parse_string, 0, offsetof(link_config, description)
|
||||
Link.MACAddressPolicy, config_parse_mac_policy, 0, offsetof(link_config, mac_policy)
|
||||
Link.MACAddress, config_parse_hwaddr, 0, offsetof(link_config, mac)
|
||||
|
@ -240,9 +240,9 @@ int link_config_get(link_config_ctx *ctx, struct udev_device *device, link_confi
|
||||
|
||||
LIST_FOREACH(links, link, ctx->links) {
|
||||
|
||||
if (net_match_config(link->match_mac, link->match_path,
|
||||
link->match_driver, link->match_type, NULL,
|
||||
link->match_host, link->match_virt, link->match_kernel,
|
||||
if (net_match_config(link->match_mac, link->match_path, link->match_driver,
|
||||
link->match_type, NULL, link->match_host,
|
||||
link->match_virt, link->match_kernel, link->match_arch,
|
||||
udev_device_get_sysattr_value(device, "address"),
|
||||
udev_device_get_property_value(device, "ID_PATH"),
|
||||
udev_device_get_driver(udev_device_get_parent(device)),
|
||||
|
@ -58,6 +58,7 @@ struct link_config {
|
||||
Condition *match_host;
|
||||
Condition *match_virt;
|
||||
Condition *match_kernel;
|
||||
Condition *match_arch;
|
||||
|
||||
char *description;
|
||||
struct ether_addr *mac;
|
||||
|
Loading…
Reference in New Issue
Block a user