mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Include Endpoint List for Shared Endpoints
Do not allow sharing of container network with hyperv containers Signed-off-by: Madhan Raj Mookkandy <madhanm@microsoft.com>
This commit is contained in:
parent
9d95740dbf
commit
349913ce9f
6 changed files with 54 additions and 5 deletions
|
@ -107,7 +107,8 @@ type Container struct {
|
||||||
NoNewPrivileges bool
|
NoNewPrivileges bool
|
||||||
|
|
||||||
// Fields here are specific to Windows
|
// Fields here are specific to Windows
|
||||||
NetworkSharedContainerID string
|
NetworkSharedContainerID string `json:"-"`
|
||||||
|
SharedEndpointList []string `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewBaseContainer creates a new container with its
|
// NewBaseContainer creates a new container with its
|
||||||
|
|
|
@ -886,7 +886,12 @@ func (daemon *Daemon) initializeNetworking(container *container.Container) error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
initializeNetworkingPaths(container, nc)
|
|
||||||
|
err = daemon.initializeNetworkingPaths(container, nc)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
container.Config.Hostname = nc.Config.Hostname
|
container.Config.Hostname = nc.Config.Hostname
|
||||||
container.Config.Domainname = nc.Config.Domainname
|
container.Config.Domainname = nc.Config.Domainname
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -42,5 +42,6 @@ func setupPathsAndSandboxOptions(container *container.Container, sboxOptions *[]
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func initializeNetworkingPaths(container *container.Container, nc *container.Container) {
|
func (daemon *Daemon) initializeNetworkingPaths(container *container.Container, nc *container.Container) error {
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -349,8 +349,9 @@ func setupPathsAndSandboxOptions(container *container.Container, sboxOptions *[]
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func initializeNetworkingPaths(container *container.Container, nc *container.Container) {
|
func (daemon *Daemon) initializeNetworkingPaths(container *container.Container, nc *container.Container) error {
|
||||||
container.HostnamePath = nc.HostnamePath
|
container.HostnamePath = nc.HostnamePath
|
||||||
container.HostsPath = nc.HostsPath
|
container.HostsPath = nc.HostsPath
|
||||||
container.ResolvConfPath = nc.ResolvConfPath
|
container.ResolvConfPath = nc.ResolvConfPath
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,6 +160,43 @@ func setupPathsAndSandboxOptions(container *container.Container, sboxOptions *[]
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func initializeNetworkingPaths(container *container.Container, nc *container.Container) {
|
func (daemon *Daemon) initializeNetworkingPaths(container *container.Container, nc *container.Container) error {
|
||||||
|
|
||||||
|
if nc.HostConfig.Isolation.IsHyperV() {
|
||||||
|
return fmt.Errorf("sharing of hyperv containers network is not supported")
|
||||||
|
}
|
||||||
|
|
||||||
container.NetworkSharedContainerID = nc.ID
|
container.NetworkSharedContainerID = nc.ID
|
||||||
|
|
||||||
|
if nc.NetworkSettings != nil {
|
||||||
|
for n := range nc.NetworkSettings.Networks {
|
||||||
|
sn, err := daemon.FindNetwork(n)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
ep, err := nc.GetEndpointInNetwork(sn)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
data, err := ep.DriverInfo()
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if data["GW_INFO"] != nil {
|
||||||
|
gwInfo := data["GW_INFO"].(map[string]interface{})
|
||||||
|
if gwInfo["hnsid"] != nil {
|
||||||
|
container.SharedEndpointList = append(container.SharedEndpointList, gwInfo["hnsid"].(string))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if data["hnsid"] != nil {
|
||||||
|
container.SharedEndpointList = append(container.SharedEndpointList, data["hnsid"].(string))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,7 +150,11 @@ func (daemon *Daemon) getLibcontainerdCreateOptions(container *container.Contain
|
||||||
var networkSharedContainerID string
|
var networkSharedContainerID string
|
||||||
if container.HostConfig.NetworkMode.IsContainer() {
|
if container.HostConfig.NetworkMode.IsContainer() {
|
||||||
networkSharedContainerID = container.NetworkSharedContainerID
|
networkSharedContainerID = container.NetworkSharedContainerID
|
||||||
|
for _, ep := range container.SharedEndpointList {
|
||||||
|
epList = append(epList, ep)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createOptions = append(createOptions, &libcontainerd.NetworkEndpointsOption{
|
createOptions = append(createOptions, &libcontainerd.NetworkEndpointsOption{
|
||||||
Endpoints: epList,
|
Endpoints: epList,
|
||||||
AllowUnqualifiedDNSQuery: AllowUnqualifiedDNSQuery,
|
AllowUnqualifiedDNSQuery: AllowUnqualifiedDNSQuery,
|
||||||
|
|
Loading…
Reference in a new issue