diff options
author | Susant Sahani <ssahani@vmware.com> | 2021-01-12 11:02:12 +0100 |
---|---|---|
committer | Susant Sahani <ssahani@vmware.com> | 2021-01-12 14:31:03 +0100 |
commit | ea0708628593846dfb8301349fb1ddc42f55e0c4 (patch) | |
tree | 5970b000661a261f7fc81617fb1578fa460a1195 /src/network/netdev | |
parent | network: Allow to configure VLan egress qos maps (diff) | |
download | systemd-ea0708628593846dfb8301349fb1ddc42f55e0c4.tar.xz systemd-ea0708628593846dfb8301349fb1ddc42f55e0c4.zip |
network: Allow to configure VLan egress qos maps
Diffstat (limited to 'src/network/netdev')
-rw-r--r-- | src/network/netdev/netdev-gperf.gperf | 1 | ||||
-rw-r--r-- | src/network/netdev/vlan.c | 19 | ||||
-rw-r--r-- | src/network/netdev/vlan.h | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf index 2c94065bf5..720bacc7f5 100644 --- a/src/network/netdev/netdev-gperf.gperf +++ b/src/network/netdev/netdev-gperf.gperf @@ -54,6 +54,7 @@ VLAN.MVRP, config_parse_tristate, 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) diff --git a/src/network/netdev/vlan.c b/src/network/netdev/vlan.c index f9fcea8898..de3eb721e9 100644 --- a/src/network/netdev/vlan.c +++ b/src/network/netdev/vlan.c @@ -73,6 +73,24 @@ static int netdev_vlan_fill_message_create(NetDev *netdev, Link *link, sd_netlin 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; } @@ -186,6 +204,7 @@ static void vlan_done(NetDev *n) { assert(v); set_free(v->egress_qos_maps); + set_free(v->ingress_qos_maps); } static void vlan_init(NetDev *netdev) { diff --git a/src/network/netdev/vlan.h b/src/network/netdev/vlan.h index 376024d4fd..1e5e5904fc 100644 --- a/src/network/netdev/vlan.h +++ b/src/network/netdev/vlan.h @@ -18,6 +18,7 @@ struct VLan { int reorder_hdr; Set *egress_qos_maps; + Set *ingress_qos_maps; }; DEFINE_NETDEV_CAST(VLAN, VLan); |