summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/turn/v2/internal/proto/addr.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/turn/v2/internal/proto/addr.go')
-rw-r--r--vendor/github.com/pion/turn/v2/internal/proto/addr.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/pion/turn/v2/internal/proto/addr.go b/vendor/github.com/pion/turn/v2/internal/proto/addr.go
new file mode 100644
index 0000000..b1d654d
--- /dev/null
+++ b/vendor/github.com/pion/turn/v2/internal/proto/addr.go
@@ -0,0 +1,65 @@
+package proto
+
+import (
+ "fmt"
+ "net"
+)
+
+// Addr is ip:port.
+type Addr struct {
+ IP net.IP
+ Port int
+}
+
+// Network implements net.Addr.
+func (Addr) Network() string { return "turn" }
+
+// FromUDPAddr sets addr to UDPAddr.
+func (a *Addr) FromUDPAddr(n *net.UDPAddr) {
+ a.IP = n.IP
+ a.Port = n.Port
+}
+
+// Equal returns true if b == a.
+func (a Addr) Equal(b Addr) bool {
+ if a.Port != b.Port {
+ return false
+ }
+ return a.IP.Equal(b.IP)
+}
+
+// EqualIP returns true if a and b have equal IP addresses.
+func (a Addr) EqualIP(b Addr) bool {
+ return a.IP.Equal(b.IP)
+}
+
+func (a Addr) String() string {
+ return fmt.Sprintf("%s:%d", a.IP, a.Port)
+}
+
+// FiveTuple represents 5-TUPLE value.
+type FiveTuple struct {
+ Client Addr
+ Server Addr
+ Proto Protocol
+}
+
+func (t FiveTuple) String() string {
+ return fmt.Sprintf("%s->%s (%s)",
+ t.Client, t.Server, t.Proto,
+ )
+}
+
+// Equal returns true if b == t.
+func (t FiveTuple) Equal(b FiveTuple) bool {
+ if t.Proto != b.Proto {
+ return false
+ }
+ if !t.Client.Equal(b.Client) {
+ return false
+ }
+ if !t.Server.Equal(b.Server) {
+ return false
+ }
+ return true
+}