</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term><varname>IngressQOSMaps=</varname></term>
+ <listitem>
+ <para>Defines a mapping of Linux internal packet priority (<constant>SO_PRIORITY</constant>) to VLAN header
+ PCP field for incoming frames. Takes a whitespace-separated list of unsigned integer pairs in the format
+ <literal>from</literal>-<literal>to</literal>, e.g., <literal>21-7 45-5</literal> ranges 1–4294967294.
+ Note that <literal>from</literal> must be greater than or equal to <literal>to</literal>. When unset,
+ the kernel's default will be used.
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect1>
VLAN.LooseBinding, config_parse_tristate, 0, offsetof(VLan, loose_binding)
VLAN.ReorderHeader, config_parse_tristate, 0, offsetof(VLan, reorder_hdr)
VLAN.EgressQOSMaps, config_parse_vlan_qos_maps, 0, offsetof(VLan, egress_qos_maps)
+VLAN.IngressQOSMaps, config_parse_vlan_qos_maps, 0, offsetof(VLan, ingress_qos_maps)
MACVLAN.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode)
MACVLAN.SourceMACAddress, config_parse_hwaddrs, 0, offsetof(MacVlan, match_source_mac)
MACVTAP.Mode, config_parse_macvlan_mode, 0, offsetof(MacVlan, mode)
return log_netdev_error_errno(netdev, r, "Could not close container IFLA_VLAN_EGRESS_QOS: %m");
}
+ if (!set_isempty(v->ingress_qos_maps)) {
+ struct ifla_vlan_qos_mapping *m;
+
+ r = sd_netlink_message_open_container(req, IFLA_VLAN_INGRESS_QOS);
+ if (r < 0)
+ return log_netdev_error_errno(netdev, r, "Could not open container IFLA_VLAN_INGRESS_QOS: %m");
+
+ SET_FOREACH(m, v->ingress_qos_maps) {
+ r = sd_netlink_message_append_data(req, IFLA_VLAN_QOS_MAPPING, m, sizeof(struct ifla_vlan_qos_mapping));
+ if (r < 0)
+ return log_netdev_error_errno(netdev, r, "Could not append IFLA_VLAN_QOS_MAPPING attribute: %m");
+ }
+
+ r = sd_netlink_message_close_container(req);
+ if (r < 0)
+ return log_netdev_error_errno(netdev, r, "Could not close container IFLA_VLAN_INGRESS_QOS: %m");
+ }
+
return 0;
}
assert(v);
set_free(v->egress_qos_maps);
+ set_free(v->ingress_qos_maps);
}
static void vlan_init(NetDev *netdev) {
int reorder_hdr;
Set *egress_qos_maps;
+ Set *ingress_qos_maps;
};
DEFINE_NETDEV_CAST(VLAN, VLan);
GVRP=
Protocol=
EgressQOSMaps=
+IngressQOSMaps=
[MACVLAN]
Mode=
SourceMACAddress=