/* -*- 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 { bit<32> cksum = (bit<32>) hdr.ipv6.payload_length; update_checksum ( hdr.icmp6.isValid(), { hdr.ipv6.src_addr, /* 128 */ hdr.ipv6.dst_addr, /* 128 */ cksum, /* 32 */ 24w0, /* 24 0's */ PROTO_ICMP6 /* 8 */ }, hdr.icmp6.checksum, HashAlgorithm.csum16 ); } } #endif