Merge branch 'master' of gitlab.ethz.ch:nicosc/master-thesis

This commit is contained in:
Nico Schottelius 2019-07-24 13:16:14 +02:00
commit 5552267824
27 changed files with 22302 additions and 62 deletions

2
.gitignore vendored
View file

@ -1 +1,3 @@
support/ support/
*.pyc
*.log

View file

@ -3328,6 +3328,12 @@ https://en.wikipedia.org/wiki/IPv4_header_checksum
CLOSED: [2019-07-21 Sun 14:01] CLOSED: [2019-07-21 Sun 14:01]
| eth2 <--> nf0 | | eth2 <--> nf0 |
| eth1 <--> nf3 | | 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 Benchmark/comparison
*** TODO Setup / Benchmark Jool *** TODO Setup / Benchmark Jool
*** TODO Setup / Benchmark tayga *** TODO Setup / Benchmark tayga
@ -6099,8 +6105,10 @@ nico@nsg-System:~/master-thesis/netpfga/minip4/simple_sume_switch/test/sim_switc
#+END_CENTER #+END_CENTER
*** DONE 2019-07-23: check: switch_calc compiles *** DONE 2019-07-23: check: switch_calc compiles
CLOSED: [2019-07-23 Tue 08:59] CLOSED: [2019-07-23 Tue 08:59]
*** TODO Reset project to plain send-to-port1 code, no includes *** DONE Reset project to plain send-to-port1 code, no includes
*** TODO 2019-07-23: merge/migrate code into switch calc until it breaks 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] *** TODO 2019-07-23: install xilinx & co. to eth2.nico.ungleich.cloud -> 2nd compiler [MANUAL]
**** DONE Install SDNET via xsetup **** DONE Install SDNET via xsetup
CLOSED: [2019-07-23 Tue 11:03] 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 sudo apt install -y libc6-dev
#+END_CENTER #+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 **** DONE try1: "souce" files: / missing sumereg
CLOSED: [2019-07-23 Tue 12:14] 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. make: *** No targets specified and no makefile found. Stop.
#+END_CENTER #+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 - step9 (sume simulation, the longest step) in the process calls
"config_writes.py" "config_writes.py"
- config_writes.py fails with a syntax error, as it is incomplete - config_writes.py fails with a syntax error, as it is incomplete
@ -6343,7 +6353,7 @@ endtask
#+END_CENTER #+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] CLOSED: [2019-07-24 Wed 09:33]
#+BEGIN_CENTER #+BEGIN_CENTER
@Xilinx_MaxPacketRegion(1024) @Xilinx_MaxPacketRegion(1024)
@ -6365,7 +6375,8 @@ endtask
} }
#+END_CENTER #+END_CENTER
*** state names are fixed *** DONE state names are fixed: needs to be "start"
CLOSED: [2019-07-24 Wed 11:44]
#+BEGIN_CENTER #+BEGIN_CENTER
make[1]: Entering directory '/home/nico/projects/P4-NetFPGA/contrib-projects/sume-sdnet-switch/projects/minip4/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 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 Makefile:31: recipe for target 'frontend' failed
#+END_CENTER #+END_CENTER
*** TODO Further notes P4/master thesis *** TODO Further notes P4/master thesis
- Cannot easily run P4 on notebook - changes to the system very - Cannot easily run P4 on notebook - changes to the system very
invasive invasive
@ -6427,6 +6437,10 @@ release, use 'get_user_parameters' instead
messages that actually constitute ERROR messages, but are not messages that actually constitute ERROR messages, but are not
flagged as such nor do they cause the build process to abort. 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 ** The NetPFGA saga
Problems encountered: Problems encountered:
- The logfile for a compile run is 10k+ lines - The logfile for a compile run is 10k+ lines

File diff suppressed because one or more lines are too long

View 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

View 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

View 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

View 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 %

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View file

@ -1,2 +0,0 @@
This directory and all its content are copied from switch_calc
from git@github.com:NetFPGA/P4-NetFPGA-live.git

View file

@ -1 +0,0 @@
LOG

View file

2
p4src/.gitignore vendored
View file

@ -1,3 +1,5 @@
*.json *.json
*.p4i *.p4i
.sdnet_switch_info.dat .sdnet_switch_info.dat
*.tbl
*.sdnet

View file

@ -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

View file

@ -1,8 +1,9 @@
#ifndef NICO_EGRESS #ifndef NICO_EGRESS
#define NICO_EGRESS #define NICO_EGRESS
#include "settings.p4"
/********************** ROUTING (egress definiton) TABLES ***********************************/ /********************** EGRESS ACTIONS ***********************************/
action set_egress_port (port_t out_port) { action set_egress_port (port_t out_port) {
#ifndef _SUME_SWITCH_P4_ #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); 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 { table v6_networks {
key = { key = {
hdr.ipv6.dst_addr: lpm; hdr.ipv6.dst_addr: lpm;

View file

@ -1,7 +1,7 @@
#ifndef NICO_NAT64_GENERIC #ifndef NICO_NAT64_GENERIC
#define NICO_NAT64_GENERIC #define NICO_NAT64_GENERIC
#include "actions_controller.p4" #include "actions_egress.p4"
#include "actions_delta_checksum.p4" #include "actions_delta_checksum.p4"
/********************** NAT64 / NAT46 ACTIONS GENERIC ***********************************/ /********************** NAT64 / NAT46 ACTIONS GENERIC ***********************************/

View file

@ -2,22 +2,27 @@
#include <sume_switch.p4> #include <sume_switch.p4>
#include "headers.p4" #include "headers.p4"
typedef bit<48> EthAddr_t; // typedef bit<48> EthAddr_t;
header Ethernet_h { // header Ethernet_h {
EthAddr_t dstAddr; // EthAddr_t dstAddr;
EthAddr_t srcAddr; // EthAddr_t srcAddr;
bit<16> etherType; // bit<16> etherType;
} // }
struct Parsed_packet { //typedef struct headers Parsed_packet;
Ethernet_h ethernet;
} #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 // user defined metadata: can be used to share information between
// TopParser, TopPipe, and TopDeparser // TopParser, TopPipe, and TopDeparser
struct user_metadata_t { //struct user_metadata_t {
bit<8> unused; // bit<8> unused;
} //}
// digest_data, MUST be 256 bits -- what is this used for? // digest_data, MUST be 256 bits -- what is this used for?
struct digest_data_t { struct digest_data_t {
@ -36,7 +41,7 @@ parser RealParser(
state start { state start {
packet.extract(hdr.ethernet); packet.extract(hdr.ethernet);
meta.unused = 0; // meta.unused = 0;
digest_data.unused = 0; digest_data.unused = 0;
transition accept; transition accept;
} }
@ -68,10 +73,13 @@ control RealMain(
inout digest_data_t digest_data, inout digest_data_t digest_data,
inout sume_metadata_t sume_metadata) { inout sume_metadata_t sume_metadata) {
#include "actions_nat64_generic.p4"
#include "actions_egress.p4"
action swap_eth_addresses() { action swap_eth_addresses() {
EthAddr_t temp = hdr.ethernet.dstAddr; mac_addr_t temp = hdr.ethernet.dst_addr;
hdr.ethernet.dstAddr = hdr.ethernet.srcAddr; hdr.ethernet.dst_addr = hdr.ethernet.src_addr;
hdr.ethernet.srcAddr = temp; hdr.ethernet.src_addr = temp;
/* set egress port */ /* set egress port */
sume_metadata.dst_port = sume_metadata.src_port; sume_metadata.dst_port = sume_metadata.src_port;
@ -94,12 +102,12 @@ control RealMain(
} }
action do_nothing() { action do_nothing() {
EthAddr_t temp = hdr.ethernet.dstAddr; mac_addr_t temp = hdr.ethernet.dst_addr;
} }
table lookup_table { table lookup_table {
key = { key = {
hdr.ethernet.dstAddr: exact; hdr.ethernet.dst_addr: exact;
} }
actions = { actions = {
@ -113,6 +121,27 @@ control RealMain(
} }
apply { 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(); lookup_table.apply();
} }
} }