Renaming and comments

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
This commit is contained in:
Arnaud Porterie 2015-02-27 09:34:30 -08:00
parent cb96e4149d
commit ba111871ea
5 changed files with 56 additions and 15 deletions

View file

@ -2,14 +2,16 @@ package libnetwork
import "syscall"
// The networkNamespace type is the default implementation of the Namespace
// interface. It simply creates a new network namespace, and moves an interface
// into it when called on method AddInterface.
type networkNamespace struct {
path string
interfaces []*Interface
}
// Create a new network namespace mounted on the provided path.
func NewNamespace(path string) (Namespace, error) {
if err := reexec(reexecCreateNamespace, path); err != nil {
func createNetworkNamespace(path string) (Namespace, error) {
if err := reexec(cmdReexecCreateNamespace, path); err != nil {
return nil, err
}
return &networkNamespace{path: path}, nil
@ -17,7 +19,7 @@ func NewNamespace(path string) (Namespace, error) {
func (n *networkNamespace) AddInterface(i *Interface) error {
// TODO Open pipe, pass fd to child and write serialized Interface on it.
if err := reexec(reexecMoveInterface, i.SrcName, i.DstName); err != nil {
if err := reexec(cmdReexecMoveInterface, i.SrcName, i.DstName); err != nil {
return err
}
n.interfaces = append(n.interfaces, i)

View file

@ -9,7 +9,7 @@
//
// // For a new container: create network namespace (providing the path).
// networkPath := "/var/lib/docker/.../4d23e"
// networkNamespace, err := libnetwork.NewNamespace(networkPath)
// networkNamespace, err := libnetwork.NewNetworkNamespace(networkPath)
// if err != nil {
// return err
// }
@ -35,10 +35,19 @@ package libnetwork
// ulteriorly join using the Link method. A Network is managed by a specific
// driver.
type Network interface {
// The type of network, which corresponds to its managing driver.
Type() string
// Create a new link to this network symbolically identified by the
// specified unique name.
Link(name string) ([]*Interface, error)
}
// Interface represents the settings and identity of a network device. It is
// used as a return type for Network.Link, and it is common practice for the
// caller to use this information when moving interface SrcName from host
// namespace to DstName in a different net namespace with the appropriate
// network settings.
type Interface struct {
// The name of the interface in the origin network namespace.
SrcName string
@ -47,20 +56,50 @@ type Interface struct {
// network namespace.
DstName string
MacAddress string
Address string
// MAC address for the interface.
MacAddress string
// IPv4 address for the interface.
Address string
// IPv6 address for the interface.
AddressIPv6 string
Gateway string
// IPv4 gateway for the interface.
Gateway string
// IPv6 gateway for the interface.
GatewayIPv6 string
MTU int
// Network MTU.
MTU int
}
// Namespace represents a network namespace, mounted on a specific Path. It
// holds a list of Interface, and more can be added dynamically.
type Namespace interface {
// The path where the network namespace is mounted.
Path() string
// The collection of Interface previously added with the AddInterface
// method. Note that this doesn't incude network interfaces added in any
// other way (such as the default loopback interface existing in any newly
// created network namespace).
Interfaces() []*Interface
// Add an existing Interface to this namespace. The operation will rename
// from the Interface SrcName to DstName as it moves, and reconfigure the
// interface according to the specified settings.
AddInterface(*Interface) error
}
// Create a new network of the specified networkType. The options are driver
// specific and modeled in a generic way.
func NewNetwork(networkType string, options DriverParams) (Network, error) {
return createNetwork(networkType, options)
}
// Create a new network namespace mounted on the specified path.
func NewNetworkNamespace(path string) (Namespace, error) {
return createNetworkNamespace(path)
}

View file

@ -11,16 +11,16 @@ import (
type reexecCommand int
const (
reexecCreateNamespace reexecCommand = iota
reexecMoveInterface
cmdReexecCreateNamespace reexecCommand = iota
cmdReexecMoveInterface
)
var reexecCommands = map[reexecCommand]struct {
Key string
Entrypoint func()
}{
reexecCreateNamespace: {"netns-create", createNetworkNamespace},
reexecMoveInterface: {"netns-moveif", namespaceMoveInterface},
cmdReexecCreateNamespace: {"netns-create", reexecCreateNamespace},
cmdReexecMoveInterface: {"netns-moveif", reexecMoveInterface},
}
func init() {

View file

@ -19,7 +19,7 @@ func (s setupError) Error() string {
return s.Message
}
func namespaceMoveInterface() {
func reexecMoveInterface() {
runtime.LockOSThread()
var (

View file

@ -9,7 +9,7 @@ import (
"github.com/vishvananda/netlink"
)
func createNetworkNamespace() {
func reexecCreateNamespace() {
runtime.LockOSThread()
if len(os.Args) < 2 {