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(ns netns.NsHandle, id, ifName, bridgeName string, mtu int, ...) error
- func CheckAddressOverlap(addr net.IP, ignoreIfaceNames map[string]struct{}) error
- func CheckNetworkFree(subnet *net.IPNet, ignoreIfaceNames map[string]struct{}) error
- func ConfigureARPCache(name string) error
- func CreateAndAttachVeth(name, peerName, bridgeName string, mtu int, keepTXOn bool, ...) (*netlink.Veth, error)
- func DetachContainer(ns netns.NsHandle, id, ifName string, cidrs []*net.IPNet) error
- func EnsureInterface(ifaceName string) (*net.Interface, error)
- func EnsureInterfaceAndMcastRoute(ifaceName string) (*net.Interface, error)
- func EthtoolTXOff(name string) error
- func ListenUnixSocket(pathname string) (net.Listener, error)
- func NSPathByPid(pid int) string
- func WithNetNS(nsPath string, cmd string, args ...string) (string, error)
- func WithNetNSByPid(pid int, cmd string, args ...string) (string, error)
- func WithNetNSLinkByPidUnsafe(pid int, ifName string, work func(link netlink.Link) error) 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 BridgeType
- type EthtoolValue
- type IFReqData
Constants ¶
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 ErrLinkNotFound = errors.New("Link not found")
Functions ¶
func AddAddresses ¶
func AttachContainer ¶
func CheckAddressOverlap ¶
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 ¶
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 ¶
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 CreateAndAttachVeth ¶
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 ¶
func EnsureInterface ¶
Wait for an interface to come up.
func EnsureInterfaceAndMcastRoute ¶
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 ¶
Disable TX checksum offload on specified interface
func NSPathByPid ¶
func WithNetNS ¶
A safe version of WithNetNS* which creates a process executing "nsenter --net=<ns-path> weaveutil <cmd> [args]".
func WithNetNSLinkUnsafe ¶
func WithNetNSUnsafe ¶
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 BridgeType ¶
type BridgeType int
const ( WeaveBridgeName = "weave" DatapathName = "datapath" None BridgeType = iota Bridge Fastdp BridgedFastdp Inconsistent )
func DetectBridgeType ¶
func DetectBridgeType(weaveBridgeName, datapathName string) BridgeType
type EthtoolValue ¶
linux/ethtool.h 'struct ethtool_value'