code: func (pm *PortMapper) Unmap(host net.Addr) error {
  	pm.lock.Lock()
  	defer pm.lock.Unlock()
  
  	key := getKey(host)
  	data, exists := pm.currentMappings[key]
  	if !exists {
  		return ErrPortNotMapped
  	}
  
  	if data.userlandProxy != nil {
  		data.userlandProxy.Stop()
  	}
  
  	delete(pm.currentMappings, key)
  
  	containerIP, containerPort := getIPAndPort(data.container)
  	hostIP, hostPort := getIPAndPort(data.host)
  	if err := pm.DeleteForwardingTableEntry(data.proto, hostIP, hostPort, containerIP.String(), containerPort); err != nil {
  		logrus.Errorf("Error on iptables delete: %s", err)
  	}
  
  	switch a := host.(type) {
  	case *net.TCPAddr:
  		return pm.Allocator.ReleasePort(a.IP, "tcp", a.Port)
  	case *net.UDPAddr:
  		return pm.Allocator.ReleasePort(a.IP, "udp", a.Port)
  	case *sctp.SCTPAddr:
  		if len(a.IP) == 0 {
  			return ErrSCTPAddrNoIP
  		}
  		return pm.Allocator.ReleasePort(a.IP[0], "sctp", a.Port)
  	}
  	return ErrUnknownBackendAddressType
  }
docs: // Unmap removes stored mapping for the specified host transport address