aboutsummaryrefslogtreecommitdiff
path: root/netaddr.go
diff options
context:
space:
mode:
Diffstat (limited to 'netaddr.go')
-rw-r--r--netaddr.go16
1 files changed, 12 insertions, 4 deletions
diff --git a/netaddr.go b/netaddr.go
index ab261b5..4bd7ebb 100644
--- a/netaddr.go
+++ b/netaddr.go
@@ -5,12 +5,14 @@ package salticidae
import "C"
import "runtime"
-type netAddr struct {
- inner *C.netaddr_t
-}
-
+type CNetAddr = *C.netaddr_t
+type netAddr struct { inner CNetAddr }
type NetAddr = *netAddr
+func NetAddrFromC(ptr CNetAddr) NetAddr {
+ return &netAddr{ inner: ptr }
+}
+
type netAddrArray struct {
inner *C.netaddr_array_t
}
@@ -49,4 +51,10 @@ func (self NetAddr) GetIP() uint32 { return uint32(C.netaddr_get_ip(self.inner))
func (self NetAddr) GetPort() uint16 { return uint16(C.netaddr_get_port(self.inner)) }
+func (self NetAddr) Copy() NetAddr {
+ res := &netAddr{ inner: C.netaddr_copy(self.inner) }
+ runtime.SetFinalizer(res, func(self NetAddr) { self.free() })
+ return res
+}
+
func (self NetAddrArray) free() { C.netaddr_array_free(self.inner) }