/* -*- P4_16 -*- */ #ifndef CHECKSUMS_P4 #define CHECKSUMS_P4 #include #include #include "headers.p4" /************************************************************************* ************* C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply {} } /************************************************************************* ************** C H E C K S U M C O M P U T A T I O N ************** *************************************************************************/ control MyComputeChecksum(inout headers hdr, inout metadata meta) { apply { update_checksum ( hdr.icmp6.isValid(), { hdr.ipv6.src_addr, /* 128 */ hdr.ipv6.dst_addr, /* 128 */ hdr.ipv6.payload_length, /* 16 -> should be 32 according to RFC2460 - also static number? */ 24w0, /* 24 0's */ PROTO_ICMP6 /* 8 */ } hdr.icmp6.checksum, HashAlgorithm.csum16); } } #endif