Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add crypto extern to behavioral-model #834

Open
wants to merge 23 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0f3bfe2
Add crypto extern
hesingh Dec 12, 2019
e9e1785
Fix cpplint issues in crypto.cpp; header file c/c++ issues remain
hesingh Dec 13, 2019
2847992
Fix headers and namespace cpplint issues
hesingh Dec 13, 2019
02c01d5
Fix compile issues
hesingh Dec 13, 2019
4e9d5be
Fix namspace cpplint issue
hesingh Dec 13, 2019
fc17434
Complete adding crypto to simple_switch, linking and building; also a…
hesingh Dec 16, 2019
7d5a5a9
Complete adding crypto to simple_switch, linking and building; also a…
hesingh Dec 16, 2019
30f2879
Restore simple_switch and Makefile.am, add to README.md
hesingh Dec 16, 2019
353b462
Rename diffs file to avoid its lint
hesingh Dec 16, 2019
84a43b5
Add new diffs file
hesingh Dec 16, 2019
fb7b8f3
Fix minor issues
hesingh Dec 16, 2019
e7d89e7
Fix acsec's old P4 mark_to_drop
hesingh Dec 16, 2019
11f02c9
Comment out recirculate after decrypt
hesingh Dec 16, 2019
19656e2
Update README.md now that steps exist how to test crypto extern
hesingh Dec 18, 2019
e1fe58c
delete diffs file and updated README
hesingh Dec 18, 2019
a3c273a
Add more notes to README
hesingh Dec 18, 2019
d32443a
Delete basic.p4 since it's pointed to in the repo
hesingh Dec 19, 2019
9ff1f4d
Sync extern from macsec parent
hesingh Dec 24, 2019
c357ef5
Took care of review comments
hesingh Dec 28, 2019
1dc5f2c
Fix style issue with prior commit
hesingh Dec 28, 2019
f031ac7
Add Makefile to extern code
hesingh Dec 29, 2019
3ca057f
Change code after Antonin's review
hesingh Jan 7, 2020
f187058
Change code after Antonin's review
hesingh Jan 7, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions targets/simple_switch/externs/sym_crypto/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# ADD CRYPTO to SIMPLE_SWITCH
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

strange typography


For reference, the extern is implemented in crypto.cpp in this directory.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are no instructions here on how to compile the attached P4 program using p4c.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can add text. In the macsec repo this Makefile is used to compile with p4c.

https://github.com/uni-tue-kn/p4-macsec/blob/master/p4/p4/Makefile

This cpp code is to be incorporated in
behavioral-model/targets/simple_switch/simple_switch.cpp
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should provide a mechanism for using this code that does not require copying the code to simple_switch.cpp.
My preferred option would be to have a standalone Makefile that can build a .so. The .so can then be imported into simple_switch using --load-modules. An alternative, which is not as good IMO (but I have no strong objection) is to just make this part of the bmv2 build system.
I gave some extra information there: #697

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thinking of this more, adding a separate Makefile and not making it part of the simple_switch build is definitely the right way to go. There is no reason to unconditionally compile and link this example extern to bmv2, and I think the separate Makefile is more representative of the "correct" workflow for someone who wants to add an extern type without changing any of the bmv2 code.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a Makefile to behavioral-model/targets/simple_switch/sample_extern/macsec with a recent commit.


The code is crypto.cpp is also available in the repo URL included below
so that testing can be done using MACsec (MAC security) code. A
README.md is available at the repo below with steps for how to test
the code.

https://github.com/uni-tue-kn/p4-macsec

The extern is defined in the following P4 file. Search for ExternCrypt
for the extern definition. Additionally the extern is used in P4 code
as crypt.validate() which is decryption and crypt.protect() which is
encryption.

https://github.com/uni-tue-kn/p4-macsec/p4/p4/basic.p4

basic.p4 is used to test the cryto extern code with simple_switch.

Loading