Use an action to do the same thing as before
This commit is contained in:
parent
7d9e9e1cfd
commit
12658b23ac
2 changed files with 30 additions and 4 deletions
20
doc/plan.org
20
doc/plan.org
|
@ -1398,6 +1398,26 @@ I could work around this by using if(! .. .hit) { my_action(table_id)
|
||||||
^^^^^^
|
^^^^^^
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
**** No conditional execution in actions
|
||||||
|
#+BEGIN_SRC
|
||||||
|
../p4src/static-mapping.p4(57): error: MethodCallStatement: Conditional execution in actions is not supported on this target
|
||||||
|
hdr.icmp.setValid();
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
../p4src/static-mapping.p4(70): error: MethodCallStatement: Conditional execution in actions is not supported on this target
|
||||||
|
hdr.icmp6.setInvalid();
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
../p4src/static-mapping.p4(73): error: MethodCallStatement: Conditional execution in actions is not supported on this target
|
||||||
|
hdr.icmp6_na_ns.setInvalid();
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
../p4src/static-mapping.p4(74): error: MethodCallStatement: Conditional execution in actions is not supported on this target
|
||||||
|
hdr.icmp6_option_link_layer_addr.setInvalid();
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
Compilation Error
|
||||||
|
p4@ubuntu:~/master-thesis/p4app$
|
||||||
|
|
||||||
|
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
*** Implementation limitations
|
*** Implementation limitations
|
||||||
**** No fragmentation support (yet)
|
**** No fragmentation support (yet)
|
||||||
**** No session handling (yet)
|
**** No session handling (yet)
|
||||||
|
|
|
@ -48,6 +48,12 @@ control MyIngress(inout headers hdr,
|
||||||
|
|
||||||
/********************** NAT64 / NAT46 ACTIONS ***********************************/
|
/********************** NAT64 / NAT46 ACTIONS ***********************************/
|
||||||
|
|
||||||
|
|
||||||
|
action mimic_assign_echo_request()
|
||||||
|
{
|
||||||
|
hdr.icmp.type = ICMP_ECHO_REQUEST;
|
||||||
|
}
|
||||||
|
|
||||||
/* changes for icmp6 -> icmp
|
/* changes for icmp6 -> icmp
|
||||||
- first echo request/reply
|
- first echo request/reply
|
||||||
- later maybe other
|
- later maybe other
|
||||||
|
@ -58,11 +64,11 @@ control MyIngress(inout headers hdr,
|
||||||
hdr.ipv4.protocol = PROTO_ICMP; // overwrite generic same protocol assumption
|
hdr.ipv4.protocol = PROTO_ICMP; // overwrite generic same protocol assumption
|
||||||
|
|
||||||
if(hdr.icmp6.type == ICMP6_ECHO_REQUEST) {
|
if(hdr.icmp6.type == ICMP6_ECHO_REQUEST) {
|
||||||
hdr.icmp.type = ICMP_ECHO_REQUEST;
|
mimic_assign_echo_request();
|
||||||
}
|
|
||||||
if(hdr.icmp6.type == ICMP6_ECHO_REPLY) {
|
|
||||||
hdr.icmp.type = ICMP_ECHO_REPLY;
|
|
||||||
}
|
}
|
||||||
|
// if(hdr.icmp6.type == ICMP6_ECHO_REPLY) {
|
||||||
|
// hdr.icmp.type = ICMP_ECHO_REPLY;
|
||||||
|
// }
|
||||||
|
|
||||||
/* trigger checksumming */
|
/* trigger checksumming */
|
||||||
meta.switch_task = TASK_CHECKSUM_ICMP;
|
meta.switch_task = TASK_CHECKSUM_ICMP;
|
||||||
|
|
Loading…
Reference in a new issue