-
Notifications
You must be signed in to change notification settings - Fork 12
/
infix-if-bridge@2023-08-21.yang
174 lines (148 loc) · 4.28 KB
/
infix-if-bridge@2023-08-21.yang
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
submodule infix-if-bridge {
yang-version 1.1;
belongs-to infix-interfaces {
prefix infix-if;
}
import iana-if-type {
prefix ianaift;
}
import ietf-interfaces {
prefix if;
}
import ieee802-dot1q-types {
prefix dot1q-types;
}
organization "KernelKit";
contact "kernelkit@googlegroups.com";
description "Linux bridge extension for ietf-interfaces.";
revision 2023-08-21 {
description "Minor, lint ordering and add missing description.";
reference "internal";
}
revision 2023-05-31 {
description "Initial revision.";
reference "internal";
}
/*
* Features
*/
feature vlan-filtering {
description "Indicates if this bridge supports VLAN filtering.";
}
/*
* Typedefs
*/
typedef ieee-reserved-groups {
type union {
type uint8 {
range "0..15";
}
type enumeration {
enum stp {
value 0;
description "Spanning Tree (STP/RSPT/MSTP).";
}
enum lacp {
value 2;
description "802.3 Slow Protocols, e.g., LACP.";
}
enum dot1x {
value 3;
description "802.1X Port-Based Network Access Control.";
}
enum lldp {
value 14;
description "802.1AB Link Layer Discovery Protocol (LLDP).";
}
}
}
description
"This is a user-friendly enumeration of the different reserved IEEE
reserved link-local multicast groups, in 01:80:C2:00:00:0X.";
}
/*
* Data Nodes
*/
augment "/if:interfaces/if:interface" {
when "derived-from-or-self(if:type,'ianaift:bridge')" {
description "Only shown for if:type bridge";
}
description "Augment generic interfaces with a basic 802.1Q bridge.";
container bridge {
description "IEEE 802.1Q style bridge.";
leaf-list ieee-group-forward {
type ieee-reserved-groups;
description
"List of IEEE link-local protocols to forward, e.g., STP, LLDP";
}
container vlans {
if-feature "vlan-filtering";
description "A VLAN filtering bridge has at least one VLAN.";
leaf proto {
type dot1q-types:dot1q-tag-type;
default dot1q-types:c-vlan;
description "Standard (1Q/c-vlan) or provider (1ad/s-vlan) bridge.";
}
leaf pvid {
type dot1q-types:vlanid;
default 1;
description "Default primary VID for untagged frames, default: 1.";
}
list vlan {
key "vid";
description "List of VLANs associated with the Bridge.";
leaf vid {
type dot1q-types:vlanid;
description "The VLAN identifier to which this entry applies.";
}
leaf-list untagged {
type if:interface-ref;
description "The set of ports in the untagged set for VLAN.";
}
leaf-list tagged {
type if:interface-ref;
must "not(../untagged[contains(., current())])" {
error-message "Cannot be an untagged port at the same time.";
}
description "The set of ports in the tagged set for VLAN.";
}
}
}
}
}
augment "/if:interfaces/if:interface/infix-if:port" {
when "derived-from-or-self(if:type,'ianaift:bridge') or "+
"derived-from-or-self(if:type,'ianaift:ethernetCsmacd') or "+
"derived-from-or-self(if:type,'ianaift:ieee8023adLag') or "+
"derived-from-or-self(if:type,'ianaift:ilan')" {
description "Applies when a Bridge interface exists.";
}
description "Augments the interface model with the Bridge Port";
case bridge-port {
description "Extension of the IETF Interfaces model (RFC7223).";
container bridge-port {
description "Bridge association and port specific setttngs.";
leaf bridge {
type if:interface-ref;
must "deref(.)/../bridge" {
error-message "Must refer to a bridge interface.";
}
mandatory true;
description "Bridge interface to which this interface is attached.";
}
leaf pvid {
if-feature "vlan-filtering";
type dot1q-types:vlanid;
default "1";
description "The primary VID assigned to this bridge port.";
}
leaf default-priority {
if-feature "vlan-filtering";
type dot1q-types:priority-type;
default "0";
description "The default priority assigned to this bridge port.";
}
}
}
}
}