Coverage Report

Created: 2019-06-19 13:33

/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
}