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:
邱剑
2019-03-19 19:53:25 +08:00
2 changed files with 13 additions and 2 deletions
-2
View File
@@ -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)
+13
View File
@@ -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 {