Open
Description
I'm working on a project that uses packet sockets directly, and I have to calculate the IPv4 checksum on my own since I'm building from Ethernet frames up.
I notice that x/net/ipv4
doesn't provide any way to easily calculate a checksum, but I think such a function/method could be useful in conjunction with the ipv4.Header
type.
I wrote a basic implementation in ~30 lines with documentation comments, and would be happy to submit it upstream. At this point, my questions are:
- Is this something that would be considered generally useful enough to go in
x/net/ipv4
? - If so, what should the API look like?
My current implementation accepts a byte slice from the output of ipv4.Header.Marshal
, but I could see a method making sense as well.
// ipv4Checksum computes the IPv4 header checksum for input IPv4 header bytes.
func ipv4Checksum(b []byte) (uint16, error) {
// ...
}
/cc @mikioh