Documentation
¶
Overview ¶
Package support identifies the different common features routers may support through interfaces that each router may or may not support.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Bridge ¶
type Bridge interface {
Router
// NewBridge returns a bridge name for tests to use.
NewBridge(ctx context.Context) (string, error)
// ReleaseBridge releases the bridge.
ReleaseBridge(ctx context.Context, br string) error
}
Bridge shall be implemented if the router supports network bridges.
type Capture ¶
type Capture interface {
Router
// StartCapture starts a packet capturer.
StartCapture(ctx context.Context, name string, ch int, freqOps []iw.SetFreqOption, pcapOps ...pcap.Option) (*pcap.Capturer, error)
// StartRawCapturer starts a capturer on an existing interface on the router instead of a
// monitor type interface.
StartRawCapturer(ctx context.Context, name, iface string, ops ...pcap.Option) (*pcap.Capturer, error)
// StopCapture stops the packet capturer and releases related resources.
StopCapture(ctx context.Context, capturer *pcap.Capturer) error
// StopRawCapturer stops the packet capturer (no extra resources to release).
StopRawCapturer(ctx context.Context, capturer *pcap.Capturer) error
// ReserveForStopCapture returns a shortened ctx with cancel function.
ReserveForStopCapture(ctx context.Context, capturer *pcap.Capturer) (context.Context, context.CancelFunc)
// ReserveForStopRawCapturer returns a shortened ctx with cancel function.
ReserveForStopRawCapturer(ctx context.Context, capturer *pcap.Capturer) (context.Context, context.CancelFunc)
}
Capture shall be implemented if the router supports pcap capture.
type DHCP ¶
type DHCP interface {
Router
// StartDHCP starts the DHCP server and configures the server IP.
StartDHCP(ctx context.Context, name, iface string, ipStart, ipEnd, serverIP, broadcastIP net.IP, mask net.IPMask) (*dhcp.Server, error)
// StopDHCP stops the DHCP server and flushes the interface.
StopDHCP(ctx context.Context, ds *dhcp.Server) error
}
DHCP shall be implemented if the router supports DHCP configuration.
type FrameSender ¶
type FrameSender interface {
Router
// CloseFrameSender closes frame sender and releases related resources.
CloseFrameSender(ctx context.Context, s *framesender.Sender) error
// NewFrameSender creates a frame sender object.
NewFrameSender(ctx context.Context, iface string) (*framesender.Sender, error)
// ReserveForCloseFrameSender returns a shortened ctx with cancel function.
ReserveForCloseFrameSender(ctx context.Context) (context.Context, context.CancelFunc)
}
FrameSender shall be implemented if the router can send management frames.
type Hostapd ¶
type Hostapd interface {
Router
// StartHostapd starts the hostapd server.
StartHostapd(ctx context.Context, name string, conf *hostapd.Config) (*hostapd.Server, error)
// StopHostapd stops the hostapd server.
StopHostapd(ctx context.Context, hs *hostapd.Server) error
// ReconfigureHostapd restarts the hostapd server with the new config. It preserves the interface and the name of the old hostapd server.
ReconfigureHostapd(ctx context.Context, hs *hostapd.Server, conf *hostapd.Config) (*hostapd.Server, error)
}
Hostapd shall be implemented if the router supports hostapd.
type IfaceManipulation ¶
type IfaceManipulation interface {
Router
// SetAPIfaceDown brings down the interface that the APIface uses.
SetAPIfaceDown(ctx context.Context, iface string) error
// MAC returns the MAC address of iface on this router.
MAC(ctx context.Context, iface string) (net.HardwareAddr, error)
}
IfaceManipulation shall be implemented if the router can modify its iface configuration.
type Logs ¶
type Logs interface {
Router
// CollectLogs downloads log files from router to OutDir.
CollectLogs(ctx context.Context) error
}
Logs shall be implemented if the router supports log collection.
type Router ¶
type Router interface {
// Close cleans the resource used by Router.
Close(ctx context.Context) error
// RouterName returns the name of the managed router device.
RouterName() string
// RouterType returns the router type.
RouterType() RouterType
}
Router contains the basic methods that must be implemented across all routers.
type RouterType ¶
type RouterType int
RouterType is an enum indicating what type of router style a router is.
const ( // LegacyT is the legacy router type. LegacyT RouterType = iota // AxT is the ax router type. AxT // OpenWrtT is the openwrt router type. OpenWrtT // UnknownT is an unknown router type. UnknownT )
func ParseRouterType ¶
func ParseRouterType(rTypeStr string) (RouterType, error)
ParseRouterType parses a RouterType from a string.
func (RouterType) String ¶
func (rt RouterType) String() string
String returns RouterType as a string.
type Veth ¶
type Veth interface {
Router
// NewVethPair returns a veth pair for tests to use.
NewVethPair(ctx context.Context) (string, string, error)
// ReleaseVethPair release the veth pair.
ReleaseVethPair(ctx context.Context, veth string) error
}
Veth shall be implemented if the router supports veths (virtual ethernet devices).
type VethBridgeBinding ¶
type VethBridgeBinding interface {
Router
Bridge
Veth
// BindVethToBridge binds the veth to bridge.
BindVethToBridge(ctx context.Context, veth, br string) error
// UnbindVeth unbinds the veth to any other interface.
UnbindVeth(ctx context.Context, veth string) error
}
VethBridgeBinding shall be implemented if the router supports bridges, veths, and can bind bridges and veths.