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