* Use netebpfext_user in fuzz testing
Address the helper function part of #1325
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix winsock inclusion issues
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix nmr implementation
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Update WDK path for more projects
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Disable ubpf warnings
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Cleanup
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix unit tests
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Make build install execution context fuzzer corpus
Filed #1505 to improve this
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix libfuzz harness
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix MBL use by core helper fuzzer
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix cmake build
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix user-mode NMR locking issue
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Extra debug statements
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* More fixes
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Cleanup
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix bad merge
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
* Refactor netebpfext (#1351)
* refactor netebpfext to allow unit and fuzzing
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Normalize parameter casing
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Normalize types
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Fix release build
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Fix CMake build
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Fix NetEbpfExt_headers CMake target
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Rename unit to user
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Switch netebpfext_unit -> netebpfext_user
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Flesh out kernel thunk
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* More canonical naming and W4 clean
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Fix prefast issue
* Fix CMake
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Fix code analysis
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
* Clean up fw_thunk.h (#1369)
* Clean up fw_thunk.h
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix SAL annotations
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Netebpf ext unit test (#1365)
* Add netebfpext start/stop unit tests
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Update NMR thunk and expand netebpf_ext helper
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Fix code-analysis issues
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
* Remove duplicate NMR includes (#1370)
* Remove duplicate NMR includes
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback and more header cleanup
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
* Refactor NMR user mode to be thread safe (#1371)
* Refactor NMR user mode to be thread safe
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
* Add a unit test that tests classify_packet in user mode (#1379)
* Add packet test scaffolding
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Add test
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* More of test
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Add dummy packet to test
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Add dummy program
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Cleanup
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix mock NMR bug
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Temporarily add printfs
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Incorporate fix for 1378
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix test bug
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Add a packet-drop case to the test
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Try fixing include path
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix double free of workitem
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* Revert unrelated changes in ebpfcore and ebpfapi
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
* PR feedback
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
* Add interface luid to bpf_sock_addr and bpf_sock_ops
And also add compartment id to bpf_sock_ops for consistency with
bpf_sock_addr, so that it is available to eBPF programs.
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Expose interface luid and compartment id to sock_ops and sock_addr hooks
* compartment_id was exposed to sock_addr but not sock_ops
* interface_luid was not exposed to either
Exposing the interface_luid should be a performant way to compensate for
lack of scope_id in the hooks, since the interface luid is available
in the WFP callout, and is more specific than a scope id (so a scope id
can always be looked up from the interface luid in the future if
needed).
Fixes#1129
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Update expected bpf2c output
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Add bpf_get_current_pid_tgid() helper
Fixes#1106
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix test
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Add KM test
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* WIP: Developer nuget package
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Add bpf2c utility
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Build nupkg from within VisualStudio
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Don't use relative path to externals
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Update props file in nuget package
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix include and library paths
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix debug build
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
* remove dependabot from the fork.
* Revert "remove dependabot from the fork."
This reverts commit c542c6cd44.
* add sock_ops program and attach types.
* PR Feedback.
* remove dependabot from the fork.
* Revert "remove dependabot from the fork."
This reverts commit c542c6cd44.
* Program info and hook NPI providers for sock_addr.
* Program info and hook NPI providers for sock_addr.
* PR Feedback.
* PR Feedback 2.
* wfp callout for sock_addr hook.
* PR Feedback.
* fix build break.
* remove dependabot from the fork.
* Revert "remove dependabot from the fork."
This reverts commit c542c6cd44.
* Program info and hook NPI providers for sock_addr.
* fix analysis break.
* PR Feedback.
* PR Feedback 2.
* Add BPF_PROG_TYPE_CGROUP_SOCK_ADDR program type and CGROUP_INET4/6_CONNECT/RECV_ACCEPT attach types.
* PR Feedback #1.
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
* fix crash.
* use NMR APIs.
* program info provider; bind program info
rename attach provider as hook provider
function renaming
* refactor hook providers.
* async client detach.
* cicd automation and documentation.
* PR Feedback.
* switch to server 2019.
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
* Allow attaching an XDP program to a specific ifindex
* Update tests since droppacket.o changed
* Add ifindex use back to droppacket.c for testing purposes
* Verify xdp program to unlink is actually an XDP program
* Add comment re moving xdp fd replace logic to execution context
* Add libbpf test and add support for bpf_xdp_query_id
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* add ingress interface index to xdp context.
* Address PR feedback.
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
* Fix sample project dependencies
Bug was that if you cleaned everything and then tried to build just the
sample_ebpf_ext project, building would fail. A race condition also
existed when trying to build everything in that if
execution_context_kernel wasn't't done building by the
time sample_ebpf_ext was ready to link, the build would also fail.
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Clean up other linker inputs
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
* Fix non-determinism in build due to multiple projects generating header
* Only regenerate git_commit_id.h on change
Signed-off-by: Alan Jowett <alanjo@microsoft.com>