1
0
mirror of https://github.com/systemd/systemd.git synced 2025-05-27 21:05:55 +03:00

Merge pull request #27761 from yuwata/network-vlan-qos-mapping

network: fix vlan qos mapping
This commit is contained in:
Luca Boccassi 2023-05-24 09:59:41 +01:00 committed by GitHub
commit fe830b84d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 19 deletions

View File

@ -144,6 +144,7 @@ int config_parse_vlan_qos_maps(
for (const char *p = rvalue;;) {
_cleanup_free_ struct ifla_vlan_qos_mapping *m = NULL;
_cleanup_free_ char *w = NULL;
unsigned from, to;
r = extract_first_word(&p, &w, NULL, EXTRACT_CUNESCAPE|EXTRACT_UNQUOTE);
if (r == -ENOMEM)
@ -155,20 +156,20 @@ int config_parse_vlan_qos_maps(
if (r == 0)
return 0;
m = new0(struct ifla_vlan_qos_mapping, 1);
if (!m)
return log_oom();
r = parse_range(w, &m->from, &m->to);
r = parse_range(w, &from, &to);
if (r < 0) {
log_syntax(unit, LOG_WARNING, filename, line, r, "Failed to parse %s, ignoring: %s", lvalue, w);
continue;
}
if (m->to > m->from || m->to == 0 || m->from == 0) {
log_syntax(unit, LOG_WARNING, filename, line, 0, "Invalid %s, ignoring: %s", lvalue, w);
continue;
}
m = new(struct ifla_vlan_qos_mapping, 1);
if (!m)
return log_oom();
*m = (struct ifla_vlan_qos_mapping) {
.from = from,
.to = to,
};
r = set_ensure_consume(s, &vlan_qos_maps_hash_ops, TAKE_PTR(m));
if (r < 0) {

View File

@ -3,7 +3,9 @@ MTUBytes=2000
[VLAN]
Id=99
GVRP=true
MVRP=true
LooseBinding=true
ReorderHeader=true
GVRP=yes
MVRP=yes
LooseBinding=yes
ReorderHeader=yes
EgressQOSMaps=0-1 1-3 10-3 6-6 7-7
IngressQOSMaps=15-13 20-100

View File

@ -1285,12 +1285,14 @@ class NetworkdNetDevTests(unittest.TestCase, Utilities):
output = check_output('ip -d link show vlan99')
print(output)
self.assertRegex(output, ' mtu 2000 ')
self.assertRegex(output, 'REORDER_HDR')
self.assertRegex(output, 'LOOSE_BINDING')
self.assertRegex(output, 'GVRP')
self.assertRegex(output, 'MVRP')
self.assertRegex(output, ' id 99 ')
self.assertIn(' mtu 2000 ', output)
self.assertIn('REORDER_HDR', output)
self.assertIn('LOOSE_BINDING', output)
self.assertIn('GVRP', output)
self.assertIn('MVRP', output)
self.assertIn(' id 99 ', output)
self.assertIn('ingress-qos-map { 4:100 7:13 }', output)
self.assertIn('egress-qos-map { 0:1 1:3 6:6 7:7 10:3 }', output)
output = check_output('ip -4 address show dev test1')
print(output)