code: func IPv4(t *testing.T, b []byte, checkers ...NetworkChecker) {
  	t.Helper()
  
  	ipv4 := header.IPv4(b)
  
  	if !ipv4.IsValid(len(b)) {
  		t.Error("Not a valid IPv4 packet")
  	}
  
  	xsum := ipv4.CalculateChecksum()
  	if xsum != 0 && xsum != 0xffff {
  		t.Errorf("Bad checksum: 0x%x, checksum in packet: 0x%x", xsum, ipv4.Checksum())
  	}
  
  	for _, f := range checkers {
  		f(t, []header.Network{ipv4})
  	}
  	if t.Failed() {
  		t.FailNow()
  	}
  }
docs: // IPv4 checks the validity and properties of the given IPv4 packet. It is
  // expected to be used in conjunction with other network checkers for specific
  // properties. For example, to check the source and destination address, one
  // would call:
  //
  // checker.IPv4(t, b, checker.SrcAddr(x), checker.DstAddr(y))