summaryrefslogtreecommitdiff
path: root/vendor/github.com/pion/stun/stun.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/pion/stun/stun.go')
-rw-r--r--vendor/github.com/pion/stun/stun.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/vendor/github.com/pion/stun/stun.go b/vendor/github.com/pion/stun/stun.go
new file mode 100644
index 0000000..9f804d2
--- /dev/null
+++ b/vendor/github.com/pion/stun/stun.go
@@ -0,0 +1,51 @@
+// Package stun implements Session Traversal Utilities for NAT (STUN) RFC 5389.
+//
+// The stun package is intended to use by package that implements extension
+// to STUN (e.g. TURN) or client/server applications.
+//
+// Most methods are designed to be zero allocations. If it is not enough,
+// low-level methods are available. On other hand, there are helpers that
+// reduce code repeat.
+//
+// See examples for Message for basic usage, or https://github.com/pion/turn
+// package for example of stun extension implementation.
+package stun
+
+import (
+ "encoding/binary"
+ "io"
+)
+
+// bin is shorthand to binary.BigEndian.
+var bin = binary.BigEndian
+
+func readFullOrPanic(r io.Reader, v []byte) int {
+ n, err := io.ReadFull(r, v)
+ if err != nil {
+ panic(err) // nolint
+ }
+ return n
+}
+
+func writeOrPanic(w io.Writer, v []byte) int {
+ n, err := w.Write(v)
+ if err != nil {
+ panic(err) // nolint
+ }
+ return n
+}
+
+// IANA assigned ports for "stun" protocol.
+const (
+ DefaultPort = 3478
+ DefaultTLSPort = 5349
+)
+
+type transactionIDSetter struct{}
+
+func (transactionIDSetter) AddTo(m *Message) error {
+ return m.NewTransactionID()
+}
+
+// TransactionID is Setter for m.TransactionID.
+var TransactionID Setter = transactionIDSetter{}