From fa399a91d5da9874cbf248e00db8dbd87b587e91 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Fri, 17 Nov 2017 17:25:45 +0100 Subject: Ported remaining netns.sh - Ported remaining netns.sh tests - Begin work on generic implementation of bind interface --- src/conn_default.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'src/conn_default.go') 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 } -- cgit v1.2.3-59-g8ed1b