BUG-45 : migrated ClusterIdentifier path attribute to generated source code.
[bgpcep.git] / bgp / parser-api / src / main / yang / bgp-message.yang
1 module bgp-message {
2         yang-version 1;
3         namespace "urn:opendaylight:params:xml:ns:yang:bgp-message";
4         prefix "bgp-msg";
5
6         import ietf-inet-types {
7                 prefix inet;
8                 revision-date 2010-09-24;
9         }
10
11         import bgp-types { prefix bgp-t; }
12
13         organization "Cisco Systems, Inc.";
14         contact "Dana Kutenicsova <dkutenic@cisco.com>";
15
16         description
17                 "This module contains the base data model of a BGP message.
18                 It rolls up the definitions contained in RFC4271 and RFC4893.
19
20                 Copyright (c)2013 Cisco Systems, Inc. All rights reserved.
21
22                 This program and the accompanying materials are made available
23                 under the terms of the Eclipse Public License v1.0 which
24                 accompanies this distribution, and is available at
25                 http://www.eclipse.org/legal/epl-v10.html";
26
27         revision "2013-09-18" {
28                 description
29                         "Initial revision.";
30                 reference "RFC4271, RFC4893";
31         }
32
33         typedef protocol-version {
34                 type uint8 {
35                         range 1..7;
36                 }
37         }
38
39         grouping as-path-segment {
40                 choice segment {
41                         case a-set {
42                                 leaf-list as-set {
43                                         type inet:as-number;
44                                 }
45                         }
46                         case a-list {
47                                 list as-sequence {
48                                         container sequence {
49                                                 leaf as {
50                                                         type inet:as-number;
51                                                 }
52                                         }
53                                 }
54                         }
55                         mandatory true;
56                 }
57         }
58
59         notification open {
60                 description "Open Message";
61                 reference "http://tools.ietf.org/html/rfc4271#section-4.2";
62                 leaf version {
63                         type protocol-version;
64                         default 4;
65                 }
66                 leaf my-as-number {
67                         type uint16;
68                         default 23456;
69                 }
70                 leaf hold-timer {
71                         type uint16;
72                         mandatory true;
73                 }
74                 leaf bgp-identifier {
75                         type inet:ipv4-address;
76                         mandatory true;
77                 }
78                 list optional-parameters {
79                         reference "http://tools.ietf.org/html/rfc3392#section-4";
80                         choice parameters {
81                                 container as4-bytes {
82                                         reference "http://tools.ietf.org/html/rfc6793";
83                                         leaf as-number {
84                                                 type inet:as-number;
85                                         }
86                                 }
87                         }
88                 }
89         }
90
91         notification update {
92                 description "Update Message";
93                 reference "http://tools.ietf.org/html/rfc4271#section-4.3";
94                 container path-attributes {
95                         reference "http://tools.ietf.org/html/rfc4271#section-5";
96                         container origin {
97                                 reference "http://tools.ietf.org/html/rfc4271#section-5.1.1";
98                                 leaf value {
99                                         type bgp-t:bgp-origin;
100                                         mandatory true;
101                                 }
102                         }
103                         container as-path {
104                                 reference "http://tools.ietf.org/html/rfc4271#section-5.1.2";
105                                 list segments {
106                                         uses as-path-segment;
107                                 }
108                         }
109                         container next-hop {
110                                 reference "http://tools.ietf.org/html/rfc4271#section-5.1.3";
111                                 leaf hop {
112                                         type inet:ipv4-address;
113                                         mandatory true;
114                                 }
115                         }
116                         container multi-exit-disc {
117                                 reference "http://tools.ietf.org/html/rfc4271#section-5.1.4";
118                                 leaf med {
119                                         type uint32;
120                                 }
121                         }
122                         container local-pref {
123                                 reference "http://tools.ietf.org/html/rfc4271#section-5.1.5";
124                                 leaf pref {
125                                         type uint32;
126                                 }
127                         }
128                         container atomic-aggregate {
129                                 reference "http://tools.ietf.org/html/rfc4271#section-5.1.6";
130                                 presence "Atomic Aggregate attribute is present.";
131                         }
132                         container aggregator {
133                                 uses bgp-t:bgp-aggregator;
134                         }
135                         list communities {
136                                 uses bgp-t:community; 
137                         }
138                         container cluster-id {
139                                 leaf cluster-id {
140                                         type bgp-t:cluster-identifier;
141                                 }
142                         }
143                 }
144                 container withdrawn-routes {
145                         leaf-list withdrawn-routes {
146                                 type inet:ipv4-prefix;
147                         }
148                 }
149                 container nlri {
150                         leaf-list nlri {
151                                 type inet:ipv4-prefix;
152                         }
153                 }
154         }
155
156         notification keepalive {
157                 description "Keepalive Message";
158                 reference "http://tools.ietf.org/html/rfc4271#section-4.4";
159         }
160
161         notification notify {
162                 description "Notification Message";
163                 reference "http://tools.ietf.org/html/rfc4271#section-4.5";
164
165                 leaf error-code {
166                         type uint8;
167                         mandatory true;
168                 }
169                 leaf error-subcode {
170                         type uint8;
171                         mandatory true;
172                 }
173                 leaf data {
174                         type binary;
175                 }
176         }
177 }