Explorar el Código

libnetwork/osl: Namespace: inline setGateway and setGatewayIPv6

They were not consistently used, and the locations where they were
used were already "setters", so we may as well inline the code.

Also updating Namespace.Restore to keep the lock slightly longer,
instead of locking/unlocking for each property individually, although
we should consider to keep the long for the duration of the whole
function to make it more atomic.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Sebastiaan van Stijn hace 1 año
padre
commit
7b96663082
Se han modificado 2 ficheros con 13 adiciones y 29 borrados
  1. 4 14
      libnetwork/osl/namespace_linux.go
  2. 9 15
      libnetwork/osl/route_linux.go

+ 4 - 14
libnetwork/osl/namespace_linux.go

@@ -557,26 +557,16 @@ func (n *Namespace) Restore(ifsopt map[Iface][]IfaceOption, routes []*types.Stat
 		}
 	}
 
-	// restore routes
-	for _, r := range routes {
-		n.mu.Lock()
-		n.staticRoutes = append(n.staticRoutes, r)
-		n.mu.Unlock()
-	}
-
-	// restore gateway
+	// restore routes and gateways
+	n.mu.Lock()
+	n.staticRoutes = append(n.staticRoutes, routes...)
 	if len(gw) > 0 {
-		n.mu.Lock()
 		n.gw = gw
-		n.mu.Unlock()
 	}
-
 	if len(gw6) > 0 {
-		n.mu.Lock()
 		n.gwv6 = gw6
-		n.mu.Unlock()
 	}
-
+	n.mu.Unlock()
 	return nil
 }
 

+ 9 - 15
libnetwork/osl/route_linux.go

@@ -40,18 +40,6 @@ func (n *Namespace) StaticRoutes() []*types.StaticRoute {
 	return routes
 }
 
-func (n *Namespace) setGateway(gw net.IP) {
-	n.mu.Lock()
-	n.gw = gw
-	n.mu.Unlock()
-}
-
-func (n *Namespace) setGatewayIPv6(gwv6 net.IP) {
-	n.mu.Lock()
-	n.gwv6 = gwv6
-	n.mu.Unlock()
-}
-
 // SetGateway sets the default IPv4 gateway for the sandbox. It is a no-op
 // if the given gateway is empty.
 func (n *Namespace) SetGateway(gw net.IP) error {
@@ -62,7 +50,9 @@ func (n *Namespace) SetGateway(gw net.IP) error {
 	if err := n.programGateway(gw, true); err != nil {
 		return err
 	}
-	n.setGateway(gw)
+	n.mu.Lock()
+	n.gw = gw
+	n.mu.Unlock()
 	return nil
 }
 
@@ -77,7 +67,9 @@ func (n *Namespace) UnsetGateway() error {
 	if err := n.programGateway(gw, false); err != nil {
 		return err
 	}
-	n.setGateway(net.IP{})
+	n.mu.Lock()
+	n.gw = net.IP{}
+	n.mu.Unlock()
 	return nil
 }
 
@@ -155,7 +147,9 @@ func (n *Namespace) SetGatewayIPv6(gwv6 net.IP) error {
 		return err
 	}
 
-	n.setGatewayIPv6(gwv6)
+	n.mu.Lock()
+	n.gwv6 = gwv6
+	n.mu.Unlock()
 	return nil
 }