add stackbasic test

This commit is contained in:
soypat
2025-04-05 17:17:32 -03:00
parent ba9124b079
commit 70a3bbbe2f
4 changed files with 102 additions and 33 deletions
+29 -1
View File
@@ -116,7 +116,10 @@ func (conn *TCPConn) HandleIP(buf []byte, off int) (n int, err error) {
if err != nil {
return 0, err
}
copy(raddr, conn.remoteAddr)
err = setDstAddr(buf[:off], conn.remoteAddr)
if err != nil {
return 0, err
}
return n, nil
}
@@ -145,6 +148,31 @@ func getIPAddr(buf []byte) (addr []byte, err error) {
return addr, err
}
func setDstAddr(buf []byte, addr []byte) (err error) {
var dstaddr []byte
switch buf[0] >> 4 {
case 4:
ifrm4, err := ipv4.NewFrame(buf)
if err != nil {
return err
}
dstaddr = ifrm4.DestinationAddr()[:]
case 6:
ifrm6, err := ipv6.NewFrame(buf)
if err != nil {
return err
}
dstaddr = ifrm6.DestinationAddr()[:]
default:
err = errors.New("unsupported IP version")
}
if err == nil && len(dstaddr) != len(addr) {
return errors.New("invalid ip version to setDstAddr")
}
copy(dstaddr, addr)
return nil
}
func (conn *TCPConn) isRaddrSet() bool {
return len(conn.remoteAddr) != 0
}