Documentation ¶
Index ¶
- Constants
- Variables
- func AddAddresses(link netlink.Link, cidrs []*net.IPNet) (newAddrs []*net.IPNet, err error)
- func AddRoute(link netlink.Link, scope netlink.Scope, dst *net.IPNet, gw net.IP) error
- func AttachContainer(netNSPath, id, ifName, bridgeName string, mtu int, withMulticastRoute bool, ...) error
- func CheckAddressOverlap(addr net.IP, ignoreIfaceNames map[string]struct{}) error
- func CheckNetworkFree(subnet *net.IPNet, ignoreIfaceNames map[string]struct{}) error
- func ConfigureARPCache(procPath, name string) error
- func ConnectedToBridgeVethPeerIds(bridgeName string) ([]int, error)
- func CreateAndAttachVeth(name, peerName, bridgeName string, mtu int, keepTXOn bool, ...) (*netlink.Veth, error)
- func DetachContainer(netNSPath, id, ifName string, cidrs []*net.IPNet) error
- func DetectHairpin(portIfName string, log *logrus.Logger) error
- func EnforceAddrAssignType(bridgeName string) (setAddr bool, err error)
- func EnsureInterface(ifaceName string) (*net.Interface, error)
- func EnsureInterfaceAndMcastRoute(ifaceName string) (*net.Interface, error)
- func EthtoolTXOff(name string) error
- func Expose(bridgeName string, ipAddr *net.IPNet, removeDefaultRoute, npc bool) error
- func FindBridgeIP(bridgeName string, subnet *net.IPNet) (net.IP, error)
- func GetSystemPeerName(dbPrefix, hostRoot string) (string, error)
- func ListenUnixSocket(pathname string) (net.Listener, error)
- func LocalAddresses() ([]*net.IPNet, error)
- func MACfromUUID(uuid []byte) net.HardwareAddr
- func NSPathByPid(pid int) string
- func NSPathByPidWithRoot(root string, pid int) string
- func RandomMAC() (net.HardwareAddr, error)
- func SetupIface(ifaceName, newIfName string) error
- func SetupIfaceAddrs(veth netlink.Link, withMulticastRoute bool, cidrs []*net.IPNet) error
- func WithNetNS(nsPath string, cmd string, args ...string) ([]byte, error)
- func WithNetNSByPid(pid int, cmd string, args ...string) ([]byte, error)
- func WithNetNSLinkUnsafe(ns netns.NsHandle, ifName string, work func(link netlink.Link) error) error
- func WithNetNSUnsafe(ns netns.NsHandle, work func() error) error
- type Bridge
- type BridgeConfig
- type Dev
- type EthtoolValue
- type IFReqData
Constants ¶
const ( WeaveBridgeName = "weave" DatapathName = "datapath" DatapathIfName = "vethwe-datapath" BridgeIfName = "vethwe-bridge" PcapIfName = "vethwe-pcap" )
const ( SIOCETHTOOL = 0x8946 // linux/sockios.h ETHTOOL_GTXCSUM = 0x00000016 // linux/ethtool.h ETHTOOL_STXCSUM = 0x00000017 // linux/ethtool.h IFNAMSIZ = 16 // linux/if.h )
const (
VethName = "ethwe" // name inside container namespace
)
Variables ¶
var ErrBridgeNoIP = fmt.Errorf("Bridge has no IP address")
var ErrLinkNotFound = errors.New("Link not found")
var WeaveUtilCmd = "weaveutil"
Functions ¶
func AddAddresses ¶ added in v1.6.0
func AttachContainer ¶ added in v1.6.0
func CheckAddressOverlap ¶ added in v1.1.0
For a specific address, we only care if it is actually *inside* an existing route, because weave-local traffic never hits IP routing.
func CheckNetworkFree ¶ added in v1.0.0
A network is considered free if it does not overlap any existing routes on this host. This is the same approach taken by Docker.
func ConfigureARPCache ¶ added in v1.6.0
Configure the ARP cache parameters for the given interface. This makes containers react more quickly to a change in the MAC address associated with an IP address.
func ConnectedToBridgeVethPeerIds ¶ added in v1.8.0
ConnectedToBridgeVethPeerIds returns peer indexes of veth links connected to the given bridge. The peer index is used to query from a container netns whether the container is connected to the bridge.
func CreateAndAttachVeth ¶ added in v1.6.0
func CreateAndAttachVeth(name, peerName, bridgeName string, mtu int, keepTXOn bool, init func(peer netlink.Link) error) (*netlink.Veth, error)
create and attach a veth to the Weave bridge
func DetachContainer ¶ added in v1.6.0
NB: This function can be used only by a process that terminates immediately
after calling the function as it changes netns via WithNetNSLinkUnsafe.
func DetectHairpin ¶ added in v1.8.2
func EnforceAddrAssignType ¶
func EnsureInterface ¶
Wait for an interface to come up.
func EnsureInterfaceAndMcastRoute ¶ added in v1.1.0
Wait for an interface to come up and have a route added to the multicast subnet. This matches the behaviour in 'weave attach', which is the only context in which we expect this to be called. If you change one, change the other to match.
func EthtoolTXOff ¶ added in v1.6.0
Disable TX checksum offload on specified interface
func Expose ¶
Expose makes the network accessible from a host by assigning a given IP address to the weave bridge.
List of params: * "bridgeName" - a name of the weave bridge. * "ipAddr" - IP addr to be assigned to the bridge. * "removeDefaultRoute" - whether to remove a default route installed by the kernel (used only in the AWSVPC mode). * "npc" - whether is Weave NPC running.
func FindBridgeIP ¶ added in v1.9.0
func GetSystemPeerName ¶ added in v1.9.0
GetSystemPeerName returns an ID derived from concatenated machine-id (either systemd or dbus), the system (aka bios) UUID and the hypervisor UUID. It is tweaked and formatted to be usable as a mac address
func ListenUnixSocket ¶ added in v1.5.0
func LocalAddresses ¶
func MACfromUUID ¶ added in v1.9.0
func MACfromUUID(uuid []byte) net.HardwareAddr
func NSPathByPid ¶ added in v1.7.2
func NSPathByPidWithRoot ¶
func RandomMAC ¶ added in v1.9.0
func RandomMAC() (net.HardwareAddr, error)
func SetupIface ¶
SetupIface is the implementation of the 'setup-iface' call above, running in another process in the container's netns
func SetupIfaceAddrs ¶
SetupIfaceAddrs is the implementation of the 'setup-iface-addrs' call above, running in another process in the container's netns
func WithNetNS ¶ added in v1.6.0
A safe version of WithNetNS* which creates a process executing "nsenter --net=<ns-path> weaveutil <cmd> [args]".
func WithNetNSByPid ¶ added in v1.7.2
func WithNetNSLinkUnsafe ¶ added in v1.6.1
func WithNetNSUnsafe ¶ added in v1.6.1
Please see https://github.com/weaveworks/weave/issues/2388#issuecomment-228365069 for more details and make sure that you understand the implications before using the function!
Types ¶
type Bridge ¶ added in v1.6.0
type Bridge interface { IsFastdp() bool // does this bridge use fastdp? String() string // human-readable type string // contains filtered or unexported methods }
func EnsureBridge ¶
func ExistingBridgeType ¶
type BridgeConfig ¶
type Dev ¶ added in v1.8.0
type Dev struct { Name string `json:"Name,omitempty"` MAC net.HardwareAddr `json:"MAC,omitempty"` CIDRs []*net.IPNet `json:"CIDRs,omitempty"` }
func GetBridgeNetDev ¶ added in v1.8.0
Get the weave bridge interface. NB: Should be called from the root network namespace.
func GetNetDevsByVethPeerIds ¶ added in v1.8.0
func GetWeaveNetDevs ¶ added in v1.8.0
Lookup the weave interface of a container
type EthtoolValue ¶ added in v1.6.0
linux/ethtool.h 'struct ethtool_value'