code: func NewUDPProxy(frontendAddr, backendAddr *net.UDPAddr) (*UDPProxy, error) {
  	listener, err := net.ListenUDP("udp", frontendAddr)
  	if err != nil {
  		return nil, err
  	}
  	return &UDPProxy{
  		listener:       listener,
  		frontendAddr:   listener.LocalAddr().(*net.UDPAddr),
  		backendAddr:    backendAddr,
  		connTrackTable: make(connTrackMap),
  	}, nil
  }
docs: // NewUDPProxy creates a new UDPProxy.