aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/google/gopacket/routing/common.go
diff options
context:
space:
mode:
authorMilan Lenco <milan.lenco@pantheon.tech>2017-10-11 16:40:58 +0200
committerMilan Lenco <milan.lenco@pantheon.tech>2017-10-13 08:40:37 +0200
commit3f1edad4e6ba0a7876750aea55507fae14d8badf (patch)
treea473997249d9ba7deb70b1076d14e4c4ed029a43 /vendor/github.com/google/gopacket/routing/common.go
parent8b66677c2382a8e739d437621de4473d5ec0b9f1 (diff)
ODPM 266: Go-libmemif + 2 examples.
Change-Id: Icdb9b9eb2314eff6c96afe7996fcf2728291de4a Signed-off-by: Milan Lenco <milan.lenco@pantheon.tech>
Diffstat (limited to 'vendor/github.com/google/gopacket/routing/common.go')
-rw-r--r--vendor/github.com/google/gopacket/routing/common.go36
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)
+}