summaryrefslogtreecommitdiffhomepage
path: root/config
diff options
context:
space:
mode:
authorISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>2016-03-16 16:02:34 +0900
committerISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>2016-03-17 10:47:03 +0900
commit5120cfc7ca03bb5742123b16d1452749d62c8db4 (patch)
treed0b2c75657080546e660cd871094b712f88845c0 /config
parentb06b3ad42fe07cafd4ffee3e21068a324bff5bba (diff)
config: move Mrt/Bmp configuration outside of Global configuration
Global config basically store configuration whose change will cause all neighbor session restart. Mrt and Bmp configuration is not such. Put them outside of Global config. Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
Diffstat (limited to 'config')
-rw-r--r--config/bgp_configs.go72
-rw-r--r--config/default.go4
-rw-r--r--config/serve.go18
3 files changed, 50 insertions, 44 deletions
diff --git a/config/bgp_configs.go b/config/bgp_configs.go
index d6c68782..eda8ce98 100644
--- a/config/bgp_configs.go
+++ b/config/bgp_configs.go
@@ -828,6 +828,38 @@ func (v RpkiValidationResultType) Validate() error {
return nil
}
+//struct for container gobgp:mrt
+type Mrt struct {
+ // original -> gobgp:file-name
+ FileName string `mapstructure:"file-name"`
+}
+
+//struct for container gobgp:state
+type BmpServerState struct {
+}
+
+//struct for container gobgp:config
+type BmpServerConfig struct {
+ // original -> gobgp:address
+ //gobgp:address's original type is inet:ip-address
+ Address string `mapstructure:"address"`
+ // original -> gobgp:port
+ Port uint32 `mapstructure:"port"`
+ // original -> gobgp:route-monitoring-policy
+ RouteMonitoringPolicy BmpRouteMonitoringPolicyType `mapstructure:"route-monitoring-policy"`
+}
+
+//struct for container gobgp:bmp-server
+type BmpServer struct {
+ // original -> gobgp:address
+ //gobgp:address's original type is inet:ip-address
+ Address string `mapstructure:"address"`
+ // original -> gobgp:bmp-server-config
+ Config BmpServerConfig `mapstructure:"config"`
+ // original -> gobgp:bmp-server-state
+ State BmpServerState `mapstructure:"state"`
+}
+
//struct for container gobgp:rpki-received
type RpkiReceived struct {
// original -> gobgp:serial-notify
@@ -1471,38 +1503,6 @@ type Zebra struct {
RedistributeRouteTypeList []InstallProtocolType `mapstructure:"redistribute-route-type-list"`
}
-//struct for container gobgp:mrt
-type Mrt struct {
- // original -> gobgp:file-name
- FileName string `mapstructure:"file-name"`
-}
-
-//struct for container gobgp:state
-type BmpServerState struct {
-}
-
-//struct for container gobgp:config
-type BmpServerConfig struct {
- // original -> gobgp:address
- //gobgp:address's original type is inet:ip-address
- Address string `mapstructure:"address"`
- // original -> gobgp:port
- Port uint32 `mapstructure:"port"`
- // original -> gobgp:route-monitoring-policy
- RouteMonitoringPolicy BmpRouteMonitoringPolicyType `mapstructure:"route-monitoring-policy"`
-}
-
-//struct for container gobgp:bmp-server
-type BmpServer struct {
- // original -> gobgp:address
- //gobgp:address's original type is inet:ip-address
- Address string `mapstructure:"address"`
- // original -> gobgp:bmp-server-config
- Config BmpServerConfig `mapstructure:"config"`
- // original -> gobgp:bmp-server-state
- State BmpServerState `mapstructure:"state"`
-}
-
//struct for container gobgp:collector
type Collector struct {
// original -> gobgp:enabled
@@ -2050,10 +2050,6 @@ type Global struct {
ApplyPolicy ApplyPolicy `mapstructure:"apply-policy"`
// original -> gobgp:collector
Collector Collector `mapstructure:"collector"`
- // original -> gobgp:bmp-servers
- BmpServers []BmpServer `mapstructure:"bmp-servers"`
- // original -> gobgp:mrt
- Mrt Mrt `mapstructure:"mrt"`
// original -> gobgp:zebra
Zebra Zebra `mapstructure:"zebra"`
// original -> gobgp:mpls-label-range
@@ -2072,6 +2068,10 @@ type Bgp struct {
PeerGroups []PeerGroup `mapstructure:"peer-groups"`
// original -> gobgp:rpki-servers
RpkiServers []RpkiServer `mapstructure:"rpki-servers"`
+ // original -> gobgp:bmp-servers
+ BmpServers []BmpServer `mapstructure:"bmp-servers"`
+ // original -> gobgp:mrt
+ Mrt Mrt `mapstructure:"mrt"`
}
//struct for container bgp-pol:set-ext-community-method
diff --git a/config/default.go b/config/default.go
index 536b7a1e..cdd2ee54 100644
--- a/config/default.go
+++ b/config/default.go
@@ -48,11 +48,11 @@ func SetDefaultConfigValues(v *viper.Viper, b *Bgp) error {
b.Global.ListenConfig.Port = bgp.BGP_PORT
}
- for idx, server := range b.Global.BmpServers {
+ for idx, server := range b.BmpServers {
if server.Config.Port == 0 {
server.Config.Port = bgp.BMP_DEFAULT_PORT
}
- b.Global.BmpServers[idx] = server
+ b.BmpServers[idx] = server
}
if !v.IsSet("global.mpls-label-range.min-label") {
diff --git a/config/serve.go b/config/serve.go
index 4b5fbbe9..9cb3b31e 100644
--- a/config/serve.go
+++ b/config/serve.go
@@ -20,7 +20,7 @@ func ReadConfigfileServe(path, format string, configCh chan BgpConfigSet) {
cnt := 0
for {
- b := Bgp{}
+ var b *Bgp
v := viper.New()
v.SetConfigFile(path)
v.SetConfigType(format)
@@ -29,6 +29,8 @@ func ReadConfigfileServe(path, format string, configCh chan BgpConfigSet) {
Global Global `mapstructure:"global"`
Neighbors []Neighbor `mapstructure:"neighbors"`
RpkiServers []RpkiServer `mapstructure:"rpki-servers"`
+ BmpServers []BmpServer `mapstructure:"bmp-servers"`
+ Mrt Mrt `mapstructure:"mrt"`
DefinedSets DefinedSets `mapstructure:"defined-sets"`
PolicyDefinitions []PolicyDefinition `mapstructure:"policy-definitions"`
}{}
@@ -39,10 +41,14 @@ func ReadConfigfileServe(path, format string, configCh chan BgpConfigSet) {
if err != nil {
goto ERROR
}
- b.Global = c.Global
- b.Neighbors = c.Neighbors
- b.RpkiServers = c.RpkiServers
- err = SetDefaultConfigValues(v, &b)
+ b = &Bgp{
+ Global: c.Global,
+ Neighbors: c.Neighbors,
+ RpkiServers: c.RpkiServers,
+ BmpServers: c.BmpServers,
+ Mrt: c.Mrt,
+ }
+ err = SetDefaultConfigValues(v, b)
if err != nil {
goto ERROR
}
@@ -51,7 +57,7 @@ func ReadConfigfileServe(path, format string, configCh chan BgpConfigSet) {
}
cnt++
configCh <- BgpConfigSet{
- Bgp: b,
+ Bgp: *b,
Policy: RoutingPolicy{
DefinedSets: c.DefinedSets,
PolicyDefinitions: c.PolicyDefinitions,