BUG-45 : migrated Aggregator 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                 }
136                 container withdrawn-routes {
137                         leaf-list withdrawn-routes {
138                                 type inet:ipv4-prefix;
139                         }
140                 }
141                 container nlri {
142                         leaf-list nlri {
143                                 type inet:ipv4-prefix;
144                         }
145                 }
146         }
147
148         notification keepalive {
149                 description "Keepalive Message";
150                 reference "http://tools.ietf.org/html/rfc4271#section-4.4";
151         }
152
153         notification notify {
154                 description "Notification Message";
155                 reference "http://tools.ietf.org/html/rfc4271#section-4.5";
156
157                 leaf error-code {
158                         type uint8;
159                         mandatory true;
160                 }
161                 leaf error-subcode {
162                         type uint8;
163                         mandatory true;
164                 }
165                 leaf data {
166                         type binary;
167                 }
168         }
169 }