فهرست منبع

Reconcile persistent state after driver config

Reconciling persistent state after configuring driver. If not
the networks will not be initialized properly based on certain
driver config settings like enabling IP tables etc.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
Jana Radhakrishnan 9 سال پیش
والد
کامیت
71207b575e
1فایلهای تغییر یافته به همراه16 افزوده شده و 11 حذف شده
  1. 16 11
      libnetwork/drivers/bridge/bridge.go

+ 16 - 11
libnetwork/drivers/bridge/bridge.go

@@ -338,16 +338,11 @@ func (c *networkConfiguration) conflictsWithNetworks(id string, others []*bridge
 }
 
 func (d *driver) configure(option map[string]interface{}) error {
-	var config *configuration
-	var err error
-
-	err = d.initStore(option)
-	if err != nil {
-		return err
-	}
-
-	d.Lock()
-	defer d.Unlock()
+	var (
+		config                *configuration
+		err                   error
+		natChain, filterChain *iptables.ChainInfo
+	)
 
 	genericData, ok := option[netlabel.GenericData]
 	if !ok || genericData == nil {
@@ -375,13 +370,23 @@ func (d *driver) configure(option map[string]interface{}) error {
 	}
 
 	if config.EnableIPTables {
-		d.natChain, d.filterChain, err = setupIPChains(config)
+		natChain, filterChain, err = setupIPChains(config)
 		if err != nil {
 			return err
 		}
 	}
 
+	d.Lock()
+	d.natChain = natChain
+	d.filterChain = filterChain
 	d.config = config
+	d.Unlock()
+
+	err = d.initStore(option)
+	if err != nil {
+		return err
+	}
+
 	return nil
 }