logfiles, cleanup

This commit is contained in:
Nico Schottelius 2019-07-24 12:15:11 +02:00
parent ad8988bb41
commit 1177008608
21 changed files with 22200 additions and 3 deletions

2
.gitignore vendored
View file

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

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

2
p4src/.gitignore vendored
View file

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