]>
Commit | Line | Data |
---|---|---|
e9ce224b RW |
1 | module frr-ripngd { |
2 | yang-version 1.1; | |
3 | namespace "http://frrouting.org/yang/ripngd"; | |
4 | prefix frr-ripngd; | |
5 | ||
6 | import ietf-inet-types { | |
7 | prefix inet; | |
8 | } | |
9 | import ietf-yang-types { | |
10 | prefix yang; | |
11 | } | |
12 | import frr-interface { | |
13 | prefix frr-interface; | |
14 | } | |
15 | import frr-route-types { | |
16 | prefix frr-route-types; | |
17 | } | |
18 | ||
19 | organization | |
20 | "Free Range Routing"; | |
21 | contact | |
22 | "FRR Users List: <mailto:frog@lists.frrouting.org> | |
23 | FRR Development List: <mailto:dev@lists.frrouting.org>"; | |
24 | description | |
25 | "This module defines a model for managing FRR ripngd daemon."; | |
26 | ||
f22b9250 QY |
27 | revision 2019-09-09 { |
28 | description | |
29 | "Changed interface references to use | |
30 | frr-interface:interface-ref typedef"; | |
31 | } | |
e9ce224b RW |
32 | revision 2018-11-27 { |
33 | description | |
34 | "Initial revision."; | |
35 | reference | |
36 | "RFC 2080: RIPng for IPv6."; | |
37 | } | |
38 | ||
39 | container ripngd { | |
40 | /* | |
dde7b15b | 41 | * Routing instance configuration. |
e9ce224b | 42 | */ |
dde7b15b RW |
43 | list instance { |
44 | key "vrf"; | |
e9ce224b RW |
45 | description |
46 | "RIPng routing instance."; | |
47 | ||
dde7b15b RW |
48 | leaf vrf { |
49 | type string; | |
50 | description | |
51 | "VRF name."; | |
52 | } | |
e9ce224b RW |
53 | leaf allow-ecmp { |
54 | type boolean; | |
55 | default "false"; | |
56 | description | |
57 | "Allow equal-cost multi-path."; | |
58 | } | |
59 | leaf default-information-originate { | |
60 | type boolean; | |
61 | default "false"; | |
62 | description | |
63 | "Control distribution of default route."; | |
64 | } | |
65 | leaf default-metric { | |
66 | type uint8 { | |
67 | range "1..16"; | |
68 | } | |
69 | default "1"; | |
70 | description | |
71 | "Default metric of redistributed routes."; | |
72 | } | |
73 | leaf-list network { | |
74 | type inet:ipv6-prefix; | |
75 | description | |
76 | "Enable RIPng on the specified IPv6 network."; | |
77 | } | |
78 | leaf-list interface { | |
f22b9250 | 79 | type frr-interface:interface-ref; |
e9ce224b RW |
80 | description |
81 | "Enable RIPng on the specified interface."; | |
82 | } | |
83 | list offset-list { | |
84 | key "interface direction"; | |
85 | description | |
86 | "Offset-list to modify route metric."; | |
87 | leaf interface { | |
f22b9250 QY |
88 | type union { |
89 | type frr-interface:interface-ref; | |
90 | type enumeration { | |
91 | enum '*' { | |
92 | description | |
93 | "Match all interfaces."; | |
94 | } | |
95 | } | |
96 | } | |
e9ce224b RW |
97 | description |
98 | "Interface to match. Use '*' to match all interfaces."; | |
99 | } | |
100 | leaf direction { | |
101 | type enumeration { | |
102 | enum in { | |
103 | value 0; | |
104 | description | |
105 | "Incoming updates."; | |
106 | } | |
107 | enum out { | |
108 | value 1; | |
109 | description | |
110 | "Outgoing updates."; | |
111 | } | |
112 | } | |
113 | description | |
114 | "Incoming or outgoing updates."; | |
115 | } | |
116 | leaf access-list { | |
117 | type string; | |
118 | mandatory true; | |
119 | description | |
120 | "Access-list name."; | |
121 | } | |
122 | leaf metric { | |
123 | type uint8 { | |
124 | range "0..16"; | |
125 | } | |
126 | mandatory true; | |
127 | description | |
128 | "Route metric."; | |
129 | } | |
130 | } | |
131 | leaf-list passive-interface { | |
f22b9250 | 132 | type frr-interface:interface-ref; |
e9ce224b RW |
133 | description |
134 | "A list of interfaces where the sending of RIPng packets | |
135 | is disabled."; | |
136 | } | |
137 | list redistribute { | |
138 | key "protocol"; | |
139 | description | |
140 | "Redistributes routes learned from other routing protocols."; | |
141 | leaf protocol { | |
142 | type frr-route-types:frr-route-types-v6; | |
143 | description | |
144 | "Routing protocol."; | |
145 | must '. != "ripng"'; | |
146 | } | |
147 | leaf route-map { | |
148 | type string { | |
149 | length "1..max"; | |
150 | } | |
151 | description | |
152 | "Applies the conditions of the specified route-map to | |
153 | routes that are redistributed into the RIPng routing | |
154 | instance."; | |
155 | } | |
156 | leaf metric { | |
157 | type uint8 { | |
158 | range "0..16"; | |
159 | } | |
160 | description | |
161 | "Metric used for the redistributed route. If a metric is | |
162 | not specified, the metric configured with the | |
163 | default-metric attribute in RIPng router configuration is | |
164 | used. If the default-metric attribute has not been | |
165 | configured, the default metric for redistributed routes | |
166 | is 0."; | |
167 | } | |
168 | } | |
169 | leaf-list static-route { | |
170 | type inet:ipv6-prefix; | |
171 | description | |
172 | "RIPng static routes."; | |
173 | } | |
174 | leaf-list aggregate-address { | |
175 | type inet:ipv6-prefix; | |
176 | description | |
177 | "RIPng aggregate route announcement."; | |
178 | } | |
179 | container timers { | |
180 | description | |
181 | "Settings of basic timers"; | |
182 | leaf flush-interval { | |
183 | type uint16 { | |
184 | range "1..65535"; | |
185 | } | |
186 | units "seconds"; | |
187 | default "120"; | |
188 | description | |
189 | "Interval before a route is flushed from the routing | |
190 | table."; | |
191 | } | |
192 | leaf holddown-interval { | |
193 | type uint16 { | |
194 | range "1..65535"; | |
195 | } | |
196 | units "seconds"; | |
197 | default "180"; | |
198 | description | |
199 | "Interval before better routes are released."; | |
200 | } | |
201 | leaf update-interval { | |
202 | type uint16 { | |
203 | range "1..65535"; | |
204 | } | |
205 | units "seconds"; | |
206 | default "30"; | |
207 | description | |
208 | "Interval at which RIPng updates are sent."; | |
209 | } | |
210 | } | |
e9ce224b | 211 | |
80cf4e45 RW |
212 | /* |
213 | * Operational data. | |
214 | */ | |
215 | container state { | |
216 | config false; | |
e9ce224b | 217 | description |
80cf4e45 RW |
218 | "Operational data."; |
219 | ||
220 | container neighbors { | |
e9ce224b | 221 | description |
80cf4e45 RW |
222 | "Neighbor information."; |
223 | list neighbor { | |
224 | key "address"; | |
e9ce224b | 225 | description |
80cf4e45 RW |
226 | "A RIPng neighbor."; |
227 | leaf address { | |
228 | type inet:ipv6-address; | |
229 | description | |
230 | "IPv6 address that a RIPng neighbor is using as its | |
231 | source address."; | |
232 | } | |
233 | leaf last-update { | |
234 | type yang:date-and-time; | |
235 | description | |
236 | "The time when the most recent RIPng update was | |
237 | received from this neighbor."; | |
238 | } | |
239 | leaf bad-packets-rcvd { | |
240 | type yang:counter32; | |
241 | description | |
242 | "The number of RIPng invalid packets received from | |
243 | this neighbor which were subsequently discarded | |
244 | for any reason (e.g. a version 0 packet, or an | |
245 | unknown command type)."; | |
246 | } | |
247 | leaf bad-routes-rcvd { | |
248 | type yang:counter32; | |
249 | description | |
250 | "The number of routes received from this neighbor, | |
251 | in valid RIPng packets, which were ignored for any | |
252 | reason (e.g. unknown address family, or invalid | |
253 | metric)."; | |
254 | } | |
e9ce224b RW |
255 | } |
256 | } | |
80cf4e45 | 257 | container routes { |
e9ce224b | 258 | description |
80cf4e45 RW |
259 | "Route information."; |
260 | list route { | |
261 | key "prefix"; | |
e9ce224b | 262 | description |
80cf4e45 RW |
263 | "A RIPng IPv6 route."; |
264 | leaf prefix { | |
265 | type inet:ipv6-prefix; | |
266 | description | |
267 | "IPv6 address and prefix length, in the format | |
268 | specified in RFC6991."; | |
269 | } | |
270 | leaf next-hop { | |
271 | type inet:ipv6-address; | |
272 | description | |
273 | "Next hop IPv6 address."; | |
274 | } | |
275 | leaf interface { | |
276 | type string; | |
277 | description | |
278 | "The interface that the route uses."; | |
279 | } | |
280 | leaf metric { | |
281 | type uint8 { | |
282 | range "0..16"; | |
283 | } | |
284 | description | |
285 | "Route metric."; | |
e9ce224b | 286 | } |
e9ce224b RW |
287 | } |
288 | } | |
289 | } | |
290 | } | |
291 | } | |
292 | ||
293 | /* | |
294 | * Per-interface configuration data | |
295 | */ | |
296 | augment "/frr-interface:lib/frr-interface:interface" { | |
297 | container ripng { | |
298 | description | |
299 | "RIPng interface parameters."; | |
300 | leaf split-horizon { | |
301 | type enumeration { | |
302 | enum "disabled" { | |
303 | value 0; | |
304 | description | |
305 | "Disables split-horizon processing."; | |
306 | } | |
307 | enum "simple" { | |
308 | value 1; | |
309 | description | |
310 | "Enables simple split-horizon processing."; | |
311 | } | |
312 | enum "poison-reverse" { | |
313 | value 2; | |
314 | description | |
315 | "Enables split-horizon processing with poison | |
316 | reverse."; | |
317 | } | |
318 | } | |
319 | default "simple"; | |
320 | description | |
321 | "Controls RIPng split-horizon processing on the specified | |
322 | interface."; | |
323 | } | |
324 | } | |
325 | } | |
326 | ||
327 | /* | |
328 | * RPCs | |
329 | */ | |
330 | rpc clear-ripng-route { | |
331 | description | |
332 | "Clears RIPng routes from the IPv6 routing table and routes | |
333 | redistributed into the RIPng protocol."; | |
c5b2b5f6 RW |
334 | |
335 | input { | |
336 | leaf vrf { | |
337 | type string; | |
338 | description | |
339 | "VRF name identifying a specific RIPng instance. | |
340 | This leaf is optional for the rpc. | |
341 | If it is specified, the rpc will clear all routes in the | |
342 | specified RIPng instance; | |
343 | if it is not specified, the rpc will clear all routes in | |
344 | all RIPng instances."; | |
345 | } | |
346 | } | |
e9ce224b RW |
347 | } |
348 | } |