summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>2015-09-23 11:58:53 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2015-09-25 18:17:06 +0900
commit8adeda1ad84b61090f6f46509e8a0eef5e4fec77 (patch)
tree760fa8030313b374cc9c56239f3817ec84fc0824
parent92bfac20656fc30fb767bfbabf333671aa7a77f8 (diff)
config: add mpls label range configuration
you can specify mpls label range from which gobgpd automatically assign to vpn routes like below ``` [Global] As = 65000 RouterId = "192.168.255.1" [Global.MplsLabelRange] MinLabel = 1000 MaxLabel = 1999 ``` default values (min:16000, max:1048575) is taken from cisco ios xr. Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
-rw-r--r--config/bgp_configs.go10
-rw-r--r--config/default.go10
-rw-r--r--tools/pyang_plugins/gobgp.yang13
3 files changed, 33 insertions, 0 deletions
diff --git a/config/bgp_configs.go b/config/bgp_configs.go
index cd8df79d..ae19a162 100644
--- a/config/bgp_configs.go
+++ b/config/bgp_configs.go
@@ -791,6 +791,14 @@ type Neighbors struct {
NeighborList []Neighbor
}
+//struct for container gobgp:mpls-label-range
+type MplsLabelRange struct {
+ // original -> gobgp:min-label
+ MinLabel uint32
+ // original -> gobgp:max-label
+ MaxLabel uint32
+}
+
//struct for container gobgp:zebra
type Zebra struct {
// original -> gobgp:enabled
@@ -1346,6 +1354,8 @@ type Global struct {
Mrt Mrt
// original -> gobgp:zebra
Zebra Zebra
+ // original -> gobgp:mpls-label-range
+ MplsLabelRange MplsLabelRange
}
//struct for container bgp:bgp
diff --git a/config/default.go b/config/default.go
index d3160989..2170e0dd 100644
--- a/config/default.go
+++ b/config/default.go
@@ -10,6 +10,8 @@ const (
DEFAULT_HOLDTIME = 90
DEFAULT_IDLE_HOLDTIME_AFTER_RESET = 30
DEFAULT_CONNECT_RETRY = 120
+ DEFAULT_MPLS_LABEL_MIN = 16000
+ DEFAULT_MPLS_LABEL_MAX = 1048575
)
type neighbor struct {
@@ -45,6 +47,14 @@ func SetDefaultConfigValues(md toml.MetaData, bt *Bgp) error {
}
}
+ if _, ok := global["Global.MplsLabelRange.MinLabel"]; !ok {
+ bt.Global.MplsLabelRange.MinLabel = DEFAULT_MPLS_LABEL_MIN
+ }
+
+ if _, ok := global["Global.MplsLabelRange.MaxLabel"]; !ok {
+ bt.Global.MplsLabelRange.MaxLabel = DEFAULT_MPLS_LABEL_MAX
+ }
+
nidx := 0
for _, key := range md.Keys() {
if !strings.HasPrefix(key.String(), "Neighbors.NeighborList") {
diff --git a/tools/pyang_plugins/gobgp.yang b/tools/pyang_plugins/gobgp.yang
index aff25752..c1107ea6 100644
--- a/tools/pyang_plugins/gobgp.yang
+++ b/tools/pyang_plugins/gobgp.yang
@@ -641,4 +641,17 @@ module bgp-gobgp {
}
}
}
+
+ augment "/bgp:bgp/bgp:global" {
+ container mpls-label-range {
+ description "mpls labal range";
+
+ leaf min-label {
+ type uint32;
+ }
+ leaf max-label {
+ type uint32;
+ }
+ }
+ }
}