diff options
author | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2016-03-16 16:02:34 +0900 |
---|---|---|
committer | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2016-03-17 10:47:03 +0900 |
commit | 5120cfc7ca03bb5742123b16d1452749d62c8db4 (patch) | |
tree | d0b2c75657080546e660cd871094b712f88845c0 /config | |
parent | b06b3ad42fe07cafd4ffee3e21068a324bff5bba (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.go | 72 | ||||
-rw-r--r-- | config/default.go | 4 | ||||
-rw-r--r-- | config/serve.go | 18 |
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, |