Re-introduce checksumming in p4

This commit is contained in:
Nico Schottelius 2019-03-05 22:42:51 +01:00
parent 2c3db11c80
commit 0bd12260c6

View file

@ -21,26 +21,19 @@ control MyVerifyChecksum(inout headers hdr, inout metadata meta) {
control MyComputeChecksum(inout headers hdr, inout metadata meta) {
apply {
bit<32> icmp6_len = (bit<32>) hdr.ipv6.payload_length;
if(meta.calc_icmp6_checksum) {
hdr.icmp6.checksum = 42; /* must be correct */
}
// verify_checksum_with_payload<T, O>(in bool condition, in T data, inout O checksum, HashAlgorithm algo);
// GRRRRR bit<32> icmp6_len = 32; /* for icmp6 NS */
// GRRRRR update_checksum (
// GRRRRR hdr.icmp6.isValid(),
// GRRRRR {
// GRRRRR hdr.ipv6.src_addr, /* 128 */
// GRRRRR hdr.ipv6.dst_addr, /* 128 */
// GRRRRR icmp6_len, /* 32 */
// GRRRRR 24w0, /* 24 0's */
// GRRRRR PROTO_ICMP6 /* 8 */
// GRRRRR },
// GRRRRR hdr.icmp6.checksum,
// GRRRRR HashAlgorithm.csum16
// GRRRRR );
update_checksum_with_payload(meta.calc_icmp6_checksum,
{
hdr.ipv6.src_addr, /* 128 */
hdr.ipv6.dst_addr, /* 128 */
icmp6_len, /* 32 */
24w0, /* 24 0's */
PROTO_ICMP6 /* 8 */
},
hdr.icmp6.checksum,
HashAlgorithm.csum16
);
}
}