/src/systemd/src/shared/vlan-util.c
Line | Count | Source (jump to first uncovered line) |
1 | | /* SPDX-License-Identifier: LGPL-2.1+ */ |
2 | | |
3 | | #include "conf-parser.h" |
4 | | #include "parse-util.h" |
5 | | #include "string-util.h" |
6 | | #include "vlan-util.h" |
7 | | |
8 | 15.1k | int parse_vlanid(const char *p, uint16_t *ret) { |
9 | 15.1k | uint16_t id; |
10 | 15.1k | int r; |
11 | 15.1k | |
12 | 15.1k | assert(p); |
13 | 15.1k | assert(ret); |
14 | 15.1k | |
15 | 15.1k | r = safe_atou16(p, &id); |
16 | 15.1k | if (r < 0) |
17 | 10.3k | return r; |
18 | 4.79k | if (!vlanid_is_valid(id)) |
19 | 619 | return -ERANGE; |
20 | 4.17k | |
21 | 4.17k | *ret = id; |
22 | 4.17k | return 0; |
23 | 4.17k | } |
24 | | |
25 | | int config_parse_default_port_vlanid( |
26 | | const char *unit, |
27 | | const char *filename, |
28 | | unsigned line, |
29 | | const char *section, |
30 | | unsigned section_line, |
31 | | const char *lvalue, |
32 | | int ltype, |
33 | | const char *rvalue, |
34 | | void *data, |
35 | 0 | void *userdata) { |
36 | 0 | uint16_t *id = data; |
37 | 0 |
|
38 | 0 | assert(lvalue); |
39 | 0 | assert(rvalue); |
40 | 0 | assert(data); |
41 | 0 |
|
42 | 0 | if (streq(rvalue, "none")) { |
43 | 0 | *id = 0; |
44 | 0 | return 0; |
45 | 0 | } |
46 | 0 | |
47 | 0 | return config_parse_vlanid(unit, filename, line, section, section_line, |
48 | 0 | lvalue, ltype, rvalue, data, userdata); |
49 | 0 | } |
50 | | |
51 | | int config_parse_vlanid( |
52 | | const char *unit, |
53 | | const char *filename, |
54 | | unsigned line, |
55 | | const char *section, |
56 | | unsigned section_line, |
57 | | const char *lvalue, |
58 | | int ltype, |
59 | | const char *rvalue, |
60 | | void *data, |
61 | 9.56k | void *userdata) { |
62 | 9.56k | |
63 | 9.56k | uint16_t *id = data; |
64 | 9.56k | int r; |
65 | 9.56k | |
66 | 9.56k | assert(filename); |
67 | 9.56k | assert(lvalue); |
68 | 9.56k | assert(rvalue); |
69 | 9.56k | assert(data); |
70 | 9.56k | |
71 | 9.56k | r = parse_vlanid(rvalue, id); |
72 | 9.56k | if (r == -ERANGE) { |
73 | 1.48k | log_syntax(unit, LOG_ERR, filename, line, r, "VLAN identifier outside of valid range 0…4094, ignoring: %s", rvalue); |
74 | 1.48k | return 0; |
75 | 1.48k | } |
76 | 8.08k | if (r < 0) { |
77 | 7.58k | log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse VLAN identifier value, ignoring: %s", rvalue); |
78 | 7.58k | return 0; |
79 | 7.58k | } |
80 | 499 | |
81 | 499 | return 0; |
82 | 499 | } |