diff options
author | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2016-04-22 07:30:40 +0000 |
---|---|---|
committer | ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp> | 2016-04-22 07:42:02 +0000 |
commit | 30456e9ffd7508f96db90df2b035ad2e5cfeb904 (patch) | |
tree | 6be08df4ae80660c78e78c86e0efea178d6489a0 | |
parent | 0c58e348de62bf156582417a6b9d726dd4fe116e (diff) |
config: fix bug of UpdateConfig()
avoid reconfiguration when policy configuration is not changed
Signed-off-by: ISHIDA Wataru <ishida.wataru@lab.ntt.co.jp>
-rw-r--r-- | config/serve.go | 14 | ||||
-rw-r--r-- | gobgpd/main.go | 4 |
2 files changed, 5 insertions, 13 deletions
diff --git a/config/serve.go b/config/serve.go index 3b4d7acd..21196433 100644 --- a/config/serve.go +++ b/config/serve.go @@ -76,15 +76,8 @@ func ConfigSetToRoutingPolicy(c *BgpConfigSet) *RoutingPolicy { } } -func UpdateConfig(curC *BgpConfigSet, newC *BgpConfigSet) (*BgpConfigSet, []Neighbor, []Neighbor, []Neighbor, bool) { - bgpConfig := &BgpConfigSet{} - if curC == nil { - bgpConfig.Global = newC.Global - curC = bgpConfig - } else { - // can't update the global config - bgpConfig.Global = curC.Global - } +func UpdateConfig(curC, newC *BgpConfigSet) ([]Neighbor, []Neighbor, []Neighbor, bool) { + added := []Neighbor{} deleted := []Neighbor{} updated := []Neighbor{} @@ -103,8 +96,7 @@ func UpdateConfig(curC *BgpConfigSet, newC *BgpConfigSet) (*BgpConfigSet, []Neig } } - bgpConfig.Neighbors = newC.Neighbors - return bgpConfig, added, deleted, updated, CheckPolicyDifference(ConfigSetToRoutingPolicy(curC), ConfigSetToRoutingPolicy(newC)) + return added, deleted, updated, CheckPolicyDifference(ConfigSetToRoutingPolicy(curC), ConfigSetToRoutingPolicy(newC)) } func CheckPolicyDifference(currentPolicy *RoutingPolicy, newPolicy *RoutingPolicy) bool { diff --git a/gobgpd/main.go b/gobgpd/main.go index d955599f..192b85f9 100644 --- a/gobgpd/main.go +++ b/gobgpd/main.go @@ -229,13 +229,13 @@ func main() { } else { var updatePolicy bool - c, added, deleted, updated, updatePolicy = config.UpdateConfig(c, newConfig) + added, deleted, updated, updatePolicy = config.UpdateConfig(c, newConfig) if updatePolicy { log.Info("Policy config is updated") p := config.ConfigSetToRoutingPolicy(newConfig) bgpServer.UpdatePolicy(*p) } - + c = newConfig } for _, p := range added { |