import "golang.org/x/net/route"
Package route provides basic functions for the manipulation of packet routing facilities on BSD variants.
The package supports any version of Darwin, any version of DragonFly BSD, FreeBSD 7 and above, NetBSD 6 and above, and OpenBSD 5.6 and above.
address.go binary.go interface.go interface_classic.go interface_multicast.go message.go route.go route_classic.go sys.go sys_darwin.go syscall_go1_12_darwin.go zsys_darwin.go
FetchRIB fetches a routing information base from the operating system.
The provided af must be an address family.
The provided arg must be a RIBType-specific argument. When RIBType is related to routes, arg might be a set of route flags. When RIBType is related to network interfaces, arg might be an interface index or a set of interface flags. In most cases, zero means a wildcard.
An Addr represents an address associated with packet routing.
type DefaultAddr struct { Raw []byte // raw format of address // contains filtered or unexported fields }
A DefaultAddr represents an address of various operating system-specific features.
func (a *DefaultAddr) Family() int
Family implements the Family method of Addr interface.
An Inet4Addr represents an internet address for IPv4.
Family implements the Family method of Addr interface.
An Inet6Addr represents an internet address for IPv6.
Family implements the Family method of Addr interface.
type InterfaceAddrMessage struct { Version int // message version Type int // message type Flags int // interface flags Index int // interface index Addrs []Addr // addresses // contains filtered or unexported fields }
An InterfaceAddrMessage represents an interface address message.
func (m *InterfaceAddrMessage) Sys() []Sys
Sys implements the Sys method of Message interface.
type InterfaceAnnounceMessage struct { Version int // message version Type int // message type Index int // interface index Name string // interface name What int // what type of announcement // contains filtered or unexported fields }
An InterfaceAnnounceMessage represents an interface announcement message.
func (m *InterfaceAnnounceMessage) Sys() []Sys
Sys implements the Sys method of Message interface.
type InterfaceMessage struct { Version int // message version Type int // message type Flags int // interface flags Index int // interface index Name string // interface name Addrs []Addr // addresses // contains filtered or unexported fields }
An InterfaceMessage represents an interface message.
func (m *InterfaceMessage) Sys() []Sys
Sys implements the Sys method of Message interface.
InterfaceMetrics represents interface metrics.
func (imx *InterfaceMetrics) SysType() SysType
SysType implements the SysType method of Sys interface.
type InterfaceMulticastAddrMessage struct { Version int // message version Type int // message type Flags int // interface flags Index int // interface index Addrs []Addr // addresses // contains filtered or unexported fields }
An InterfaceMulticastAddrMessage represents an interface multicast address message.
func (m *InterfaceMulticastAddrMessage) Sys() []Sys
Sys implements the Sys method of Message interface.
type LinkAddr struct { Index int // interface index when attached Name string // interface name when attached Addr []byte // link-layer address when attached }
A LinkAddr represents a link-layer address.
Family implements the Family method of Addr interface.
A Message represents a routing message.
ParseRIB parses b as a routing information base and returns a list of routing messages.
A RIBType represents a type of routing information base.
const ( RIBTypeRoute RIBType = syscall.NET_RT_DUMP RIBTypeInterface RIBType = syscall.NET_RT_IFLIST )
type RouteMessage struct { Version int // message version Type int // message type Flags int // route flags Index int // interface index when attached ID uintptr // sender's identifier; usually process ID Seq int // sequence number Err error // error on requested operation Addrs []Addr // addresses // contains filtered or unexported fields }
A RouteMessage represents a message conveying an address prefix, a nexthop address and an output interface.
Unlike other messages, this message can be used to query adjacency information for the given address prefix, to add a new route, and to delete or modify the existing route from the routing information base inside the kernel by writing and reading route messages on a routing socket.
For the manipulation of routing information, the route message must contain appropriate fields that include:
Version = <must be specified> Type = <must be specified> Flags = <must be specified> Index = <must be specified if necessary> ID = <must be specified> Seq = <must be specified> Addrs = <must be specified>
The Type field specifies a type of manipulation, the Flags field specifies a class of target information and the Addrs field specifies target information like the following:
route.RouteMessage{ Version: RTM_VERSION, Type: RTM_GET, Flags: RTF_UP | RTF_HOST, ID: uintptr(os.Getpid()), Seq: 1, Addrs: []route.Addrs{ RTAX_DST: &route.Inet4Addr{ ... }, RTAX_IFP: &route.LinkAddr{ ... }, RTAX_BRD: &route.Inet4Addr{ ... }, }, }
The values for the above fields depend on the implementation of each operating system.
The Err field on a response message contains an error value on the requested operation. If non-nil, the requested operation is failed.
func (m *RouteMessage) Marshal() ([]byte, error)
Marshal returns the binary encoding of m.
func (m *RouteMessage) Sys() []Sys
Sys implements the Sys method of Message interface.
RouteMetrics represents route metrics.
func (rmx *RouteMetrics) SysType() SysType
SysType implements the SysType method of Sys interface.
type Sys interface { // SysType returns a type of operating system-specific // information. SysType() SysType }
A Sys reprensents operating system-specific information.
A SysType represents a type of operating system-specific information.
Package route imports 5 packages (graph) and is imported by 1 packages. Updated 2021-01-20 with GOOS=darwin. Refresh now. Tools for package owners.