mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
Automatic merge from release/2.6.0 -> release/2.7.0
* commit '3ebe726100146b764598dbde96c546703e44d719': fix: baremetal tftp use local IP send response
This commit is contained in:
@@ -113,8 +113,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.Address, s.DHCPPort)
|
||||
dhcpSrv, _, err := dhcp.NewDHCPServer2(s.Address, 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