mirror of
https://github.com/clearlinux/libnetwork.git
synced 2026-09-03 20:31:30 +00:00
For the moment in 1.7.1 since we provide a resolv.conf set api to the driver honor that so that for host driver we can use the the host's /etc/resolv.conf file as is rather than putting the contents through a filtering logic. It should be noted that the driver side capability to set the resolv.conf file is most likely going to go away in the future but this should be fine for 1.7.1 Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
75 lines
1.7 KiB
Go
75 lines
1.7 KiB
Go
package host
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/docker/libnetwork/driverapi"
|
|
"github.com/docker/libnetwork/types"
|
|
)
|
|
|
|
const networkType = "host"
|
|
|
|
type driver struct {
|
|
network types.UUID
|
|
sync.Mutex
|
|
}
|
|
|
|
// Init registers a new instance of host driver
|
|
func Init(dc driverapi.DriverCallback) error {
|
|
c := driverapi.Capability{
|
|
Scope: driverapi.LocalScope,
|
|
}
|
|
return dc.RegisterDriver(networkType, &driver{}, c)
|
|
}
|
|
|
|
func (d *driver) Config(option map[string]interface{}) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) CreateNetwork(id types.UUID, option map[string]interface{}) error {
|
|
d.Lock()
|
|
defer d.Unlock()
|
|
|
|
if d.network != "" {
|
|
return types.ForbiddenErrorf("only one instance of \"%s\" network is allowed", networkType)
|
|
}
|
|
|
|
d.network = id
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) DeleteNetwork(nid types.UUID) error {
|
|
return types.ForbiddenErrorf("network of type \"%s\" cannot be deleted", networkType)
|
|
}
|
|
|
|
func (d *driver) CreateEndpoint(nid, eid types.UUID, epInfo driverapi.EndpointInfo, epOptions map[string]interface{}) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) DeleteEndpoint(nid, eid types.UUID) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) EndpointOperInfo(nid, eid types.UUID) (map[string]interface{}, error) {
|
|
return make(map[string]interface{}, 0), nil
|
|
}
|
|
|
|
// Join method is invoked when a Sandbox is attached to an endpoint.
|
|
func (d *driver) Join(nid, eid types.UUID, sboxKey string, jinfo driverapi.JoinInfo, options map[string]interface{}) error {
|
|
if err := jinfo.SetHostsPath("/etc/hosts"); err != nil {
|
|
return err
|
|
}
|
|
|
|
return jinfo.SetResolvConfPath("/etc/resolv.conf")
|
|
}
|
|
|
|
// Leave method is invoked when a Sandbox detaches from an endpoint.
|
|
func (d *driver) Leave(nid, eid types.UUID) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) Type() string {
|
|
return networkType
|
|
}
|