diff options
Diffstat (limited to 'src/conn_default.go')
-rw-r--r-- | src/conn_default.go | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/conn_default.go b/src/conn_default.go index 279643e..31cab5c 100644 --- a/src/conn_default.go +++ b/src/conn_default.go @@ -6,6 +6,41 @@ import ( "net" ) +/* This code is meant to be a temporary solution + * on platforms for which the sticky socket / source caching behavior + * has not yet been implemented. + * + * See conn_linux.go for an implementation on the linux platform. + */ + +type Endpoint *net.UDPAddr + +type NativeBind *net.UDPConn + +func CreateUDPBind(port uint16) (UDPBind, uint16, error) { + + // listen + + addr := UDPAddr{ + Port: int(port), + } + conn, err := net.ListenUDP("udp", &addr) + if err != nil { + return nil, 0, err + } + + // retrieve port + + laddr := conn.LocalAddr() + uaddr, _ = net.ResolveUDPAddr( + laddr.Network(), + laddr.String(), + ) + return uaddr.Port +} + +func (_ Endpoint) ClearSrc() {} + func SetMark(conn *net.UDPConn, value uint32) error { return nil } |