mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Automatic merge from release/2.7.0 -> release/2.8.0
* commit '4922d3a8769c9a0c878046f9ac25db39b643dcfc': fix: baremetal tftp use local IP send response
This commit is contained in:
@@ -117,8 +117,6 @@ func (s *Server) Serve() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
//tftpSrv := tftp.NewServer(tftpHandler.ReadHandler, nil)
|
||||
//tftpSrv.SetTimeout(5 * time.Second)
|
||||
|
||||
log.Infof("DHCPServer Bind %s %d", s.DHCPAddress, s.DHCPPort)
|
||||
dhcpSrv, _, err := dhcp.NewDHCPServer2(s.DHCPAddress, s.DHCPPort, false)
|
||||
|
||||
@@ -106,10 +106,23 @@ func (h *TFTPHandler) transferLog(clientAddr net.Addr, path string, err error) {
|
||||
}
|
||||
|
||||
func (s *Server) serveTFTP(l net.PacketConn, handler *TFTPHandler) error {
|
||||
bindDial := func(network, addr string) (net.Conn, error) {
|
||||
localIp := l.LocalAddr().(*net.UDPAddr).IP
|
||||
remoteAddr, err := net.ResolveUDPAddr("udp", addr)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return net.DialUDP("udp", &net.UDPAddr{
|
||||
IP: localIp,
|
||||
Port: 0, // random free port
|
||||
}, remoteAddr)
|
||||
}
|
||||
|
||||
ts := tftp.Server{
|
||||
Handler: handler.Handle,
|
||||
InfoLog: func(msg string) { log.Debugf("TFTP msg: %s", msg) },
|
||||
TransferLog: handler.transferLog,
|
||||
Dial: bindDial,
|
||||
}
|
||||
err := ts.Serve(l)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user