@birdcc/lsp 0.0.1-alpha.0 → 0.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +25 -23
  2. package/dist/asn-completion.d.ts +21 -0
  3. package/dist/asn-completion.d.ts.map +1 -0
  4. package/dist/asn-completion.js +42 -0
  5. package/dist/asn-completion.js.map +1 -0
  6. package/dist/asn-context.d.ts +9 -0
  7. package/dist/asn-context.d.ts.map +1 -0
  8. package/dist/asn-context.js +203 -0
  9. package/dist/asn-context.js.map +1 -0
  10. package/dist/asn-hover.d.ts +11 -0
  11. package/dist/asn-hover.d.ts.map +1 -0
  12. package/dist/asn-hover.js +33 -0
  13. package/dist/asn-hover.js.map +1 -0
  14. package/dist/asn-inlay-hints.d.ts +13 -0
  15. package/dist/asn-inlay-hints.d.ts.map +1 -0
  16. package/dist/asn-inlay-hints.js +47 -0
  17. package/dist/asn-inlay-hints.js.map +1 -0
  18. package/dist/diagnostic.d.ts.map +1 -1
  19. package/dist/diagnostic.js +2 -10
  20. package/dist/diagnostic.js.map +1 -1
  21. package/dist/document-symbol.js +1 -1
  22. package/dist/document-symbol.js.map +1 -1
  23. package/dist/hover-context.d.ts +31 -0
  24. package/dist/hover-context.d.ts.map +1 -0
  25. package/dist/hover-context.js +125 -0
  26. package/dist/hover-context.js.map +1 -0
  27. package/dist/hover-docs/00-base.yaml +5 -0
  28. package/dist/hover-docs/10-global-options.yaml +442 -0
  29. package/dist/hover-docs/20-filter-language.yaml +209 -0
  30. package/dist/hover-docs/30-channel-options.yaml +244 -0
  31. package/dist/hover-docs/40-protocol-common.yaml +59 -0
  32. package/dist/hover-docs/41-protocol-igp.yaml +305 -0
  33. package/dist/hover-docs/42-protocol-kernel-static.yaml +220 -0
  34. package/dist/hover-docs/43-protocol-mpls.yaml +40 -0
  35. package/dist/hover-docs/44-protocol-extended.yaml +635 -0
  36. package/dist/hover-docs/50-protocol-bgp.yaml +482 -0
  37. package/dist/hover-docs/60-protocol-ospf.yaml +527 -0
  38. package/dist/hover-docs.d.ts +5 -1
  39. package/dist/hover-docs.d.ts.map +1 -1
  40. package/dist/hover-docs.js +376 -51
  41. package/dist/hover-docs.js.map +1 -1
  42. package/dist/hover-usage/00-base.yaml +2 -0
  43. package/dist/hover-usage/10-global-usage.yaml +73 -0
  44. package/dist/hover-usage/20-filter-usage.yaml +41 -0
  45. package/dist/hover-usage/30-channel-usage.yaml +41 -0
  46. package/dist/hover-usage/40-protocol-usage.yaml +258 -0
  47. package/dist/hover-usage/50-bgp-usage.yaml +254 -0
  48. package/dist/hover-usage/60-ospf-usage.yaml +340 -0
  49. package/dist/hover.d.ts +10 -0
  50. package/dist/hover.d.ts.map +1 -1
  51. package/dist/hover.js +152 -46
  52. package/dist/hover.js.map +1 -1
  53. package/dist/index.d.ts +7 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +6 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/init/workspace-init.d.ts +28 -0
  58. package/dist/init/workspace-init.d.ts.map +1 -0
  59. package/dist/init/workspace-init.js +72 -0
  60. package/dist/init/workspace-init.js.map +1 -0
  61. package/dist/lsp-server.d.ts +7 -1
  62. package/dist/lsp-server.d.ts.map +1 -1
  63. package/dist/lsp-server.js +277 -65
  64. package/dist/lsp-server.js.map +1 -1
  65. package/dist/project-config.d.ts +22 -0
  66. package/dist/project-config.d.ts.map +1 -0
  67. package/dist/project-config.js +307 -0
  68. package/dist/project-config.js.map +1 -0
  69. package/dist/shared.d.ts +1 -0
  70. package/dist/shared.d.ts.map +1 -1
  71. package/dist/shared.js +4 -24
  72. package/dist/shared.js.map +1 -1
  73. package/dist/symbol-utils.d.ts +6 -6
  74. package/dist/symbol-utils.d.ts.map +1 -1
  75. package/dist/symbol-utils.js +24 -25
  76. package/dist/symbol-utils.js.map +1 -1
  77. package/dist/type-hint-inlay.d.ts +4 -0
  78. package/dist/type-hint-inlay.d.ts.map +1 -0
  79. package/dist/type-hint-inlay.js +27 -0
  80. package/dist/type-hint-inlay.js.map +1 -0
  81. package/dist/utils.d.ts +65 -0
  82. package/dist/utils.d.ts.map +1 -0
  83. package/dist/utils.js +97 -0
  84. package/dist/utils.js.map +1 -0
  85. package/package.json +20 -9
  86. package/.oxfmtrc.json +0 -16
  87. package/dist/hover-docs.yaml +0 -600
  88. package/scripts/copy-hover-yaml.mjs +0 -14
  89. package/src/completion.ts +0 -223
  90. package/src/definition.ts +0 -50
  91. package/src/diagnostic.ts +0 -48
  92. package/src/document-symbol.ts +0 -27
  93. package/src/hover-docs.ts +0 -223
  94. package/src/hover-docs.yaml +0 -600
  95. package/src/hover.ts +0 -122
  96. package/src/index.ts +0 -8
  97. package/src/lsp-server.ts +0 -350
  98. package/src/references.ts +0 -107
  99. package/src/server.ts +0 -4
  100. package/src/shared.ts +0 -182
  101. package/src/symbol-utils.ts +0 -126
  102. package/src/validation.ts +0 -85
  103. package/test/hover-docs.test.ts +0 -18
  104. package/test/lsp.test.ts +0 -304
  105. package/test/perf-baseline.test.ts +0 -96
  106. package/test/validation.test.ts +0 -212
  107. package/tsconfig.json +0 -8
@@ -0,0 +1,41 @@
1
+ entries:
2
+ - keyword: export
3
+ usage: export filter only_bgp;
4
+ - keyword: export block
5
+ usage: export block 16384;
6
+ - keyword: export limit
7
+ usage: export limit 100000 action warn;
8
+ - keyword: import
9
+ usage: import all;
10
+ - keyword: import keep filtered
11
+ usage: import keep filtered on;
12
+ - keyword: import limit
13
+ usage: import limit 100000 action block;
14
+ - keyword: ipv4
15
+ usage: |
16
+ ipv4 {
17
+ import all;
18
+ export none;
19
+ };
20
+ - keyword: ipv6
21
+ usage: |
22
+ ipv6 {
23
+ import all;
24
+ export filter only_v6;
25
+ };
26
+ - keyword: preference
27
+ usage: preference 100;
28
+ - keyword: receive limit
29
+ usage: receive limit 200000 action disable;
30
+ - keyword: rpki reload
31
+ usage: rpki reload on;
32
+ - keyword: table
33
+ path:
34
+ - protocol.bgp.channel
35
+ - protocol.ospf.channel
36
+ - protocol.rip.channel
37
+ - protocol.babel.channel
38
+ - protocol.kernel.channel
39
+ - protocol.static.channel
40
+ - protocol.pipe.channel
41
+ usage: table master4;
@@ -0,0 +1,258 @@
1
+ entries:
2
+ # ── Common protocol options ──────────────────────────────────────
3
+ - keyword: description
4
+ usage: description "core upstream session";
5
+ - keyword: disabled
6
+ usage: disabled on;
7
+ - keyword: restart time limit
8
+ usage: restart time limit 60;
9
+ - keyword: vrf
10
+ usage: vrf "blue";
11
+ # ── Protocol declarations ───────────────────────────────────────
12
+ - keyword: babel
13
+ usage: protocol babel edge_babel {}
14
+ - keyword: bfd
15
+ usage: protocol bfd {}
16
+ - keyword: rip
17
+ usage: protocol rip edge_rip {}
18
+ - keyword: device
19
+ usage: protocol device {}
20
+ - keyword: direct
21
+ usage: protocol direct { interface "eth*"; };
22
+ - keyword: kernel
23
+ usage: protocol kernel { ipv4 { export all; }; };
24
+ - keyword: static
25
+ usage: protocol static { route 203.0.113.0/24 via 192.0.2.1; };
26
+ - keyword: pipe
27
+ usage: protocol pipe { table master4; peer table backup4; };
28
+ - keyword: mpls domain
29
+ usage: mpls domain core_mpls;
30
+ - keyword: label policy
31
+ usage: label policy aggregate;
32
+ - keyword: label range
33
+ usage: label range dynamic;
34
+ - keyword: aggregator
35
+ usage: protocol aggregator sum4 {}
36
+ - keyword: bmp
37
+ usage: protocol bmp monitor { station address 192.0.2.200 port 1790; };
38
+ - keyword: l3vpn
39
+ usage: protocol l3vpn vpn1 { vrf "blue"; };
40
+ - keyword: mrt
41
+ usage: protocol mrt dump1 { table master4; filename "/var/log/bird.mrt"; };
42
+ - keyword: perf
43
+ usage: protocol perf bench {}
44
+ - keyword: radv
45
+ usage: protocol radv ra1 { interface "eth*" { max ra interval 30; }; };
46
+ - keyword: rpki
47
+ usage: protocol rpki rpki1 { remote "192.0.2.50" port 3323; };
48
+ # ── Static route types ──────────────────────────────────────────
49
+ - keyword: route
50
+ usage: route 203.0.113.0/24 via 192.0.2.1;
51
+ - keyword: next hop
52
+ usage: route 203.0.113.0/24 via 192.0.2.1;
53
+ - keyword: blackhole
54
+ usage: route 203.0.113.0/24 blackhole;
55
+ - keyword: unreachable
56
+ usage: route 203.0.113.0/24 unreachable;
57
+ - keyword: prohibit
58
+ usage: route 203.0.113.0/24 prohibit;
59
+ path: protocol.static
60
+ - keyword: password
61
+ usage: password "secret";
62
+ # ── Kernel sub-options ──────────────────────────────────────────
63
+ - keyword: persist
64
+ usage: persist;
65
+ path: protocol.kernel
66
+ - keyword: learn
67
+ usage: learn;
68
+ path: protocol.kernel
69
+ - keyword: kernel table
70
+ usage: kernel table 200;
71
+ path: protocol.kernel
72
+ - keyword: merge paths
73
+ usage: merge paths on;
74
+ path: protocol.kernel
75
+ - keyword: scan time
76
+ usage: scan time 10;
77
+ path: protocol.device
78
+ - keyword: check link
79
+ usage: check link yes;
80
+ path: protocol.direct
81
+ - keyword: peer table
82
+ usage: peer table backup4;
83
+ path: protocol.pipe
84
+ # ── Static sub-options ──────────────────────────────────────────
85
+ - keyword: igp table
86
+ usage: igp table master4;
87
+ path: protocol.static
88
+ - keyword: recursive
89
+ usage: route 203.0.113.0/24 recursive 192.0.2.1;
90
+ path: protocol.static
91
+ # ── BFD sub-options ─────────────────────────────────────────────
92
+ - keyword: interval
93
+ usage: interval 100 ms;
94
+ path: protocol.bfd.interface
95
+ - keyword: min rx interval
96
+ usage: min rx interval 50 ms;
97
+ path: protocol.bfd.interface
98
+ - keyword: min tx interval
99
+ usage: min tx interval 50 ms;
100
+ path: protocol.bfd.interface
101
+ - keyword: idle tx interval
102
+ usage: idle tx interval 500 ms;
103
+ path: protocol.bfd.interface
104
+ - keyword: multiplier
105
+ usage: multiplier 5;
106
+ path: protocol.bfd.interface
107
+ # ── Babel sub-options ───────────────────────────────────────────
108
+ - keyword: randomize router id
109
+ usage: randomize router id yes;
110
+ path: protocol.babel
111
+ - keyword: rxcost
112
+ usage: rxcost 256;
113
+ path: protocol.babel.interface
114
+ - keyword: hello interval
115
+ usage: hello interval 4;
116
+ path: protocol.babel.interface
117
+ - keyword: update interval
118
+ usage: update interval 16;
119
+ path: protocol.babel.interface
120
+ - keyword: rtt cost
121
+ usage: rtt cost 100;
122
+ path: protocol.babel.interface
123
+ - keyword: rtt min
124
+ usage: rtt min 10 ms;
125
+ path: protocol.babel.interface
126
+ - keyword: rtt max
127
+ usage: rtt max 120 ms;
128
+ path: protocol.babel.interface
129
+ # ── RIP sub-options ─────────────────────────────────────────────
130
+ - keyword: infinity
131
+ usage: infinity 16;
132
+ path: protocol.rip
133
+ - keyword: update time
134
+ usage: update time 30;
135
+ path: protocol.rip.interface
136
+ - keyword: timeout time
137
+ usage: timeout time 180;
138
+ path: protocol.rip.interface
139
+ - keyword: garbage time
140
+ usage: garbage time 120;
141
+ path: protocol.rip.interface
142
+ - keyword: split horizon
143
+ usage: split horizon yes;
144
+ path: protocol.rip.interface
145
+ - keyword: poison reverse
146
+ usage: poison reverse yes;
147
+ path: protocol.rip.interface
148
+ - keyword: version
149
+ usage: version 2;
150
+ path: protocol.rip.interface
151
+ # ── RAdv sub-options ────────────────────────────────────────────
152
+ - keyword: trigger
153
+ usage: trigger "eth0";
154
+ path: protocol.radv
155
+ - keyword: propagate routes
156
+ usage: propagate routes yes;
157
+ path: protocol.radv
158
+ - keyword: max ra interval
159
+ usage: max ra interval 600;
160
+ path: protocol.radv.interface
161
+ - keyword: min ra interval
162
+ usage: min ra interval 200;
163
+ path: protocol.radv.interface
164
+ - keyword: managed
165
+ usage: managed yes;
166
+ path: protocol.radv.interface
167
+ - keyword: other config
168
+ usage: other config yes;
169
+ path: protocol.radv.interface
170
+ - keyword: link mtu
171
+ usage: link mtu 1500;
172
+ path: protocol.radv.interface
173
+ - keyword: default lifetime
174
+ usage: default lifetime 1800;
175
+ path: protocol.radv.interface
176
+ - keyword: default preference
177
+ usage: default preference high;
178
+ path: protocol.radv.interface
179
+ - keyword: rdnss
180
+ usage: rdnss 2001:db8::1;
181
+ path: protocol.radv
182
+ - keyword: dnssl
183
+ usage: dnssl "example.com";
184
+ path: protocol.radv
185
+ # ── RPKI sub-options ────────────────────────────────────────────
186
+ - keyword: remote
187
+ usage: remote "192.0.2.50" port 3323;
188
+ path: protocol.rpki
189
+ - keyword: port
190
+ usage: port 3323;
191
+ path: protocol.rpki
192
+ - keyword: refresh
193
+ usage: refresh 3600;
194
+ path: protocol.rpki
195
+ - keyword: retry
196
+ usage: retry 600;
197
+ path: protocol.rpki
198
+ - keyword: expire
199
+ usage: expire 7200;
200
+ path: protocol.rpki
201
+ - keyword: ignore max length
202
+ usage: ignore max length;
203
+ path: protocol.rpki
204
+ - keyword: transport tcp
205
+ usage: transport tcp;
206
+ path: protocol.rpki
207
+ - keyword: transport ssh
208
+ usage: 'transport ssh { bird private key "/etc/bird/ssh_key"; };'
209
+ path: protocol.rpki
210
+ - keyword: bird private key
211
+ usage: bird private key "/etc/bird/ssh_key";
212
+ path: protocol.rpki
213
+ - keyword: remote public key
214
+ usage: remote public key "/etc/bird/rpki_pub.pem";
215
+ path: protocol.rpki
216
+ # ── Extended protocol sub-options ───────────────────────────────
217
+ - keyword: aggregate on
218
+ usage: aggregate on net;
219
+ path: protocol.aggregator
220
+ - keyword: merge by
221
+ usage: merge by bgp_path;
222
+ path: protocol.aggregator
223
+ - keyword: station address
224
+ usage: station address 192.0.2.200;
225
+ path: protocol.bmp
226
+ - keyword: station port
227
+ usage: station port 1790;
228
+ path: protocol.bmp
229
+ - keyword: monitoring rib
230
+ usage: monitoring rib in pre_policy;
231
+ path: protocol.bmp
232
+ - keyword: route distinguisher
233
+ usage: route distinguisher 65000:100;
234
+ path: protocol.l3vpn
235
+ - keyword: route target
236
+ usage: route target 65000:100;
237
+ path: protocol.l3vpn
238
+ - keyword: import target
239
+ usage: import target 65000:100;
240
+ path: protocol.l3vpn
241
+ - keyword: export target
242
+ usage: export target 65000:100;
243
+ path: protocol.l3vpn
244
+ - keyword: filename
245
+ usage: filename "/var/log/bird.mrt";
246
+ path: protocol.mrt
247
+ - keyword: period
248
+ usage: period 3600;
249
+ path: protocol.mrt
250
+ - keyword: always add path
251
+ usage: always add path yes;
252
+ path: protocol.mrt
253
+ - keyword: mode
254
+ usage: mode import;
255
+ path: protocol.perf
256
+ - keyword: repeat
257
+ usage: repeat 1000;
258
+ path: protocol.perf
@@ -0,0 +1,254 @@
1
+ entries:
2
+ # ── Protocol-level ────────────────────────────────────────────────
3
+ - keyword: bgp
4
+ usage: |
5
+ protocol bgp upstream {
6
+ local as 65001;
7
+ neighbor 192.0.2.1 as 64496;
8
+ hold time 90;
9
+ keepalive time 30;
10
+ graceful restart on;
11
+ ipv4 {
12
+ import all;
13
+ export filter only_bgp;
14
+ next hop self;
15
+ };
16
+ }
17
+ - keyword: local as
18
+ path: protocol.bgp
19
+ usage: |
20
+ protocol bgp <name> {
21
+ local as <asn>;
22
+ }
23
+ - keyword: neighbor
24
+ path: protocol.bgp
25
+ usage: |
26
+ protocol bgp <name> {
27
+ neighbor 192.0.2.1 as 64496;
28
+ }
29
+ - keyword: multihop
30
+ path: protocol.bgp
31
+ usage: |
32
+ protocol bgp <name> {
33
+ multihop <hops>;
34
+ }
35
+ - keyword: hold time
36
+ path: protocol.bgp
37
+ usage: |
38
+ protocol bgp <name> {
39
+ hold time <seconds>;
40
+ }
41
+ - keyword: keepalive time
42
+ path: protocol.bgp
43
+ usage: |
44
+ protocol bgp <name> {
45
+ keepalive time <seconds>;
46
+ }
47
+ - keyword: source address
48
+ path: protocol.bgp
49
+ usage: |
50
+ protocol bgp <name> {
51
+ source address <ip>;
52
+ }
53
+ - keyword: ttl security
54
+ path: protocol.bgp
55
+ usage: |
56
+ protocol bgp <name> {
57
+ ttl security <switch>;
58
+ }
59
+ - keyword: password
60
+ path: protocol.bgp
61
+ usage: |
62
+ protocol bgp <name> {
63
+ password "bgp-secret";
64
+ }
65
+ - keyword: passive
66
+ path: protocol.bgp
67
+ usage: |
68
+ protocol bgp <name> {
69
+ passive <switch>;
70
+ }
71
+ - keyword: rr client
72
+ path: protocol.bgp
73
+ usage: |
74
+ protocol bgp <name> {
75
+ rr client;
76
+ }
77
+ - keyword: rr cluster id
78
+ path: protocol.bgp
79
+ usage: |
80
+ protocol bgp <name> {
81
+ rr cluster id <id>;
82
+ }
83
+ - keyword: rs client
84
+ path: protocol.bgp
85
+ usage: |
86
+ protocol bgp <name> {
87
+ rs client;
88
+ }
89
+ - keyword: graceful restart
90
+ path: protocol.bgp
91
+ usage: |
92
+ protocol bgp <name> {
93
+ graceful restart on;
94
+ graceful restart time 120;
95
+ }
96
+ - keyword: graceful restart time
97
+ path: protocol.bgp
98
+ usage: |
99
+ protocol bgp <name> {
100
+ graceful restart time 120;
101
+ }
102
+ - keyword: allow local as
103
+ path: protocol.bgp
104
+ usage: |
105
+ protocol bgp <name> {
106
+ allow local as <number>;
107
+ }
108
+ - keyword: bfd
109
+ path: protocol.bgp
110
+ usage: |
111
+ protocol bgp <name> {
112
+ bfd on;
113
+ }
114
+ - keyword: local role
115
+ path: protocol.bgp
116
+ usage: |
117
+ protocol bgp <name> {
118
+ local role peer;
119
+ }
120
+ - keyword: authentication
121
+ path: protocol.bgp
122
+ usage: |
123
+ protocol bgp <name> {
124
+ authentication md5;
125
+ password "secret";
126
+ }
127
+ - keyword: confederation
128
+ path: protocol.bgp
129
+ usage: |
130
+ protocol bgp <name> {
131
+ confederation <number>;
132
+ confederation member;
133
+ }
134
+ - keyword: confederation member
135
+ path: protocol.bgp
136
+ usage: |
137
+ protocol bgp <name> {
138
+ confederation member;
139
+ }
140
+ - keyword: direct
141
+ path: protocol.bgp
142
+ usage: |
143
+ protocol bgp <name> {
144
+ direct;
145
+ }
146
+ - keyword: path metric
147
+ path: protocol.bgp
148
+ usage: |
149
+ protocol bgp <name> {
150
+ path metric on;
151
+ }
152
+ - keyword: med metric
153
+ path: protocol.bgp
154
+ usage: |
155
+ protocol bgp <name> {
156
+ med metric on;
157
+ }
158
+ - keyword: deterministic med
159
+ path: protocol.bgp
160
+ usage: |
161
+ protocol bgp <name> {
162
+ deterministic med on;
163
+ }
164
+ - keyword: igp metric
165
+ path: protocol.bgp
166
+ usage: |
167
+ protocol bgp <name> {
168
+ igp metric on;
169
+ }
170
+ - keyword: interpret communities
171
+ path: protocol.bgp
172
+ usage: |
173
+ protocol bgp <name> {
174
+ interpret communities on;
175
+ }
176
+ - keyword: default bgp_local_pref
177
+ path: protocol.bgp
178
+ usage: |
179
+ protocol bgp <name> {
180
+ default bgp_local_pref 100;
181
+ }
182
+ - keyword: enable extended messages
183
+ path: protocol.bgp
184
+ usage: |
185
+ protocol bgp <name> {
186
+ enable extended messages on;
187
+ }
188
+ - keyword: connect retry time
189
+ path: protocol.bgp
190
+ usage: |
191
+ protocol bgp <name> {
192
+ connect retry time 120;
193
+ }
194
+ - keyword: error wait time
195
+ path: protocol.bgp
196
+ usage: |
197
+ protocol bgp <name> {
198
+ error wait time 60, 300;
199
+ }
200
+ - keyword: disable after error
201
+ path: protocol.bgp
202
+ usage: |
203
+ protocol bgp <name> {
204
+ disable after error on;
205
+ }
206
+ # ── Channel-level ─────────────────────────────────────────────────
207
+ - keyword: next hop self
208
+ path: protocol.bgp.channel
209
+ usage: |
210
+ protocol bgp <name> {
211
+ ipv4 {
212
+ next hop self;
213
+ };
214
+ }
215
+ - keyword: next hop keep
216
+ path: protocol.bgp.channel
217
+ usage: |
218
+ protocol bgp <name> {
219
+ ipv4 {
220
+ next hop keep on;
221
+ };
222
+ }
223
+ - keyword: add paths
224
+ path: protocol.bgp.channel
225
+ usage: |
226
+ protocol bgp <name> {
227
+ ipv4 {
228
+ add paths tx;
229
+ };
230
+ }
231
+ - keyword: gateway
232
+ path: protocol.bgp.channel
233
+ usage: |
234
+ protocol bgp <name> {
235
+ ipv4 {
236
+ gateway recursive;
237
+ };
238
+ }
239
+ - keyword: extended next hop
240
+ path: protocol.bgp.channel
241
+ usage: |
242
+ protocol bgp <name> {
243
+ ipv4 {
244
+ extended next hop on;
245
+ };
246
+ }
247
+ - keyword: aigp
248
+ path: protocol.bgp.channel
249
+ usage: |
250
+ protocol bgp <name> {
251
+ ipv4 {
252
+ aigp on;
253
+ };
254
+ }