diff options
Diffstat (limited to 'vendor/github.com/google/gopacket/routing/common.go')
-rw-r--r-- | vendor/github.com/google/gopacket/routing/common.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/github.com/google/gopacket/routing/common.go b/vendor/github.com/google/gopacket/routing/common.go new file mode 100644 index 0000000..a6746d4 --- /dev/null +++ b/vendor/github.com/google/gopacket/routing/common.go @@ -0,0 +1,36 @@ +// Copyright 2012 Google, Inc. All rights reserved. +// +// Use of this source code is governed by a BSD-style license +// that can be found in the LICENSE file in the root of the source +// tree. + +package routing + +import ( + "net" +) + +// Router implements simple IPv4/IPv6 routing based on the kernel's routing +// table. This routing library has very few features and may actually route +// incorrectly in some cases, but it should work the majority of the time. +type Router interface { + // Route returns where to route a packet based on the packet's source + // and destination IP address. + // + // Callers may pass in nil for src, in which case the src is treated as + // either 0.0.0.0 or ::, depending on whether dst is a v4 or v6 address. + // + // It returns the interface on which to send the packet, the gateway IP + // to send the packet to (if necessary), the preferred src IP to use (if + // available). If the preferred src address is not given in the routing + // table, the first IP address of the interface is provided. + // + // If an error is encountered, iface, geteway, and + // preferredSrc will be nil, and err will be set. + Route(dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error) + + // RouteWithSrc routes based on source information as well as destination + // information. Either or both of input/src can be nil. If both are, this + // should behave exactly like Route(dst) + RouteWithSrc(input net.HardwareAddr, src, dst net.IP) (iface *net.Interface, gateway, preferredSrc net.IP, err error) +} |