Merge branch 'master' of gitlab.ethz.ch:nicosc/master-thesis
This commit is contained in:
commit
5552267824
27 changed files with 22302 additions and 62 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1 +1,3 @@
|
|||
support/
|
||||
*.pyc
|
||||
*.log
|
||||
|
|
28
doc/plan.org
28
doc/plan.org
|
@ -3328,6 +3328,12 @@ https://en.wikipedia.org/wiki/IPv4_header_checksum
|
|||
CLOSED: [2019-07-21 Sun 14:01]
|
||||
| eth2 <--> nf0 |
|
||||
| eth1 <--> nf3 |
|
||||
** Compile log
|
||||
| 5.1. - 5.5 | failure due to variable renaming |
|
||||
| 5.6 | subparser: compiled! |
|
||||
| 5.7 | subcontrol: [nsg] |
|
||||
| 5.8 | nat64 actions/table: -- |
|
||||
| 5.9 | nat64+headers [esprimo]: |
|
||||
** TODO Benchmark/comparison
|
||||
*** TODO Setup / Benchmark Jool
|
||||
*** TODO Setup / Benchmark tayga
|
||||
|
@ -6099,8 +6105,10 @@ nico@nsg-System:~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switc
|
|||
#+END_CENTER
|
||||
*** DONE 2019-07-23: check: switch_calc compiles
|
||||
CLOSED: [2019-07-23 Tue 08:59]
|
||||
*** TODO Reset project to plain send-to-port1 code, no includes
|
||||
*** TODO 2019-07-23: merge/migrate code into switch calc until it breaks
|
||||
*** DONE Reset project to plain send-to-port1 code, no includes
|
||||
CLOSED: [2019-07-24 Wed 12:21]
|
||||
*** DONE 2019-07-23: merge/migrate code into switch calc until it breaks
|
||||
CLOSED: [2019-07-24 Wed 12:21]
|
||||
*** TODO 2019-07-23: install xilinx & co. to eth2.nico.ungleich.cloud -> 2nd compiler [MANUAL]
|
||||
**** DONE Install SDNET via xsetup
|
||||
CLOSED: [2019-07-23 Tue 11:03]
|
||||
|
@ -6212,7 +6220,8 @@ sudo apt-get install -y libc6-dev-i386
|
|||
sudo apt install -y libc6-dev
|
||||
|
||||
#+END_CENTER
|
||||
*** 2019-07-23: compiling on ISG computer
|
||||
*** DONE 2019-07-23: compiling on ISG computer
|
||||
CLOSED: [2019-07-24 Wed 12:19]
|
||||
**** DONE try1: "souce" files: / missing sumereg
|
||||
CLOSED: [2019-07-23 Tue 12:14]
|
||||
|
||||
|
@ -6294,7 +6303,8 @@ Die Jul 23 13:34:54 CEST 2019
|
|||
make: *** No targets specified and no makefile found. Stop.
|
||||
|
||||
#+END_CENTER
|
||||
*** the config writes madness
|
||||
*** DONE the config writes madness
|
||||
CLOSED: [2019-07-24 Wed 11:44]
|
||||
- step9 (sume simulation, the longest step) in the process calls
|
||||
"config_writes.py"
|
||||
- config_writes.py fails with a syntax error, as it is incomplete
|
||||
|
@ -6343,7 +6353,7 @@ endtask
|
|||
|
||||
#+END_CENTER
|
||||
|
||||
*** DONE the netpfga madness: Renaming variables breaks the compilation.
|
||||
*** DONE the netpfga madness: Renaming variables breaks the compilation. !!!!!!
|
||||
CLOSED: [2019-07-24 Wed 09:33]
|
||||
#+BEGIN_CENTER
|
||||
@Xilinx_MaxPacketRegion(1024)
|
||||
|
@ -6365,7 +6375,8 @@ endtask
|
|||
}
|
||||
#+END_CENTER
|
||||
|
||||
*** state names are fixed
|
||||
*** DONE state names are fixed: needs to be "start"
|
||||
CLOSED: [2019-07-24 Wed 11:44]
|
||||
#+BEGIN_CENTER
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
|
@ -6387,7 +6398,6 @@ make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume
|
|||
Makefile:31: recipe for target 'frontend' failed
|
||||
|
||||
#+END_CENTER
|
||||
|
||||
*** TODO Further notes P4/master thesis
|
||||
- Cannot easily run P4 on notebook - changes to the system very
|
||||
invasive
|
||||
|
@ -6427,6 +6437,10 @@ release, use 'get_user_parameters' instead
|
|||
messages that actually constitute ERROR messages, but are not
|
||||
flagged as such nor do they cause the build process to abort.
|
||||
|
||||
*** 2019-07-24: setup VM in DCL as third compiler [INSTALL MANUAL]
|
||||
**** TODO install mate for getting xlibraries
|
||||
**** Install sdnet
|
||||
|
||||
** The NetPFGA saga
|
||||
Problems encountered:
|
||||
- The logfile for a compile run is 10k+ lines
|
||||
|
|
27
netpfga/log/compile-2019-07-24-095024-subparser-5.6
Normal file
27
netpfga/log/compile-2019-07-24-095024-subparser-5.6
Normal file
File diff suppressed because one or more lines are too long
29
netpfga/log/compile-2019-07-24-095108-subparser-5.6
Normal file
29
netpfga/log/compile-2019-07-24-095108-subparser-5.6
Normal file
|
@ -0,0 +1,29 @@
|
|||
+ date
|
||||
Mit Jul 24 09:51:08 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(37): warning: start: implicit transition to `reject'
|
||||
state start {
|
||||
^^^^^
|
||||
minip4_solution.p4(39): error: Could not find declaration for user_metadata
|
||||
user_metadata.unused = 0;
|
||||
^^^^^^^^^^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
32
netpfga/log/compile-2019-07-24-095142-subparser-5.6
Normal file
32
netpfga/log/compile-2019-07-24-095142-subparser-5.6
Normal file
|
@ -0,0 +1,32 @@
|
|||
+ date
|
||||
Mit Jul 24 09:51:42 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(37): warning: start: implicit transition to `reject'
|
||||
state start {
|
||||
^^^^^
|
||||
/opt/Xilinx/SDNet/2018.2/data/p4include/sume_switch.p4(40): error: Structure struct sume_metadata_t does not have a field unused
|
||||
struct sume_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
minip4_solution.p4(39)
|
||||
standard_metadata.unused = 0;
|
||||
^^^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
35
netpfga/log/compile-2019-07-24-095211-subparser-5.6
Normal file
35
netpfga/log/compile-2019-07-24-095211-subparser-5.6
Normal file
|
@ -0,0 +1,35 @@
|
|||
+ date
|
||||
Mit Jul 24 09:52:11 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(37): warning: start: implicit transition to `reject'
|
||||
state start {
|
||||
^^^^^
|
||||
minip4_solution.p4(52): warning: realparser: unused instance
|
||||
RealParser() realparser;
|
||||
^^^^^^^^^^
|
||||
minip4_solution.p4(45): error: parser TopParser: parser does not have a `start' state
|
||||
parser TopParser(
|
||||
^^^^^^^^^
|
||||
minip4_solution.p4(45): warning: accept state in parser TopParser is unreachable
|
||||
parser TopParser(
|
||||
^^^^^^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
74
netpfga/log/compile-2019-07-24-095326-subparser-5.6
Normal file
74
netpfga/log/compile-2019-07-24-095326-subparser-5.6
Normal file
|
@ -0,0 +1,74 @@
|
|||
+ date
|
||||
Mit Jul 24 09:53:26 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(37): warning: start: implicit transition to `reject'
|
||||
state start {
|
||||
^^^^^
|
||||
minip4_solution.p4(30): warning: accept state in parser RealParser is unreachable
|
||||
parser RealParser(
|
||||
^^^^^^^^^^
|
||||
minip4_solution.p4(45): warning: accept state in parser TopParser is unreachable
|
||||
parser TopParser(
|
||||
^^^^^^^^^
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/p4_px_tables.py commands.txt .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
./gen_testdata.py
|
||||
Applying pkt on nf0 at 1:
|
||||
Applying pkt on nf1 at 2:
|
||||
Applying pkt on nf2 at 3:
|
||||
Applying pkt on nf3 at 4:
|
||||
nf0_applied times: [1]
|
||||
nf1_applied times: [2]
|
||||
nf2_applied times: [3]
|
||||
nf3_applied times: [4]
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/pcap2axi --output Packet_in.axi --bus_width 256 src.pcap
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/pcap2axi --output Packet_expect.axi --bus_width 256 dst.pcap
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
sdnet ./src/minip4.sdnet -skipEval -busType axi -busWidth 256 -singlecontrolport -workDir nf_sume_sdnet_ip -altVivadoScripts
|
||||
Xilinx SDNet Compiler version 2018.2, build 2342300
|
||||
|
||||
Compilation successful
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/gen_P4_SWITCH_externs.py src/.sdnet_switch_info.dat nf_sume_sdnet_ip/SimpleSumeSwitch/ /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/templates/ ./testdata/ ./sw/ --base_address 0x44020000
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/gen_P4_SWITCH_API.py src/.sdnet_switch_info.dat nf_sume_sdnet_ip/SimpleSumeSwitch/ sw/ /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/templates/ --base_address 0x44020000
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/gen_P4_SWITCH_CLI.py src/.sdnet_switch_info.dat nf_sume_sdnet_ip/SimpleSumeSwitch/ sw/ /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/templates/ --base_address 0x44020000
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/CLI'
|
||||
cc -c -fPIC /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API/CAM.c -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API
|
||||
cc -std=c99 -Wall -Werror -fPIC -c libcam.c -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume -I/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/API
|
||||
cc -L/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/sw/sume -shared -o libcam.so libcam.o CAM.o -lsumereg
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/sw/CLI'
|
||||
# The following command only applies if running P4_SWITCH Questa Simulation with Ubuntu
|
||||
sed -i 's/vsim/vsim \-ldflags \"\-B\/usr\/lib\/x86\_64\-linux-gnu\"/g' nf_sume_sdnet_ip/SimpleSumeSwitch/questa.bash
|
||||
# modify the P4_SWITCH_tb so that it writes the table configuration writes to a file
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/modify_P4_SWITCH_tb.py nf_sume_sdnet_ip/SimpleSumeSwitch/Testbench/SimpleSumeSwitch_tb.sv
|
||||
# Fix introduced for SDNet 2017.4
|
||||
sed -i 's/xsim\.dir\/xsc\/dpi\.so/dpi\.so/g' nf_sume_sdnet_ip/SimpleSumeSwitch/vivado_sim.bash
|
||||
sed -i 's/xsim\.dir\/xsc\/dpi\.so/dpi\.so/g' nf_sume_sdnet_ip/SimpleSumeSwitch/vivado_sim_waveform.bash
|
||||
# Fix introduced for SDNet 2018.2
|
||||
sed -i 's/glbl_sim/glbl/g' nf_sume_sdnet_ip/SimpleSumeSwitch/vivado_sim_waveform.bash
|
||||
sed -i 's/SimpleSumeSwitch_tb_sim#work.glbl/SimpleSumeSwitch_tb/g' nf_sume_sdnet_ip/SimpleSumeSwitch/vivado_sim_waveform.bash
|
||||
cp src/*.tbl nf_sume_sdnet_ip/SimpleSumeSwitch/
|
||||
cp testdata/*.txt nf_sume_sdnet_ip/SimpleSumeSwitch/
|
||||
cp testdata/*.axi nf_sume_sdnet_ip/SimpleSumeSwitch/
|
||||
+ date
|
||||
Mit Jul 24 09:53:30 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/nf_sume_sdnet_ip/SimpleSumeSwitch
|
||||
+ ./vivado_sim.bash
|
||||
+ find -name '*.v' -o -name '*.vp' -o -name '*.sv'
|
||||
+ xargs -I % /opt/Xilinx/Vivado/2018.2/bin/xvlog -sv %
|
20807
netpfga/log/compile-2019-07-24-095730-subparser-5.6
Normal file
20807
netpfga/log/compile-2019-07-24-095730-subparser-5.6
Normal file
File diff suppressed because it is too large
Load diff
32
netpfga/log/compile-2019-07-24-115200-nat64actions-5.8
Normal file
32
netpfga/log/compile-2019-07-24-115200-nat64actions-5.8
Normal file
File diff suppressed because one or more lines are too long
56
netpfga/log/compile-2019-07-24-115256-nat64actions-5.8
Normal file
56
netpfga/log/compile-2019-07-24-115256-nat64actions-5.8
Normal file
|
@ -0,0 +1,56 @@
|
|||
+ date
|
||||
Mit Jul 24 11:52:56 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
actions_egress.p4(27): error: Could not find declaration for controller_debug
|
||||
controller_debug;
|
||||
^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(28): error: Could not find declaration for controller_reply
|
||||
controller_reply;
|
||||
^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(29): error: Could not find declaration for controller_debug_table_id
|
||||
controller_debug_table_id;
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(32): error: Could not find declaration for ROUTING_TABLE_SIZE
|
||||
size = ROUTING_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(34): error: Could not find declaration for controller_debug_table_id
|
||||
default_action = controller_debug_table_id(TABLE_V6_NETWORKS);
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(44): error: Could not find declaration for controller_debug
|
||||
controller_debug;
|
||||
^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(45): error: Could not find declaration for controller_debug_table_id
|
||||
controller_debug_table_id;
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(48): error: Could not find declaration for ROUTING_TABLE_SIZE
|
||||
size = ROUTING_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(49): error: Could not find declaration for controller_debug_table_id
|
||||
default_action = controller_debug_table_id(TABLE_V4_NETWORKS);
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(169): error: Could not find declaration for NAT64_TABLE_SIZE
|
||||
size = NAT64_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(184): error: Could not find declaration for NAT64_TABLE_SIZE
|
||||
size = NAT64_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
48
netpfga/log/compile-2019-07-24-115644-nat64actions-5.8
Normal file
48
netpfga/log/compile-2019-07-24-115644-nat64actions-5.8
Normal file
|
@ -0,0 +1,48 @@
|
|||
+ date
|
||||
Mit Jul 24 11:56:44 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
In file included from actions_egress.p4:30:0,
|
||||
from actions_nat64_generic.p4:4,
|
||||
from minip4_solution.p4:71:
|
||||
actions_egress.p4:84:2: error: #endif without #if
|
||||
#endif
|
||||
^
|
||||
In file included from actions_nat64_generic.p4:4:0,
|
||||
from minip4_solution.p4:71:
|
||||
actions_egress.p4:84:2: error: #endif without #if
|
||||
#endif
|
||||
^
|
||||
actions_egress.p4(53): error: v6_networks: Duplicates declaration v6_networks
|
||||
table v6_networks {
|
||||
^^^^^^^^^^^
|
||||
actions_egress.p4(53)
|
||||
table v6_networks {
|
||||
^^^^^^^^^^^
|
||||
actions_egress.p4(70): error: v4_networks: Duplicates declaration v4_networks
|
||||
table v4_networks {
|
||||
^^^^^^^^^^^
|
||||
actions_egress.p4(70)
|
||||
table v4_networks {
|
||||
^^^^^^^^^^^
|
||||
error: Preprocessor returned exit code 256; aborting compilation
|
||||
error: 3 errors encountered, aborting compilation
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
35
netpfga/log/compile-2019-07-24-115731-nat64actions-5.8
Normal file
35
netpfga/log/compile-2019-07-24-115731-nat64actions-5.8
Normal file
|
@ -0,0 +1,35 @@
|
|||
+ date
|
||||
Mit Jul 24 11:57:31 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
actions_egress.p4(62): error: Could not find declaration for ROUTING_TABLE_SIZE
|
||||
size = ROUTING_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(78): error: Could not find declaration for ROUTING_TABLE_SIZE
|
||||
size = ROUTING_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(169): error: Could not find declaration for NAT64_TABLE_SIZE
|
||||
size = NAT64_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(184): error: Could not find declaration for NAT64_TABLE_SIZE
|
||||
size = NAT64_TABLE_SIZE;
|
||||
^^^^^^^^^^^^^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
719
netpfga/log/compile-2019-07-24-115811-nat64actions-5.8
Normal file
719
netpfga/log/compile-2019-07-24-115811-nat64actions-5.8
Normal file
|
@ -0,0 +1,719 @@
|
|||
+ date
|
||||
Mit Jul 24 11:58:11 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(6): error: Structure header Ethernet_h does not have a field dst_addr
|
||||
header Ethernet_h {
|
||||
^^^^^^^^^^
|
||||
actions_egress.p4(17)
|
||||
hdr.ethernet.dst_addr = mac_addr;
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field task
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(33)
|
||||
meta.task = task;
|
||||
^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field ingress_port
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(34)
|
||||
meta.ingress_port = sume_metadata.src_port;
|
||||
^^^^^^^^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field table_id
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(40)
|
||||
meta.table_id = table_id;
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_egress.p4(54)
|
||||
hdr.ipv6.dst_addr: lpm;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_egress.p4(71)
|
||||
hdr.ipv4.dst_addr: lpm;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(9)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.src_addr[15:0]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(10)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.src_addr[31:16]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(11)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.dst_addr[15:0]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(12)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.dst_addr[31:16]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(14)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.totalLen -20; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(15)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.protocol; // 8 bit
|
||||
^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(17)
|
||||
meta.v4sum = ~tmp;
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(23)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[15:0]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(24)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[31:16]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(25)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[47:32]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(26)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[63:48]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(27)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[79:64]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(28)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[95:80]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(29)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[111:96]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(30)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.src_addr[127:112]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(32)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[15:0]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(33)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[31:16]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(34)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[47:32]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(35)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[63:48]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(36)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[79:64]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(37)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[95:80]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(38)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[111:96]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(39)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.dst_addr[127:112]; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(41)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.payload_length; // 16 bit
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(42)
|
||||
tmp = tmp + (bit<16>) hdr.ipv6.next_header; // 8 bit
|
||||
^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(44)
|
||||
meta.v6sum = ~tmp;
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field udp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(57)
|
||||
bit<17> tmp = (bit<17>) hdr.udp.checksum + (bit<17>) meta.v6sum;
|
||||
^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(57)
|
||||
bit<17> tmp = (bit<17>) hdr.udp.checksum + (bit<17>) meta.v6sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(62)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v4sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field udp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(68)
|
||||
hdr.udp.checksum = (bit<16>) tmp;
|
||||
^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field udp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(75)
|
||||
bit<17> tmp = (bit<17>) hdr.udp.checksum + (bit<17>) meta.v4sum;
|
||||
^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(75)
|
||||
bit<17> tmp = (bit<17>) hdr.udp.checksum + (bit<17>) meta.v4sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(80)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v6sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field udp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(86)
|
||||
hdr.udp.checksum = (bit<16>) tmp;
|
||||
^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field tcp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(93)
|
||||
bit<17> tmp = (bit<17>) hdr.tcp.checksum + (bit<17>) meta.v6sum;
|
||||
^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(93)
|
||||
bit<17> tmp = (bit<17>) hdr.tcp.checksum + (bit<17>) meta.v6sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(98)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v4sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field tcp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(104)
|
||||
hdr.tcp.checksum = (bit<16>) tmp;
|
||||
^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field tcp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(111)
|
||||
bit<17> tmp = (bit<17>) hdr.tcp.checksum + (bit<17>) meta.v4sum;
|
||||
^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(111)
|
||||
bit<17> tmp = (bit<17>) hdr.tcp.checksum + (bit<17>) meta.v4sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(116)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v6sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field tcp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(122)
|
||||
hdr.tcp.checksum = (bit<16>) tmp;
|
||||
^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(135)
|
||||
shift_tmp = ( ((bit<16>) hdr.ipv4.version) << 12) +
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(136)
|
||||
( ((bit<16>) hdr.ipv4.ihl) << 8) +
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(137)
|
||||
( ((bit<16>) hdr.ipv4.diff_serv) << 2) +
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(138)
|
||||
( (bit<16>) hdr.ipv4.ecn);
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(147)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.totalLen; /* 16 bit */
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(149)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.identification; /* 16 bit */
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(151)
|
||||
shift_tmp = ((bit<16>) (hdr.ipv4.flags) << 13) +
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(152)
|
||||
((bit<16>) hdr.ipv4.fragOffset);
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(158)
|
||||
shift_tmp = ((bit<16>) (hdr.ipv4.ttl) << 8) +
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(159)
|
||||
((bit<16>) hdr.ipv4.protocol);
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(165)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.src_addr[15:0]; /* 16 bit */
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(166)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.src_addr[31:16]; /* 16 bit */
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(167)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.dst_addr[15:0]; /* 16 bit */
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(168)
|
||||
tmp = tmp + (bit<16>) hdr.ipv4.dst_addr[31:16]; /* 16 bit */
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(170)
|
||||
hdr.ipv4.checksum = ~tmp;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field icmp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(12)
|
||||
hdr.icmp.setValid();
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(13)
|
||||
hdr.ipv4.protocol = PROTO_ICMP; // overwrite generic same protocol assumption
|
||||
^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field switch_task
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(16)
|
||||
meta.switch_task = TASK_CHECKSUM_ICMP;
|
||||
^^^^^^^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field chk_icmp
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(19)
|
||||
meta.chk_icmp = 1;
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field icmp6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(21)
|
||||
hdr.icmp6.setInvalid();
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field icmp6_na_ns
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(24)
|
||||
hdr.icmp6_na_ns.setInvalid();
|
||||
^^^^^^^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field icmp6_option_link_layer_addr
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(25)
|
||||
hdr.icmp6_option_link_layer_addr.setInvalid();
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(30)
|
||||
hdr.ipv4.setValid();
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(34)
|
||||
hdr.ipv4.version = (bit<4>)4;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(35)
|
||||
hdr.ipv4.ihl = (bit<4>)5; // internet header length: 4*5 = 20
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(39)
|
||||
hdr.ipv4.diff_serv = (bit<6>)0; // no ToS
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(40)
|
||||
hdr.ipv4.ecn = (bit<2>)0; // unsupported
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(41)
|
||||
hdr.ipv4.totalLen = (bit<16>) hdr.ipv6.payload_length + 20; // ok under above constraints
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(41)
|
||||
hdr.ipv4.totalLen = (bit<16>) hdr.ipv6.payload_length + 20; // ok under above constraints
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(42)
|
||||
hdr.ipv4.identification = (bit<16>) 0; // no support for fragments
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(43)
|
||||
hdr.ipv4.flags = (bit<3>) 0; // DF bit and more fragments
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(44)
|
||||
hdr.ipv4.fragOffset = (bit<13>) 0; // 0 as there are no fragments
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(45)
|
||||
hdr.ipv4.ttl = hdr.ipv6.hop_limit;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(45)
|
||||
hdr.ipv4.ttl = hdr.ipv6.hop_limit;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(46)
|
||||
hdr.ipv4.protocol = hdr.ipv6.next_header;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(46)
|
||||
hdr.ipv4.protocol = hdr.ipv6.next_header;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(47)
|
||||
hdr.ipv4.src_addr = src;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(48)
|
||||
hdr.ipv4.dst_addr = dst;
|
||||
^^^^
|
||||
minip4_solution.p4(6): error: Structure header Ethernet_h does not have a field ethertype
|
||||
header Ethernet_h {
|
||||
^^^^^^^^^^
|
||||
actions_nat64_generic.p4(51)
|
||||
hdr.ethernet.ethertype = TYPE_IPV4;
|
||||
^^^^^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field chk_ipv4
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(56)
|
||||
meta.chk_ipv4 = 1; /* need to calculate the hdrchecksum */
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(59)
|
||||
hdr.ipv6.setInvalid();
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(64)
|
||||
ipv6_addr_t src_offset = hdr.ipv6.src_addr - v6_src;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(67)
|
||||
ipv4_addr_t dst = (ipv4_addr_t) (hdr.ipv6.dst_addr - nat64_prefix);
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field icmp6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(122)
|
||||
hdr.icmp6.setValid();
|
||||
^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(123)
|
||||
hdr.ipv6.next_header = PROTO_ICMP6;
|
||||
^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field chk_icmp6
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(125)
|
||||
meta.chk_icmp6 = 1;
|
||||
^^^^^^^^^
|
||||
minip4_solution.p4(18): error: Structure struct user_metadata_t does not have a field cast_length
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(126)
|
||||
meta.cast_length = (bit<32>) hdr.ipv6.payload_length;
|
||||
^^^^^^^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(126)
|
||||
meta.cast_length = (bit<32>) hdr.ipv6.payload_length;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field icmp
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(128)
|
||||
hdr.icmp.setInvalid();
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(133)
|
||||
hdr.ipv6.setValid();
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(134)
|
||||
hdr.ipv4.setInvalid();
|
||||
^^^^
|
||||
minip4_solution.p4(6): error: Structure header Ethernet_h does not have a field ethertype
|
||||
header Ethernet_h {
|
||||
^^^^^^^^^^
|
||||
actions_nat64_generic.p4(136)
|
||||
hdr.ethernet.ethertype = TYPE_IPV6;
|
||||
^^^^^^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(138)
|
||||
hdr.ipv6.dst_addr = dst;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(139)
|
||||
hdr.ipv6.src_addr = src;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(140)
|
||||
hdr.ipv6.version = (bit<4>) 6;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(141)
|
||||
hdr.ipv6.traffic_class = (bit<8>) hdr.ipv4.diff_serv;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(141)
|
||||
hdr.ipv6.traffic_class = (bit<8>) hdr.ipv4.diff_serv;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(142)
|
||||
hdr.ipv6.flow_label = (bit<20>) 0;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(143)
|
||||
hdr.ipv6.payload_length = (bit<16>) hdr.ipv4.totalLen - 20;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(143)
|
||||
hdr.ipv6.payload_length = (bit<16>) hdr.ipv4.totalLen - 20;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(144)
|
||||
hdr.ipv6.next_header = hdr.ipv4.protocol;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(144)
|
||||
hdr.ipv6.next_header = hdr.ipv4.protocol;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(145)
|
||||
hdr.ipv6.hop_limit = hdr.ipv4.ttl;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(145)
|
||||
hdr.ipv6.hop_limit = hdr.ipv4.ttl;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(151)
|
||||
ipv6_addr_t src = nat64_prefix + (ipv6_addr_t) hdr.ipv4.src_addr;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(153)
|
||||
ipv4_addr_t dst_offset = hdr.ipv4.dst_addr - v4_dst;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv6
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(161)
|
||||
hdr.ipv6.dst_addr: lpm;
|
||||
^^^^
|
||||
minip4_solution.p4(12): error: Structure struct Parsed_packet does not have a field ipv4
|
||||
struct Parsed_packet {
|
||||
^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(176)
|
||||
hdr.ipv4.dst_addr: lpm;
|
||||
^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
33
netpfga/log/compile-2019-07-24-120207-nat64actions-5.8
Normal file
33
netpfga/log/compile-2019-07-24-120207-nat64actions-5.8
Normal file
|
@ -0,0 +1,33 @@
|
|||
+ date
|
||||
Mit Jul 24 12:02:07 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(12): error: Duplicate declaration of headers; previous at
|
||||
typedef struct headers
|
||||
^^^^^^^
|
||||
headers.p4(201)
|
||||
struct headers {
|
||||
^^^^^^^
|
||||
minip4_solution.p4(12):syntax error, unexpected IDENTIFIER, expecting {
|
||||
typedef struct headers Parsed_packet
|
||||
^^^^^^^^^^^^^
|
||||
error: 2 errors encountered, aborting compilation
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
27
netpfga/log/compile-2019-07-24-120311-nat64actions-5.8
Normal file
27
netpfga/log/compile-2019-07-24-120311-nat64actions-5.8
Normal file
|
@ -0,0 +1,27 @@
|
|||
+ date
|
||||
Mit Jul 24 12:03:11 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(36):syntax error, unexpected STRUCT
|
||||
out struct
|
||||
^^^^^^
|
||||
error: 1 errors encountered, aborting compilation
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
27
netpfga/log/compile-2019-07-24-120530-nat64actions-5.8
Normal file
27
netpfga/log/compile-2019-07-24-120530-nat64actions-5.8
Normal file
|
@ -0,0 +1,27 @@
|
|||
+ date
|
||||
Mit Jul 24 12:05:30 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(78):syntax error, unexpected IDENTIFIER "temp"
|
||||
EthAddr_t temp
|
||||
^^^^
|
||||
error: 1 errors encountered, aborting compilation
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
131
netpfga/log/compile-2019-07-24-120713-nat64actions-5.8
Normal file
131
netpfga/log/compile-2019-07-24-120713-nat64actions-5.8
Normal file
|
@ -0,0 +1,131 @@
|
|||
+ date
|
||||
Mit Jul 24 12:07:13 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field task
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(33)
|
||||
meta.task = task;
|
||||
^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field ingress_port
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(34)
|
||||
meta.ingress_port = sume_metadata.src_port;
|
||||
^^^^^^^^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field table_id
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_egress.p4(40)
|
||||
meta.table_id = table_id;
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(17)
|
||||
meta.v4sum = ~tmp;
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(44)
|
||||
meta.v6sum = ~tmp;
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(57)
|
||||
bit<17> tmp = (bit<17>) hdr.udp.checksum + (bit<17>) meta.v6sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(62)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v4sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(75)
|
||||
bit<17> tmp = (bit<17>) hdr.udp.checksum + (bit<17>) meta.v4sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(80)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v6sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(93)
|
||||
bit<17> tmp = (bit<17>) hdr.tcp.checksum + (bit<17>) meta.v6sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(98)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v4sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v4sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(111)
|
||||
bit<17> tmp = (bit<17>) hdr.tcp.checksum + (bit<17>) meta.v4sum;
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field v6sum
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_delta_checksum.p4(116)
|
||||
tmp = tmp + (bit<17>) (0xffff - meta.v6sum);
|
||||
^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field switch_task
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(16)
|
||||
meta.switch_task = TASK_CHECKSUM_ICMP;
|
||||
^^^^^^^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field chk_icmp
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(19)
|
||||
meta.chk_icmp = 1;
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field chk_ipv4
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(56)
|
||||
meta.chk_ipv4 = 1; /* need to calculate the hdrchecksum */
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field chk_icmp6
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(125)
|
||||
meta.chk_icmp6 = 1;
|
||||
^^^^^^^^^
|
||||
minip4_solution.p4(22): error: Structure struct user_metadata_t does not have a field cast_length
|
||||
struct user_metadata_t {
|
||||
^^^^^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(126)
|
||||
meta.cast_length = (bit<32>) hdr.ipv6.payload_length;
|
||||
^^^^^^^^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
29
netpfga/log/compile-2019-07-24-120928-nat64actions-5.8
Normal file
29
netpfga/log/compile-2019-07-24-120928-nat64actions-5.8
Normal file
|
@ -0,0 +1,29 @@
|
|||
+ date
|
||||
Mit Jul 24 12:09:28 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
headers.p4(216): error: Structure struct metadata does not have a field unused
|
||||
struct metadata {
|
||||
^^^^^^^^
|
||||
minip4_solution.p4(44)
|
||||
meta.unused = 0;
|
||||
^^^^^^
|
||||
Makefile:34: recipe for target 'all' failed
|
||||
make[1]: *** [all] Error 1
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
Makefile:31: recipe for target 'frontend' failed
|
||||
make: *** [frontend] Error 2
|
55
netpfga/log/compile-2019-07-24-120946-nat64actions-5.8
Normal file
55
netpfga/log/compile-2019-07-24-120946-nat64actions-5.8
Normal file
|
@ -0,0 +1,55 @@
|
|||
+ date
|
||||
Mit Jul 24 12:09:46 CEST 2019
|
||||
+ cd /home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4
|
||||
+ make
|
||||
make -C src/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
rm -f *.sdnet *.tbl .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/ clean
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -f *.pcap *.txt *.pyc *.axi config_writes.* *_reg_defines.py
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
rm -rf nf_sume_sdnet_ip/
|
||||
rm -f
|
||||
rm -f sw/config_tables.c
|
||||
make -C src/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
p4c-sdnet -o minip4.sdnet --sdnet_info .sdnet_switch_info.dat minip4_solution.p4
|
||||
actions_egress.p4(52): warning: Table v6_networks is not used; removing
|
||||
table v6_networks {
|
||||
^^^^^^^^^^^
|
||||
actions_egress.p4(69): warning: Table v4_networks is not used; removing
|
||||
table v4_networks {
|
||||
^^^^^^^^^^^
|
||||
actions_nat64_generic.p4(159): warning: Table nat64 is not used; removing
|
||||
table nat64 {
|
||||
^^^^^
|
||||
actions_nat64_generic.p4(174): warning: Table nat46 is not used; removing
|
||||
table nat46 {
|
||||
^^^^^
|
||||
minip4_solution.p4(38): [--Wwarn=uninitialized_out_param] warning: out parameter meta may be uninitialized when RealParser terminates
|
||||
out metadata meta,
|
||||
^^^^
|
||||
minip4_solution.p4(35)
|
||||
parser RealParser(
|
||||
^^^^^^^^^^
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/p4_px_tables.py commands.txt .sdnet_switch_info.dat
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/src'
|
||||
make -C testdata/
|
||||
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
./gen_testdata.py
|
||||
Applying pkt on nf0 at 1:
|
||||
Applying pkt on nf1 at 2:
|
||||
Applying pkt on nf2 at 3:
|
||||
Applying pkt on nf3 at 4:
|
||||
nf0_applied times: [1]
|
||||
nf1_applied times: [2]
|
||||
nf2_applied times: [3]
|
||||
nf3_applied times: [4]
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/pcap2axi --output Packet_in.axi --bus_width 256 src.pcap
|
||||
/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/bin/pcap2axi --output Packet_expect.axi --bus_width 256 dst.pcap
|
||||
make[1]: Leaving directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/testdata'
|
||||
sdnet ./src/minip4.sdnet -skipEval -busType axi -busWidth 256 -singlecontrolport -workDir nf_sume_sdnet_ip -altVivadoScripts
|
||||
Xilinx SDNet Compiler version 2018.2, build 2342300
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
This directory and all its content are copied from switch_calc
|
||||
from git@github.com:NetFPGA/P4-NetFPGA-live.git
|
|
@ -1 +0,0 @@
|
|||
LOG
|
0
netpfga/minip4/simple_sume_switch/bitfiles/program_switch.sh
Normal file → Executable file
0
netpfga/minip4/simple_sume_switch/bitfiles/program_switch.sh
Normal file → Executable file
2
p4src/.gitignore
vendored
2
p4src/.gitignore
vendored
|
@ -1,3 +1,5 @@
|
|||
*.json
|
||||
*.p4i
|
||||
.sdnet_switch_info.dat
|
||||
*.tbl
|
||||
*.sdnet
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
#ifndef NICO_CONTROLLER
|
||||
#define NICO_CONTROLLER
|
||||
|
||||
/********************** GENERAL ACTIONS ***********************************/
|
||||
|
||||
#ifndef _SUME_SWITCH_P4_
|
||||
action controller_reply(task_t task) {
|
||||
meta.task = task;
|
||||
meta.ingress_port = standard_metadata.ingress_port;
|
||||
clone3(CloneType.I2E, 100, meta);
|
||||
}
|
||||
|
||||
#else
|
||||
#include "action_egress.p4"
|
||||
|
||||
action controller_reply(task_t task) {
|
||||
meta.task = task;
|
||||
meta.ingress_port = sume_metadata.src_port;
|
||||
set_egress_port(4); /* port1 = 1, port2 = 2, port3=4 */
|
||||
}
|
||||
#endif /* _SUME_SWITCH_P4_ */
|
||||
|
||||
action controller_debug_table_id(table_t table_id) {
|
||||
meta.table_id = table_id;
|
||||
controller_reply(TASK_DEBUG);
|
||||
}
|
||||
|
||||
action controller_debug() {
|
||||
controller_reply(TASK_DEBUG);
|
||||
}
|
||||
|
||||
#endif
|
|
@ -1,8 +1,9 @@
|
|||
#ifndef NICO_EGRESS
|
||||
#define NICO_EGRESS
|
||||
|
||||
#include "settings.p4"
|
||||
|
||||
/********************** ROUTING (egress definiton) TABLES ***********************************/
|
||||
/********************** EGRESS ACTIONS ***********************************/
|
||||
|
||||
action set_egress_port (port_t out_port) {
|
||||
#ifndef _SUME_SWITCH_P4_
|
||||
|
@ -17,6 +18,37 @@ action set_egress_port_and_mac (port_t out_port, mac_addr_t mac_addr) {
|
|||
set_egress_port(out_port);
|
||||
}
|
||||
|
||||
/********************** GENERAL ACTIONS ***********************************/
|
||||
|
||||
#ifndef _SUME_SWITCH_P4_
|
||||
action controller_reply(task_t task) {
|
||||
meta.task = task;
|
||||
meta.ingress_port = standard_metadata.ingress_port;
|
||||
clone3(CloneType.I2E, 100, meta);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
action controller_reply(task_t task) {
|
||||
meta.task = task;
|
||||
meta.ingress_port = sume_metadata.src_port;
|
||||
set_egress_port(4); /* port1 = 1, port2 = 2, port3=4 */
|
||||
}
|
||||
#endif /* _SUME_SWITCH_P4_ */
|
||||
|
||||
action controller_debug_table_id(table_t table_id) {
|
||||
meta.table_id = table_id;
|
||||
controller_reply(TASK_DEBUG);
|
||||
}
|
||||
|
||||
action controller_debug() {
|
||||
controller_reply(TASK_DEBUG);
|
||||
}
|
||||
|
||||
|
||||
/********************** ROUTING (egress definiton) TABLES ***********************************/
|
||||
|
||||
|
||||
table v6_networks {
|
||||
key = {
|
||||
hdr.ipv6.dst_addr: lpm;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef NICO_NAT64_GENERIC
|
||||
#define NICO_NAT64_GENERIC
|
||||
|
||||
#include "actions_controller.p4"
|
||||
#include "actions_egress.p4"
|
||||
#include "actions_delta_checksum.p4"
|
||||
|
||||
/********************** NAT64 / NAT46 ACTIONS GENERIC ***********************************/
|
||||
|
|
|
@ -2,22 +2,27 @@
|
|||
#include <sume_switch.p4>
|
||||
#include "headers.p4"
|
||||
|
||||
typedef bit<48> EthAddr_t;
|
||||
header Ethernet_h {
|
||||
EthAddr_t dstAddr;
|
||||
EthAddr_t srcAddr;
|
||||
bit<16> etherType;
|
||||
}
|
||||
// typedef bit<48> EthAddr_t;
|
||||
// header Ethernet_h {
|
||||
// EthAddr_t dstAddr;
|
||||
// EthAddr_t srcAddr;
|
||||
// bit<16> etherType;
|
||||
// }
|
||||
|
||||
struct Parsed_packet {
|
||||
Ethernet_h ethernet;
|
||||
}
|
||||
//typedef struct headers Parsed_packet;
|
||||
|
||||
#define Parsed_packet headers
|
||||
#define user_metadata_t metadata
|
||||
|
||||
//struct Parsed_packet {
|
||||
// Ethernet_h ethernet;
|
||||
//}
|
||||
|
||||
// user defined metadata: can be used to share information between
|
||||
// TopParser, TopPipe, and TopDeparser
|
||||
struct user_metadata_t {
|
||||
bit<8> unused;
|
||||
}
|
||||
//struct user_metadata_t {
|
||||
// bit<8> unused;
|
||||
//}
|
||||
|
||||
// digest_data, MUST be 256 bits -- what is this used for?
|
||||
struct digest_data_t {
|
||||
|
@ -36,7 +41,7 @@ parser RealParser(
|
|||
|
||||
state start {
|
||||
packet.extract(hdr.ethernet);
|
||||
meta.unused = 0;
|
||||
// meta.unused = 0;
|
||||
digest_data.unused = 0;
|
||||
transition accept;
|
||||
}
|
||||
|
@ -68,10 +73,13 @@ control RealMain(
|
|||
inout digest_data_t digest_data,
|
||||
inout sume_metadata_t sume_metadata) {
|
||||
|
||||
#include "actions_nat64_generic.p4"
|
||||
#include "actions_egress.p4"
|
||||
|
||||
action swap_eth_addresses() {
|
||||
EthAddr_t temp = hdr.ethernet.dstAddr;
|
||||
hdr.ethernet.dstAddr = hdr.ethernet.srcAddr;
|
||||
hdr.ethernet.srcAddr = temp;
|
||||
mac_addr_t temp = hdr.ethernet.dst_addr;
|
||||
hdr.ethernet.dst_addr = hdr.ethernet.src_addr;
|
||||
hdr.ethernet.src_addr = temp;
|
||||
|
||||
/* set egress port */
|
||||
sume_metadata.dst_port = sume_metadata.src_port;
|
||||
|
@ -94,12 +102,12 @@ control RealMain(
|
|||
}
|
||||
|
||||
action do_nothing() {
|
||||
EthAddr_t temp = hdr.ethernet.dstAddr;
|
||||
mac_addr_t temp = hdr.ethernet.dst_addr;
|
||||
}
|
||||
|
||||
table lookup_table {
|
||||
key = {
|
||||
hdr.ethernet.dstAddr: exact;
|
||||
hdr.ethernet.dst_addr: exact;
|
||||
}
|
||||
|
||||
actions = {
|
||||
|
@ -113,6 +121,27 @@ control RealMain(
|
|||
}
|
||||
|
||||
apply {
|
||||
if(hdr.ipv6.isValid()) {
|
||||
if(nat64.apply().hit) { /* generic / static nat64 done */
|
||||
if(hdr.icmp6.isValid()) {
|
||||
nat64_icmp6_generic();
|
||||
if(hdr.icmp6.type == ICMP6_ECHO_REPLY) {
|
||||
hdr.icmp.type = ICMP_ECHO_REPLY;
|
||||
hdr.icmp.code = 0;
|
||||
}
|
||||
if(hdr.icmp6.type == ICMP6_ECHO_REQUEST) {
|
||||
hdr.icmp.type = ICMP_ECHO_REQUEST;
|
||||
hdr.icmp.code = 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
} else if(hdr.arp.isValid()) {
|
||||
if(v4_arp.apply().hit) {
|
||||
v4_arp_egress.apply();
|
||||
}
|
||||
}
|
||||
|
||||
lookup_table.apply();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue