diff --git a/component/nat/nat.go b/component/nat/nat.go deleted file mode 100644 index 2ba8892..0000000 --- a/component/nat/nat.go +++ /dev/null @@ -1,31 +0,0 @@ -/* -Package nat provides simple NAT table implements. - -* Normal (Full Cone) NAT -A full cone NAT is one where all requests from the same internal IP address -and port are mapped to the same external IP address and port. Furthermore, -any external host can send a packet to the internal host, by sending a packet -to the mapped external address. - -* Restricted Cone NAT -A restricted cone NAT is one where all requests from the same internal IP -address and port are mapped to the same external IP address and port. -Unlike a full cone NAT, an external host (with IP address X) can send a -packet to the internal host only if the internal host had previously sent -a packet to IP address X. - -* Port Restricted Cone NAT -A port restricted cone NAT is like a restricted cone NAT, but the restriction -includes port numbers. Specifically, an external host can send a packet, with -source IP address X and source port P, to the internal host only if the internal -host had previously sent a packet to IP address X and port P. - -* Symmetric NAT -A symmetric NAT is one where all requests from the same internal IP address -and port, to a specific destination IP address and port, are mapped to the -same external IP address and port. If the same host sends a packet with the -same source address and port, but to a different destination, a different mapping -is used. Furthermore, only the external host that receives a packet can send a -UDP packet back to the internal host. -*/ -package nat diff --git a/component/nat/table.go b/component/nat/table.go deleted file mode 100644 index 645773f..0000000 --- a/component/nat/table.go +++ /dev/null @@ -1,35 +0,0 @@ -package nat - -import ( - "net" - "sync" -) - -type Table struct { - mapping sync.Map -} - -func (t *Table) Set(key string, pc net.PacketConn) { - t.mapping.Store(key, pc) -} - -func (t *Table) Get(key string) net.PacketConn { - item, exist := t.mapping.Load(key) - if !exist { - return nil - } - return item.(net.PacketConn) -} - -func (t *Table) GetOrCreateLock(key string) (*sync.Cond, bool) { - item, loaded := t.mapping.LoadOrStore(key, sync.NewCond(&sync.Mutex{})) - return item.(*sync.Cond), loaded -} - -func (t *Table) Delete(key string) { - t.mapping.Delete(key) -} - -func NewTable() *Table { - return &Table{} -}