diff --git a/libnetwork/diagnostic/server.go b/libnetwork/diagnostic/server.go index f351762bd1..cca30cd32e 100644 --- a/libnetwork/diagnostic/server.go +++ b/libnetwork/diagnostic/server.go @@ -9,7 +9,7 @@ import ( "sync/atomic" stackdump "github.com/docker/docker/pkg/signal" - "github.com/docker/libnetwork/common" + "github.com/docker/libnetwork/internal/caller" "github.com/sirupsen/logrus" ) @@ -127,7 +127,7 @@ func notImplemented(ctx interface{}, w http.ResponseWriter, r *http.Request) { rsp := WrongCommand("not implemented", fmt.Sprintf("URL path: %s no method implemented check /help\n", r.URL.Path)) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("command not implemented done") HTTPReply(w, rsp, json) @@ -138,7 +138,7 @@ func help(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("help done") n, ok := ctx.(*Server) @@ -156,7 +156,7 @@ func ready(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("ready done") HTTPReply(w, CommandSucceed(&StringCmd{Info: "OK"}), json) } @@ -166,7 +166,7 @@ func stackTrace(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("stack trace") path, err := stackdump.DumpStacks("/tmp/") diff --git a/libnetwork/drivers/overlay/peerdb.go b/libnetwork/drivers/overlay/peerdb.go index 819b68ff90..58d70d04d8 100644 --- a/libnetwork/drivers/overlay/peerdb.go +++ b/libnetwork/drivers/overlay/peerdb.go @@ -7,7 +7,8 @@ import ( "sync" "syscall" - "github.com/docker/libnetwork/common" + "github.com/docker/libnetwork/internal/caller" + "github.com/docker/libnetwork/internal/setmatrix" "github.com/docker/libnetwork/osl" "github.com/sirupsen/logrus" ) @@ -59,7 +60,7 @@ func (p *peerEntryDB) UnMarshalDB() peerEntry { type peerMap struct { // set of peerEntry, note they have to be objects and not pointers to maintain the proper equality checks - mp common.SetMatrix + mp setmatrix.SetMatrix sync.Mutex } @@ -170,7 +171,7 @@ func (d *driver) peerDbAdd(nid, eid string, peerIP net.IP, peerIPMask net.IPMask pMap, ok := d.peerDb.mp[nid] if !ok { d.peerDb.mp[nid] = &peerMap{ - mp: common.NewSetMatrix(), + mp: setmatrix.NewSetMatrix(), } pMap = d.peerDb.mp[nid] @@ -297,7 +298,7 @@ func (d *driver) peerOpRoutine(ctx context.Context, ch chan *peerOperation) { } func (d *driver) peerInit(nid string) { - callerName := common.CallerName(1) + callerName := caller.Name(1) d.peerOpCh <- &peerOperation{ opType: peerOperationINIT, networkID: nid, @@ -331,7 +332,7 @@ func (d *driver) peerAdd(nid, eid string, peerIP net.IP, peerIPMask net.IPMask, l2Miss: l2Miss, l3Miss: l3Miss, localPeer: localPeer, - callerName: common.CallerName(1), + callerName: caller.Name(1), } } @@ -422,7 +423,7 @@ func (d *driver) peerDelete(nid, eid string, peerIP net.IP, peerIPMask net.IPMas peerIPMask: peerIPMask, peerMac: peerMac, vtepIP: vtep, - callerName: common.CallerName(1), + callerName: caller.Name(1), localPeer: localPeer, } } @@ -491,7 +492,7 @@ func (d *driver) peerFlush(nid string) { d.peerOpCh <- &peerOperation{ opType: peerOperationFLUSH, networkID: nid, - callerName: common.CallerName(1), + callerName: caller.Name(1), } } diff --git a/libnetwork/common/caller.go b/libnetwork/internal/caller/caller.go similarity index 66% rename from libnetwork/common/caller.go rename to libnetwork/internal/caller/caller.go index 0dec3bc0bc..1634ffc6b3 100644 --- a/libnetwork/common/caller.go +++ b/libnetwork/internal/caller/caller.go @@ -1,4 +1,4 @@ -package common +package caller import ( "runtime" @@ -11,7 +11,7 @@ func callerInfo(i int) string { if ok { f := runtime.FuncForPC(ptr) if f != nil { - // f.Name() is like: github.com/docker/libnetwork/common.MethodName + // f.Name() is like: github.com/docker/libnetwork/caller.MethodName tmp := strings.Split(f.Name(), ".") if len(tmp) > 0 { fName = tmp[len(tmp)-1] @@ -22,8 +22,8 @@ func callerInfo(i int) string { return fName } -// CallerName returns the name of the function at the specified level +// Name returns the name of the function at the specified level // level == 0 means current method name -func CallerName(level int) string { +func Name(level int) string { return callerInfo(2 + level) } diff --git a/libnetwork/common/caller_test.go b/libnetwork/internal/caller/caller_test.go similarity index 80% rename from libnetwork/common/caller_test.go rename to libnetwork/internal/caller/caller_test.go index babfbb7bdb..ce78fe66d3 100644 --- a/libnetwork/common/caller_test.go +++ b/libnetwork/internal/caller/caller_test.go @@ -1,13 +1,17 @@ -package common +package caller -import "testing" +import ( + "testing" + + _ "github.com/docker/libnetwork/testutils" +) func fun1() string { - return CallerName(0) + return Name(0) } func fun2() string { - return CallerName(1) + return Name(1) } func fun3() string { @@ -15,7 +19,7 @@ func fun3() string { } func fun4() string { - return CallerName(0) + return Name(0) } func fun5() string { @@ -23,7 +27,7 @@ func fun5() string { } func fun6() string { - return CallerName(1) + return Name(1) } func TestCaller(t *testing.T) { diff --git a/libnetwork/common/setmatrix.go b/libnetwork/internal/setmatrix/setmatrix.go similarity index 99% rename from libnetwork/common/setmatrix.go rename to libnetwork/internal/setmatrix/setmatrix.go index 72be5bbbfc..4a57d841cf 100644 --- a/libnetwork/common/setmatrix.go +++ b/libnetwork/internal/setmatrix/setmatrix.go @@ -1,4 +1,4 @@ -package common +package setmatrix import ( "sync" diff --git a/libnetwork/common/setmatrix_test.go b/libnetwork/internal/setmatrix/setmatrix_test.go similarity index 99% rename from libnetwork/common/setmatrix_test.go rename to libnetwork/internal/setmatrix/setmatrix_test.go index 875bbfbf71..875a22b8f2 100644 --- a/libnetwork/common/setmatrix_test.go +++ b/libnetwork/internal/setmatrix/setmatrix_test.go @@ -1,4 +1,4 @@ -package common +package setmatrix import ( "context" diff --git a/libnetwork/libnetwork_internal_test.go b/libnetwork/libnetwork_internal_test.go index 172f535b4d..2f58a4fb3a 100644 --- a/libnetwork/libnetwork_internal_test.go +++ b/libnetwork/libnetwork_internal_test.go @@ -7,10 +7,10 @@ import ( "testing" "time" - "github.com/docker/libnetwork/common" "github.com/docker/libnetwork/datastore" "github.com/docker/libnetwork/discoverapi" "github.com/docker/libnetwork/driverapi" + "github.com/docker/libnetwork/internal/setmatrix" "github.com/docker/libnetwork/ipamapi" "github.com/docker/libnetwork/netlabel" "github.com/docker/libnetwork/netutils" @@ -383,9 +383,9 @@ func TestSRVServiceQuery(t *testing.T) { } sr := svcInfo{ - svcMap: common.NewSetMatrix(), - svcIPv6Map: common.NewSetMatrix(), - ipMap: common.NewSetMatrix(), + svcMap: setmatrix.NewSetMatrix(), + svcIPv6Map: setmatrix.NewSetMatrix(), + ipMap: setmatrix.NewSetMatrix(), service: make(map[string][]servicePorts), } // backing container for the service diff --git a/libnetwork/libnetwork_linux_test.go b/libnetwork/libnetwork_linux_test.go index 9de694e33b..9c6b3b1d1c 100644 --- a/libnetwork/libnetwork_linux_test.go +++ b/libnetwork/libnetwork_linux_test.go @@ -658,6 +658,7 @@ func TestResolvConfHost(t *testing.T) { defer os.Remove(resolvConfPath) sb, err := controller.NewSandbox(containerID, + libnetwork.OptionUseDefaultSandbox(), libnetwork.OptionResolvConfPath(resolvConfPath), libnetwork.OptionOriginResolvConfPath("/etc/resolv.conf")) if err != nil { diff --git a/libnetwork/network.go b/libnetwork/network.go index b639cdbb06..309652579e 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -9,11 +9,11 @@ import ( "time" "github.com/docker/docker/pkg/stringid" - "github.com/docker/libnetwork/common" "github.com/docker/libnetwork/config" "github.com/docker/libnetwork/datastore" "github.com/docker/libnetwork/driverapi" "github.com/docker/libnetwork/etchosts" + "github.com/docker/libnetwork/internal/setmatrix" "github.com/docker/libnetwork/ipamapi" "github.com/docker/libnetwork/netlabel" "github.com/docker/libnetwork/netutils" @@ -104,9 +104,9 @@ type svcMapEntry struct { } type svcInfo struct { - svcMap common.SetMatrix - svcIPv6Map common.SetMatrix - ipMap common.SetMatrix + svcMap setmatrix.SetMatrix + svcIPv6Map setmatrix.SetMatrix + ipMap setmatrix.SetMatrix service map[string][]servicePorts } @@ -1353,7 +1353,7 @@ func (n *network) updateSvcRecord(ep *endpoint, localEps []*endpoint, isAdd bool } } -func addIPToName(ipMap common.SetMatrix, name, serviceID string, ip net.IP) { +func addIPToName(ipMap setmatrix.SetMatrix, name, serviceID string, ip net.IP) { reverseIP := netutils.ReverseIP(ip.String()) ipMap.Insert(reverseIP, ipInfo{ name: name, @@ -1361,7 +1361,7 @@ func addIPToName(ipMap common.SetMatrix, name, serviceID string, ip net.IP) { }) } -func delIPToName(ipMap common.SetMatrix, name, serviceID string, ip net.IP) { +func delIPToName(ipMap setmatrix.SetMatrix, name, serviceID string, ip net.IP) { reverseIP := netutils.ReverseIP(ip.String()) ipMap.Remove(reverseIP, ipInfo{ name: name, @@ -1369,14 +1369,14 @@ func delIPToName(ipMap common.SetMatrix, name, serviceID string, ip net.IP) { }) } -func addNameToIP(svcMap common.SetMatrix, name, serviceID string, epIP net.IP) { +func addNameToIP(svcMap setmatrix.SetMatrix, name, serviceID string, epIP net.IP) { svcMap.Insert(name, svcMapEntry{ ip: epIP.String(), serviceID: serviceID, }) } -func delNameToIP(svcMap common.SetMatrix, name, serviceID string, epIP net.IP) { +func delNameToIP(svcMap setmatrix.SetMatrix, name, serviceID string, epIP net.IP) { svcMap.Remove(name, svcMapEntry{ ip: epIP.String(), serviceID: serviceID, @@ -1399,9 +1399,9 @@ func (n *network) addSvcRecords(eID, name, serviceID string, epIP, epIPv6 net.IP sr, ok := c.svcRecords[n.ID()] if !ok { sr = svcInfo{ - svcMap: common.NewSetMatrix(), - svcIPv6Map: common.NewSetMatrix(), - ipMap: common.NewSetMatrix(), + svcMap: setmatrix.NewSetMatrix(), + svcIPv6Map: setmatrix.NewSetMatrix(), + ipMap: setmatrix.NewSetMatrix(), } c.svcRecords[n.ID()] = sr } diff --git a/libnetwork/networkdb/networkdbdiagnostic.go b/libnetwork/networkdb/networkdbdiagnostic.go index a0e9598799..ea90c5a0e8 100644 --- a/libnetwork/networkdb/networkdbdiagnostic.go +++ b/libnetwork/networkdb/networkdbdiagnostic.go @@ -6,8 +6,8 @@ import ( "net/http" "strings" - "github.com/docker/libnetwork/common" "github.com/docker/libnetwork/diagnostic" + "github.com/docker/libnetwork/internal/caller" "github.com/sirupsen/logrus" ) @@ -37,7 +37,7 @@ func dbJoin(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("join cluster") if len(r.Form["members"]) < 1 { @@ -70,7 +70,7 @@ func dbPeers(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("network peers") if len(r.Form["nid"]) < 1 { @@ -104,7 +104,7 @@ func dbClusterPeers(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("cluster peers") nDB, ok := ctx.(*NetworkDB) @@ -127,7 +127,7 @@ func dbCreateEntry(ctx interface{}, w http.ResponseWriter, r *http.Request) { unsafe, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("create entry") if len(r.Form["tname"]) < 1 || @@ -176,7 +176,7 @@ func dbUpdateEntry(ctx interface{}, w http.ResponseWriter, r *http.Request) { unsafe, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("update entry") if len(r.Form["tname"]) < 1 || @@ -224,7 +224,7 @@ func dbDeleteEntry(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("delete entry") if len(r.Form["tname"]) < 1 || @@ -261,7 +261,7 @@ func dbGetEntry(ctx interface{}, w http.ResponseWriter, r *http.Request) { unsafe, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("get entry") if len(r.Form["tname"]) < 1 || @@ -307,7 +307,7 @@ func dbJoinNetwork(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("join network") if len(r.Form["nid"]) < 1 { @@ -339,7 +339,7 @@ func dbLeaveNetwork(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("leave network") if len(r.Form["nid"]) < 1 { @@ -371,7 +371,7 @@ func dbGetTable(ctx interface{}, w http.ResponseWriter, r *http.Request) { unsafe, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("get table") if len(r.Form["tname"]) < 1 || @@ -419,7 +419,7 @@ func dbNetworkStats(ctx interface{}, w http.ResponseWriter, r *http.Request) { _, json := diagnostic.ParseHTTPFormOptions(r) // audit logs - log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": common.CallerName(0), "url": r.URL.String()}) + log := logrus.WithFields(logrus.Fields{"component": "diagnostic", "remoteIP": r.RemoteAddr, "method": caller.Name(0), "url": r.URL.String()}) log.Info("network stats") if len(r.Form["nid"]) < 1 { diff --git a/libnetwork/osl/kernel/knobs.go b/libnetwork/osl/kernel/knobs.go index 5088f0e7f9..a7cd7dbb72 100644 --- a/libnetwork/osl/kernel/knobs.go +++ b/libnetwork/osl/kernel/knobs.go @@ -2,7 +2,7 @@ package kernel type conditionalCheck func(val1, val2 string) bool -// OSValue represents a tuple, value defired, check function when to apply the value +// OSValue represents a tuple, value defined, check function when to apply the value type OSValue struct { Value string CheckFn conditionalCheck diff --git a/libnetwork/resolvconf/resolvconf.go b/libnetwork/resolvconf/resolvconf.go index 5cb251b131..23caf7f120 100644 --- a/libnetwork/resolvconf/resolvconf.go +++ b/libnetwork/resolvconf/resolvconf.go @@ -14,6 +14,11 @@ import ( "github.com/sirupsen/logrus" ) +const ( + // DefaultResolvConf points to the default file used for dns configuration on a linux machine + DefaultResolvConf = "/etc/resolv.conf" +) + var ( // Note: the default IPv4 & IPv6 resolvers are set to Google's Public DNS defaultIPv4Dns = []string{"nameserver 8.8.8.8", "nameserver 8.8.4.4"} @@ -50,15 +55,7 @@ type File struct { // Get returns the contents of /etc/resolv.conf and its hash func Get() (*File, error) { - resolv, err := ioutil.ReadFile("/etc/resolv.conf") - if err != nil { - return nil, err - } - hash, err := ioutils.HashData(bytes.NewReader(resolv)) - if err != nil { - return nil, err - } - return &File{Content: resolv, Hash: hash}, nil + return GetSpecific(DefaultResolvConf) } // GetSpecific returns the contents of the user specified resolv.conf file and its hash diff --git a/libnetwork/sandbox.go b/libnetwork/sandbox.go index acbc243974..947a75dda7 100644 --- a/libnetwork/sandbox.go +++ b/libnetwork/sandbox.go @@ -1098,8 +1098,8 @@ func OptionDNSOptions(options string) SandboxOption { } } -// OptionUseDefaultSandbox function returns an option setter for using default sandbox to -// be passed to container Create method. +// OptionUseDefaultSandbox function returns an option setter for using default sandbox +// (host namespace) to be passed to container Create method. func OptionUseDefaultSandbox() SandboxOption { return func(sb *sandbox) { sb.config.useDefaultSandBox = true diff --git a/libnetwork/sandbox_dns_unix.go b/libnetwork/sandbox_dns_unix.go index ed94ee7a34..db1b66b190 100644 --- a/libnetwork/sandbox_dns_unix.go +++ b/libnetwork/sandbox_dns_unix.go @@ -81,7 +81,9 @@ func (sb *sandbox) buildHostsFile() error { } // This is for the host mode networking - if sb.config.originHostsPath != "" { + if sb.config.useDefaultSandBox && len(sb.config.extraHosts) == 0 { + // We are working under the assumption that the origin file option had been properly expressed by the upper layer + // if not here we are going to error out if err := copyFile(sb.config.originHostsPath, sb.config.hostsPath); err != nil && !os.IsNotExist(err) { return types.InternalErrorf("could not copy source hosts file %s to %s: %v", sb.config.originHostsPath, sb.config.hostsPath, err) } @@ -190,8 +192,13 @@ func (sb *sandbox) setupDNS() error { return err } - // This is for the host mode networking - if sb.config.originResolvConfPath != "" { + // When the user specify a conainter in the host namespace and do no have any dns option specified + // we just copy the host resolv.conf from the host itself + if sb.config.useDefaultSandBox && + len(sb.config.dnsList) == 0 && len(sb.config.dnsSearchList) == 0 && len(sb.config.dnsOptionsList) == 0 { + + // We are working under the assumption that the origin file option had been properly expressed by the upper layer + // if not here we are going to error out if err := copyFile(sb.config.originResolvConfPath, sb.config.resolvConfPath); err != nil { if !os.IsNotExist(err) { return fmt.Errorf("could not copy source resolv.conf file %s to %s: %v", sb.config.originResolvConfPath, sb.config.resolvConfPath, err) @@ -204,7 +211,12 @@ func (sb *sandbox) setupDNS() error { return nil } - currRC, err := resolvconf.Get() + originResolvConfPath := sb.config.originResolvConfPath + if originResolvConfPath == "" { + // if not specified fallback to default /etc/resolv.conf + originResolvConfPath = resolvconf.DefaultResolvConf + } + currRC, err := resolvconf.GetSpecific(originResolvConfPath) if err != nil { if !os.IsNotExist(err) { return err @@ -271,7 +283,7 @@ func (sb *sandbox) updateDNS(ipv6Enabled bool) error { ) // This is for the host mode networking - if sb.config.originResolvConfPath != "" { + if sb.config.useDefaultSandBox { return nil } diff --git a/libnetwork/service.go b/libnetwork/service.go index 02bcdb1884..5ed11959a1 100644 --- a/libnetwork/service.go +++ b/libnetwork/service.go @@ -5,7 +5,7 @@ import ( "net" "sync" - "github.com/docker/libnetwork/common" + "github.com/docker/libnetwork/internal/setmatrix" ) var ( @@ -54,7 +54,7 @@ type service struct { // associated with it. At stable state the endpoint ID expected is 1 // but during transition and service change it is possible to have // temporary more than 1 - ipToEndpoint common.SetMatrix + ipToEndpoint setmatrix.SetMatrix deleted bool diff --git a/libnetwork/service_common.go b/libnetwork/service_common.go index 4c30e465e2..78986c5424 100644 --- a/libnetwork/service_common.go +++ b/libnetwork/service_common.go @@ -5,7 +5,7 @@ package libnetwork import ( "net" - "github.com/docker/libnetwork/common" + "github.com/docker/libnetwork/internal/setmatrix" "github.com/sirupsen/logrus" ) @@ -139,7 +139,7 @@ func newService(name string, id string, ingressPorts []*PortConfig, serviceAlias ingressPorts: ingressPorts, loadBalancers: make(map[string]*loadBalancer), aliases: serviceAliases, - ipToEndpoint: common.NewSetMatrix(), + ipToEndpoint: setmatrix.NewSetMatrix(), } }