code: func UDPRemoteForwardListener(addr string, chain *Chain, ttl time.Duration) (Listener, error) {
  	laddr, err := net.ResolveUDPAddr("udp", addr)
  	if err != nil {
  		return nil, err
  	}
  
  	ln := &udpRemoteForwardListener{
  		addr:     laddr,
  		chain:    chain,
  		conns:    make(map[string]*udpServerConn),
  		connChan: make(chan net.Conn, 1024),
  		errChan:  make(chan error, 1),
  		ttl:      ttl,
  		closed:   make(chan struct{}),
  	}
  
  	go ln.listenLoop()
  
  	err = <-ln.errChan
  
  	return ln, err
  }
docs: // UDPRemoteForwardListener creates a Listener for UDP remote port forwarding server.