This commit is contained in:
Claire Wang 2024-01-16 15:03:58 -05:00
parent 331a6d105f
commit ae5ba8467e
3 changed files with 42 additions and 0 deletions

View File

@ -1176,6 +1176,7 @@ func (c *Conn) mkReceiveFunc(ruc *RebindingUDPConn, healthItem *health.ReceiveFu
if neterror.PacketWasTruncated(err) {
continue
}
//_, err := ruc.ReadBatch(batch.msgs[:len(buffs)], MSG_ERRQUE) rcv message ip recv here
return 0, err
}

View File

@ -47,3 +47,35 @@ func (c *Conn) getDontFragment(network string) (bool, error) {
}
return false, err
}
func (c *Conn) setReceiveICMPErrors(network string, enable bool) error {
optArg := 1
if enable == false {
optArg = 0
}
var err error
rcErr := c.connControl(network, func(fd uintptr) {
err = syscall.SetsockoptInt(int(fd), getIPProto(network), syscall.IP_RECVERR, optArg)
})
if rcErr != nil {
return rcErr
}
return err
}
func (c *Conn) getReceiveICMPErrors(network string, enable bool) (bool, error) {
var v int
var err error
rcErr := c.connControl(network, func(fd uintptr) {
v, err = syscall.GetsockoptInt(int(fd), getIPProto(network), syscall.IP_RECVERR)
})
if rcErr != nil {
return false, rcErr
}
if v == 1 {
return true, err
}
return false, err
}

View File

@ -177,3 +177,12 @@ func (c *RebindingUDPConn) SyscallConn() (syscall.RawConn, error) {
}
return sc.SyscallConn()
}
/*func (c *RebindingUDPConn) ReadICMPErrors(msgs []ipv6.Message) (int, error) {
for {
sc, ok := c.pconn.(syscall.Conn)
a, err := sc.SyscallConn()
err := syscall.SetsockoptInt(sc.SyscallConn(), syscall.SOL_IP, syscall.IP_RECVERR, 1)
return n, err
}
}*/