forked from quic-go/quic-go
fix parsing of interface index in packet info cmsg on big endian architectures (#5094)
This commit is contained in:
@@ -30,7 +30,7 @@ func parseIPv4PktInfo(body []byte) (ip netip.Addr, ifIndex uint32, ok bool) {
|
|||||||
if len(body) != 12 {
|
if len(body) != 12 {
|
||||||
return netip.Addr{}, 0, false
|
return netip.Addr{}, 0, false
|
||||||
}
|
}
|
||||||
return netip.AddrFrom4(*(*[4]byte)(body[8:12])), binary.LittleEndian.Uint32(body), true
|
return netip.AddrFrom4(*(*[4]byte)(body[8:12])), binary.NativeEndian.Uint32(body), true
|
||||||
}
|
}
|
||||||
|
|
||||||
func isGSOEnabled(syscall.RawConn) bool { return false }
|
func isGSOEnabled(syscall.RawConn) bool { return false }
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func parseIPv4PktInfo(body []byte) (ip netip.Addr, ifIndex uint32, ok bool) {
|
|||||||
if len(body) != 12 {
|
if len(body) != 12 {
|
||||||
return netip.Addr{}, 0, false
|
return netip.Addr{}, 0, false
|
||||||
}
|
}
|
||||||
return netip.AddrFrom4(*(*[4]byte)(body[8:12])), binary.LittleEndian.Uint32(body), true
|
return netip.AddrFrom4(*(*[4]byte)(body[8:12])), binary.NativeEndian.Uint32(body), true
|
||||||
}
|
}
|
||||||
|
|
||||||
// isGSOEnabled tests if the kernel supports GSO.
|
// isGSOEnabled tests if the kernel supports GSO.
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ func (c *oobConn) ReadPacket() (receivedPacket, error) {
|
|||||||
// };
|
// };
|
||||||
if len(body) == 20 {
|
if len(body) == 20 {
|
||||||
p.info.addr = netip.AddrFrom16(*(*[16]byte)(body[:16])).Unmap()
|
p.info.addr = netip.AddrFrom16(*(*[16]byte)(body[:16])).Unmap()
|
||||||
p.info.ifIndex = binary.LittleEndian.Uint32(body[16:])
|
p.info.ifIndex = binary.NativeEndian.Uint32(body[16:])
|
||||||
} else {
|
} else {
|
||||||
invalidCmsgOnceV6.Do(func() {
|
invalidCmsgOnceV6.Do(func() {
|
||||||
log.Printf("Received invalid IPv6 packet info control message: %+x. "+
|
log.Printf("Received invalid IPv6 packet info control message: %+x. "+
|
||||||
|
|||||||
Reference in New Issue
Block a user