net/packet: don't make IP6Header.marshalPseudo assume UDP
It will be used for ICMPv6 next, so pass in the proto. Also, use the ipproto constants rather than hardcoding the mysterious number. Change-Id: I57b68bdd2d39fff75f82affe955aff9245de246b Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
485bcdc951
commit
affc4530a2
|
@ -57,7 +57,7 @@ func (h *IP6Header) ToResponse() {
|
|||
|
||||
// marshalPseudo serializes h into buf in the "pseudo-header" form
|
||||
// required when calculating UDP checksums.
|
||||
func (h IP6Header) marshalPseudo(buf []byte) error {
|
||||
func (h IP6Header) marshalPseudo(buf []byte, proto ipproto.Proto) error {
|
||||
if len(buf) < h.Len() {
|
||||
return errSmallBuffer
|
||||
}
|
||||
|
@ -72,6 +72,6 @@ func (h IP6Header) marshalPseudo(buf []byte) error {
|
|||
buf[36] = 0
|
||||
buf[37] = 0
|
||||
buf[38] = 0
|
||||
buf[39] = 17 // NextProto
|
||||
buf[39] = byte(proto) // NextProto
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -40,7 +40,7 @@ func (h UDP6Header) Marshal(buf []byte) error {
|
|||
binary.BigEndian.PutUint16(buf[46:48], 0) // blank checksum
|
||||
|
||||
// UDP checksum with IP pseudo header.
|
||||
h.IP6Header.marshalPseudo(buf)
|
||||
h.IP6Header.marshalPseudo(buf, ipproto.UDP)
|
||||
binary.BigEndian.PutUint16(buf[46:48], ip4Checksum(buf[:]))
|
||||
|
||||
h.IP6Header.Marshal(buf)
|
||||
|
|
Loading…
Reference in New Issue