2019-04-17 13:54:10 -04:00
|
|
|
package portmapper
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net"
|
|
|
|
"sync"
|
|
|
|
|
2021-04-05 20:24:47 -04:00
|
|
|
"github.com/docker/docker/libnetwork/portallocator"
|
2019-04-17 13:54:10 -04:00
|
|
|
)
|
|
|
|
|
|
|
|
// PortMapper manages the network address translation
|
|
|
|
type PortMapper struct {
|
|
|
|
bridgeName string
|
|
|
|
|
|
|
|
// udp:ip:port
|
|
|
|
currentMappings map[string]*mapping
|
|
|
|
lock sync.Mutex
|
|
|
|
|
|
|
|
proxyPath string
|
|
|
|
|
|
|
|
Allocator *portallocator.PortAllocator
|
|
|
|
}
|
|
|
|
|
|
|
|
// AppendForwardingTableEntry adds a port mapping to the forwarding table
|
|
|
|
func (pm *PortMapper) AppendForwardingTableEntry(proto string, sourceIP net.IP, sourcePort int, containerIP string, containerPort int) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// DeleteForwardingTableEntry removes a port mapping from the forwarding table
|
|
|
|
func (pm *PortMapper) DeleteForwardingTableEntry(proto string, sourceIP net.IP, sourcePort int, containerIP string, containerPort int) error {
|
|
|
|
return nil
|
|
|
|
}
|
2020-11-20 16:25:32 -05:00
|
|
|
|
|
|
|
// checkIP checks if IP is valid and matching to chain version
|
|
|
|
func (pm *PortMapper) checkIP(ip net.IP) bool {
|
|
|
|
// no IPv6 for port mapper on windows -> only IPv4 valid
|
|
|
|
return ip.To4() != nil
|
|
|
|
}
|