diff --git a/P4D2_2017/exercises/arp/arp.p4 b/P4D2_2017/exercises/arp/arp.p4 index 0193407..c8ae980 100644 --- a/P4D2_2017/exercises/arp/arp.p4 +++ b/P4D2_2017/exercises/arp/arp.p4 @@ -152,7 +152,7 @@ parser MyParser( ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ control MyVerifyChecksum( - in my_headers_t hdr, + inout my_headers_t hdr, inout my_metadata_t meta) { apply { } diff --git a/P4D2_2017/exercises/arp/solution/arp.p4 b/P4D2_2017/exercises/arp/solution/arp.p4 index 69065e6..1fe7f14 100644 --- a/P4D2_2017/exercises/arp/solution/arp.p4 +++ b/P4D2_2017/exercises/arp/solution/arp.p4 @@ -150,7 +150,7 @@ parser MyParser( ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ control MyVerifyChecksum( - in my_headers_t hdr, + inout my_headers_t hdr, inout my_metadata_t meta) { apply { } diff --git a/P4D2_2017/exercises/calc/calc.p4 b/P4D2_2017/exercises/calc/calc.p4 index e01e47d..63e0dea 100644 --- a/P4D2_2017/exercises/calc/calc.p4 +++ b/P4D2_2017/exercises/calc/calc.p4 @@ -69,7 +69,7 @@ parser MyParser( ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ control MyVerifyChecksum( - in my_headers_t hdr, + inout my_headers_t hdr, inout my_metadata_t meta) { apply { diff --git a/P4D2_2017/exercises/calc/solution/calc.p4 b/P4D2_2017/exercises/calc/solution/calc.p4 index 9115d7a..d03b129 100644 --- a/P4D2_2017/exercises/calc/solution/calc.p4 +++ b/P4D2_2017/exercises/calc/solution/calc.p4 @@ -134,7 +134,7 @@ parser MyParser( ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ control MyVerifyChecksum( - in my_headers_t hdr, + inout my_headers_t hdr, inout my_metadata_t meta) { apply { diff --git a/P4D2_2017/exercises/ipv4_forward/ipv4_forward.p4 b/P4D2_2017/exercises/ipv4_forward/ipv4_forward.p4 index 414612c..f069145 100644 --- a/P4D2_2017/exercises/ipv4_forward/ipv4_forward.p4 +++ b/P4D2_2017/exercises/ipv4_forward/ipv4_forward.p4 @@ -72,7 +72,7 @@ parser ParserImpl(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control verifyChecksum(in headers hdr, inout metadata meta) { +control verifyChecksum(inout headers hdr, inout metadata meta) { apply { } } diff --git a/P4D2_2017/exercises/ipv4_forward/solution/ipv4_forward.p4 b/P4D2_2017/exercises/ipv4_forward/solution/ipv4_forward.p4 index 1130b81..c9c52b0 100644 --- a/P4D2_2017/exercises/ipv4_forward/solution/ipv4_forward.p4 +++ b/P4D2_2017/exercises/ipv4_forward/solution/ipv4_forward.p4 @@ -75,7 +75,7 @@ parser ParserImpl(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control verifyChecksum(in headers hdr, inout metadata meta) { +control verifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -132,25 +132,21 @@ control computeChecksum( inout headers hdr, inout metadata meta) { - Checksum16() ipv4_checksum; - apply { - if (hdr.ipv4.isValid()) { - hdr.ipv4.hdrChecksum = ipv4_checksum.get( - { - hdr.ipv4.version, - hdr.ipv4.ihl, - hdr.ipv4.diffserv, - hdr.ipv4.totalLen, - hdr.ipv4.identification, - hdr.ipv4.flags, - hdr.ipv4.fragOffset, - hdr.ipv4.ttl, - hdr.ipv4.protocol, - hdr.ipv4.srcAddr, - hdr.ipv4.dstAddr - }); - } + update_checksum(true, + { hdr.ipv4.version, + hdr.ipv4.ihl, + hdr.ipv4.diffserv, + hdr.ipv4.totalLen, + hdr.ipv4.identification, + hdr.ipv4.flags, + hdr.ipv4.fragOffset, + hdr.ipv4.ttl, + hdr.ipv4.protocol, + hdr.ipv4.srcAddr, + hdr.ipv4.dstAddr + }, + hdr.ipv4.hdrChecksum, HashAlgorithm.csum16); } } diff --git a/P4D2_2017/exercises/mri/mri.p4 b/P4D2_2017/exercises/mri/mri.p4 index d602260..11f8bfd 100644 --- a/P4D2_2017/exercises/mri/mri.p4 +++ b/P4D2_2017/exercises/mri/mri.p4 @@ -150,7 +150,7 @@ inout standard_metadata_t standard_metadata) { ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control verifyChecksum(in headers hdr, inout metadata meta) { +control verifyChecksum(inout headers hdr, inout metadata meta) { apply { } } diff --git a/P4D2_2017/exercises/mri/solution/mri.p4 b/P4D2_2017/exercises/mri/solution/mri.p4 index 16026af..2f0b1a2 100644 --- a/P4D2_2017/exercises/mri/solution/mri.p4 +++ b/P4D2_2017/exercises/mri/solution/mri.p4 @@ -138,7 +138,7 @@ inout standard_metadata_t standard_metadata) { ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control verifyChecksum(in headers hdr, inout metadata meta) { +control verifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -228,13 +228,9 @@ control computeChecksum( inout headers hdr, inout metadata meta) { - Checksum16() ipv4_checksum; - apply { - if (hdr.ipv4.isValid()) { - hdr.ipv4.hdrChecksum = ipv4_checksum.get( - { - hdr.ipv4.version, + update_checksum(true, + { hdr.ipv4.version, hdr.ipv4.ihl, hdr.ipv4.diffserv, hdr.ipv4.totalLen, @@ -245,8 +241,8 @@ inout metadata meta) hdr.ipv4.protocol, hdr.ipv4.srcAddr, hdr.ipv4.dstAddr - }); - } + }, + hdr.ipv4.hdrChecksum, HashAlgorithm.csum16); } } diff --git a/SIGCOMM_2017/exercises/basic/basic.p4 b/SIGCOMM_2017/exercises/basic/basic.p4 index 80f3676..c0e7d93 100644 --- a/SIGCOMM_2017/exercises/basic/basic.p4 +++ b/SIGCOMM_2017/exercises/basic/basic.p4 @@ -62,7 +62,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -157,4 +157,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/basic/solution/basic.p4 b/SIGCOMM_2017/exercises/basic/solution/basic.p4 index e51b285..7d491ea 100644 --- a/SIGCOMM_2017/exercises/basic/solution/basic.p4 +++ b/SIGCOMM_2017/exercises/basic/solution/basic.p4 @@ -74,7 +74,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -173,4 +173,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/calc/calc.p4 b/SIGCOMM_2017/exercises/calc/calc.p4 index 4b235d0..b4ed4b4 100644 --- a/SIGCOMM_2017/exercises/calc/calc.p4 +++ b/SIGCOMM_2017/exercises/calc/calc.p4 @@ -132,7 +132,7 @@ parser MyParser(packet_in packet, /************************************************************************* ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } diff --git a/SIGCOMM_2017/exercises/calc/solution/calc.p4 b/SIGCOMM_2017/exercises/calc/solution/calc.p4 index 4cc2892..3c7e86c 100644 --- a/SIGCOMM_2017/exercises/calc/solution/calc.p4 +++ b/SIGCOMM_2017/exercises/calc/solution/calc.p4 @@ -132,7 +132,7 @@ parser MyParser(packet_in packet, /************************************************************************* ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } diff --git a/SIGCOMM_2017/exercises/ecn/ecn.p4 b/SIGCOMM_2017/exercises/ecn/ecn.p4 index 6270e8b..576169f 100644 --- a/SIGCOMM_2017/exercises/ecn/ecn.p4 +++ b/SIGCOMM_2017/exercises/ecn/ecn.p4 @@ -78,7 +78,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -185,4 +185,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/ecn/solution/ecn.p4 b/SIGCOMM_2017/exercises/ecn/solution/ecn.p4 index 59b9756..2aebe20 100644 --- a/SIGCOMM_2017/exercises/ecn/solution/ecn.p4 +++ b/SIGCOMM_2017/exercises/ecn/solution/ecn.p4 @@ -76,7 +76,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -185,4 +185,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/hula/hula.p4 b/SIGCOMM_2017/exercises/hula/hula.p4 index 7ac4f49..8faa0ed 100644 --- a/SIGCOMM_2017/exercises/hula/hula.p4 +++ b/SIGCOMM_2017/exercises/hula/hula.p4 @@ -130,7 +130,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -430,4 +430,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/hula/solution/hula.p4 b/SIGCOMM_2017/exercises/hula/solution/hula.p4 index 06f4ae6..e8ea288 100644 --- a/SIGCOMM_2017/exercises/hula/solution/hula.p4 +++ b/SIGCOMM_2017/exercises/hula/solution/hula.p4 @@ -130,7 +130,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } diff --git a/SIGCOMM_2017/exercises/load_balance/load_balance.p4 b/SIGCOMM_2017/exercises/load_balance/load_balance.p4 index 5ded175..54dfed6 100644 --- a/SIGCOMM_2017/exercises/load_balance/load_balance.p4 +++ b/SIGCOMM_2017/exercises/load_balance/load_balance.p4 @@ -86,7 +86,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } diff --git a/SIGCOMM_2017/exercises/load_balance/solution/load_balance.p4 b/SIGCOMM_2017/exercises/load_balance/solution/load_balance.p4 index bfb5a07..64d9bcb 100644 --- a/SIGCOMM_2017/exercises/load_balance/solution/load_balance.p4 +++ b/SIGCOMM_2017/exercises/load_balance/solution/load_balance.p4 @@ -87,7 +87,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } diff --git a/SIGCOMM_2017/exercises/mri/mri.p4 b/SIGCOMM_2017/exercises/mri/mri.p4 index 5fcf1d3..1f7871b 100644 --- a/SIGCOMM_2017/exercises/mri/mri.p4 +++ b/SIGCOMM_2017/exercises/mri/mri.p4 @@ -148,7 +148,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -277,4 +277,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/mri/solution/mri.p4 b/SIGCOMM_2017/exercises/mri/solution/mri.p4 index ef369b5..1ce23be 100644 --- a/SIGCOMM_2017/exercises/mri/solution/mri.p4 +++ b/SIGCOMM_2017/exercises/mri/solution/mri.p4 @@ -140,7 +140,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -264,4 +264,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/scrambler/scrambler.p4 b/SIGCOMM_2017/exercises/scrambler/scrambler.p4 index 34ebabe..8d4e115 100644 --- a/SIGCOMM_2017/exercises/scrambler/scrambler.p4 +++ b/SIGCOMM_2017/exercises/scrambler/scrambler.p4 @@ -74,7 +74,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -177,4 +177,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/scrambler/solution/scrambler.p4 b/SIGCOMM_2017/exercises/scrambler/solution/scrambler.p4 index 6c79468..e508af6 100644 --- a/SIGCOMM_2017/exercises/scrambler/solution/scrambler.p4 +++ b/SIGCOMM_2017/exercises/scrambler/solution/scrambler.p4 @@ -74,7 +74,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -188,4 +188,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/source_routing/solution/source_routing.p4 b/SIGCOMM_2017/exercises/source_routing/solution/source_routing.p4 index 33f01e8..30c497b 100644 --- a/SIGCOMM_2017/exercises/source_routing/solution/source_routing.p4 +++ b/SIGCOMM_2017/exercises/source_routing/solution/source_routing.p4 @@ -92,7 +92,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -178,4 +178,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main; diff --git a/SIGCOMM_2017/exercises/source_routing/source_routing.p4 b/SIGCOMM_2017/exercises/source_routing/source_routing.p4 index 6c85b99..a84479e 100644 --- a/SIGCOMM_2017/exercises/source_routing/source_routing.p4 +++ b/SIGCOMM_2017/exercises/source_routing/source_routing.p4 @@ -96,7 +96,7 @@ parser MyParser(packet_in packet, ************ C H E C K S U M V E R I F I C A T I O N ************* *************************************************************************/ -control MyVerifyChecksum(in headers hdr, inout metadata meta) { +control MyVerifyChecksum(inout headers hdr, inout metadata meta) { apply { } } @@ -188,4 +188,4 @@ MyIngress(), MyEgress(), MyComputeChecksum(), MyDeparser() -) main; \ No newline at end of file +) main;