summaryrefslogtreecommitdiffstats
path: root/src/network/netdev
diff options
context:
space:
mode:
authorSusant Sahani <ssahani@vmware.com>2021-01-12 11:02:12 +0100
committerSusant Sahani <ssahani@vmware.com>2021-01-12 14:31:03 +0100
commitea0708628593846dfb8301349fb1ddc42f55e0c4 (patch)
tree5970b000661a261f7fc81617fb1578fa460a1195 /src/network/netdev
parentnetwork: Allow to configure VLan egress qos maps (diff)
downloadsystemd-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.gperf1
-rw-r--r--src/network/netdev/vlan.c19
-rw-r--r--src/network/netdev/vlan.h1
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);