Граф коммитов

234 Коммитов

Автор SHA1 Сообщение Дата
Alan Jowett 04dc2904c1
Add negative tests for maps and programs (#1072)
* Add negative tests for maps and programs

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Tweak tests

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Tweak tests

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Add pin coverage

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix code analysis failure

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Add negative tests for maps and programs

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Tweak tests

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Tweak tests

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Add pin coverage

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix code analysis failure

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>

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

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
2022-05-11 12:20:08 -06:00
Dave Thaler 1e1b18e374
Add support for bpf_program__type (#1074)
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-09 10:11:48 -07:00
Alan Jowett c5b44d04e1
Add comments for map declarations (#1064)
* Add comments for map declarations

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Emit names instead of constants

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Fix build break

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
2022-05-06 15:39:57 -06:00
Dave Thaler 033c3cc955
Add more bpf() api tests (#1043)
Fixes #1021

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-02 17:40:00 -06:00
Alan Jowett cd017611cf
Add coverage in bitmap, epoch, and ringbuffer. (#1007)
* Add coverage in bitmap, epoch, and ringbuffer.

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
2022-05-02 12:39:58 -06:00
saxena-anurag dafd950314
Add negative native module tests (#1039)
* add tests, bugfix

* mark tests for Debug only

* fix build failure

* update cmake file

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* fix cmakelists

* fix build break

* fix typo

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-05-01 16:26:41 -07:00
saxena-anurag b99986ab6c
Random crash fix - preemptible workitems (#1042) 2022-05-01 15:23:37 -07:00
saxena-anurag 24f098b869
workaround (#1040) 2022-04-29 18:20:12 -07:00
Dave Thaler 1e495e15d2
Add more libbpf api tests (#1029)
Addresses most of #1021

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-04-28 15:31:33 -06:00
saxena-anurag 5be88a6432
Implement preemptible work items for user mode (#1025)
* fix

* cr comments
2022-04-28 09:03:55 -06:00
saxena-anurag ece1044444
Add Cilium regression tests (#1015)
* add cilium tests

* bugfix, fix include path for new tests

* disable verification for Debug build, disable code coverage

* cr comments
2022-04-26 13:59:00 -06:00
Alessandro Gario 6a54714ec2
cmake: Add base targets (#882)
Signed-off-by: Alessandro Gario <alessandro.gario@gmail.com>
2022-04-26 05:39:37 -07:00
Dave Thaler 086b80149d
Nuget package (#999)
* 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>
2022-04-25 10:26:56 -07:00
Alan Jowett 1989d26873
Remove ebpf_verify_program API (#997)
* Remove ebpf_verify_program API

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Remove old test

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Cleanup runners

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* Cleanup old artifacts

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
2022-04-25 10:46:22 -06:00
Shankar Seal a40b87d61d
Fix issues in NMR module implementations. (#988)
* bug fix.

* fix NMR modules bug.

* PR Feedback.

* PR feedback 2.
2022-04-21 17:41:24 -07:00
Dave Thaler 69adefb137
More bpftool tests (#986)
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-04-21 10:41:44 -07:00
Alan Jowett 29e0d8a1a4
Extend fuzzing to other map types (#982)
* Extend fuzzing to other map types

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Limit fuzzing process memory

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-04-20 19:59:51 -06:00
Dave Thaler 10e3375d68
Update test scripts (#975)
* Update test scripts

* Make KM runner execute bpftool tests
* Make the run_tests.bat script also execute bpftool tests
* Make deploy-ebpf.ps1 -t copy all files needed for testing

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix test

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix merge error

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-04-20 15:59:17 -07:00
Dave Thaler 2f484db0c7
Fix push/pop APIs on queues (#985)
* Fix push/pop APIs on queues

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix SAL warning

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Remove deprecated code

Fixes #980

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-04-20 15:09:36 -07:00
Dave Thaler 5eddf01178
Add initial bpftool tests and another libbpf test (#960)
* Add initial bpftool tests and another libbpf test

And fix various bugs hit by the tests.
This PR only adds a couple of initial tests.
A future PR will add many more tests.

bpftool_tests.exe is meant to be run on a machine with the drivers
installed.  A future PR will add it to the KM test runner in CI/CD.

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix release build

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix test

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix test

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Send stderr to bpf2c_tests log

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Update expected bpf2c output for map.o

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix bpf2c map output

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-04-19 16:24:01 -07:00
saxena-anurag 56d2bd377f
bugfix (#976) 2022-04-19 13:06:54 -07:00
Alan Jowett 17379737cf
Add all program types to get_program_type_info in offline mode (#972)
* Encode all program info types

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Expand hard coded program types and helper functions

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix tail_call_map verification failure

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix tail_call_map verification failure

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-04-18 17:41:01 -06:00
Alan Jowett 05c92adeba
Call ebpf_verifier prior to code gen (#961)
* Call ebpf_verifier prior to code gen

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Resovle failures after merge

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Revert rollback of catch2

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-04-18 12:52:55 -06:00
Dave Thaler b01dea6d55
Fix reply id/length on failure in KM (#950)
* Fix reply id/length on failure in KM

And make UM and KM more closely follow the same logic to catch this sort
of bug in the future.  Before this, UM would succeed and KM would fail,
and there were only UM tests for this case.

Fixes #946

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix device_helper.hpp

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Fix reply length

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Cleanup

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* PR feedback

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-04-18 10:26:29 -06:00
saxena-anurag a956ce1749
Fix ZwUnloadDriver failure issue (#965)
* fix zwunloaddriver failure issue

* build break

* fix failing unit test
2022-04-16 11:39:03 -07:00
saxena-anurag 81a855e88f
Enable unit tests for native driver (#953)
* add native tests, bugfixes

* cr comments, fix test failures, fix bad merge

* fix analysis build break

* test failure
2022-04-15 18:26:41 -07:00
Shankar Seal a1a2c6ad92
Sockops 1 (#952)
* remove dependabot from the fork.

* Revert "remove dependabot from the fork."

This reverts commit c542c6cd44.

* add sock_ops program and attach types.

* PR Feedback.
2022-04-14 15:09:54 -07:00
Dave Thaler 1c2cae9e75
Update bpftool (#945)
Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-04-14 08:31:26 -06:00
Alan Jowett 11c7721f08
Integrate changes from upstream ubpf (#936)
* Integrate changes from upstream ubpf

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Suppress code analysis warning

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-04-11 22:08:29 -06:00
Dave Thaler e22fcdb281
Remove unused ebpf_get_next_map API (#910)
ebpf_get_next_map was obsoleted by standard libbpf apis
(specifically bpf_map_get_next_id and bpf_map_get_fd_by_id)
and isn't called by anything including test code.

This increases our code coverage percentage.

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-04-08 14:32:49 -07:00
Dave Thaler d00377f074
Make map definition more cross-platform compatible (#904)
Fixes #903

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-04-07 18:53:21 -07:00
Shankar Seal a9ab3370d5
`bpf_prog_attach` API and other changes. (#891)
* 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.
2022-04-07 18:18:53 -07:00
Alan Jowett 59716dfa16
Fuzz testing of execution context (#896)
* Fuzz testing of execution context

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix workflow

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix fuzzing workflow

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix formatting

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix tests

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedbac

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix analysis failures

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fixup edit

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix build

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix break found during fuzzing

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-04-07 10:50:52 -07:00
saxena-anurag 54516ec2c7
Add mock layer to run native module test cases in user mode (#889)
* add mock layer to test native module load

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* make unit_test dependent on dll projects

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-04-06 17:43:28 -07:00
Dave Thaler b9d46ae8e4
Use upstream main branch for ebpf-verifier (#894)
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-04-05 11:01:36 -07:00
saxena-anurag 3470d6d7b7
EC and API changes to load generated BPF driver (#811)
* initial_commit

* fix build

* fix build

* fix build break due to merge

* debug build

* api changes, other changes

* bpf2c change to enmit program type, other fixes

* hydrate UM ebpf_object, other fixes

* remove logic to disable programs

* fixes

* fix sal

* build break

* build break

* fix sal errors

* fixes

* fix bpf2c_tests failure

* unload driver when program ref count becomes 0, other minor fixes

* fixes

* tail_call fixes, add test cases, other fixes

* build break

* build break

* code cleanup

* fix bad merge

* code cleanup

* code cleanup

* cleanup

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* cr comments

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* cr comments

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* cr comments

* cr comments

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* address cr comments

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* add tracing in ebpfcore, other fixes

* tracing

* add section for each map in sample

* do not delete the native service

* fix bad merge

* remove code to delete service, other fixes

* cr comments

* bpf2c should read and populate all the maps in ELF file

* add test case for creating map-in-map from native driver

* Apply suggestions from code review

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

* cr comments

* add tracing for api code changes

* rename epbf_native_t to ebpf_native_module_t

* fix bad merge

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-04-01 12:52:04 -07:00
Shankar Seal f896c5244e
Add BPF_PROG_TYPE_CGROUP_SOCK_ADDR support (#858)
* 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>
2022-03-31 19:49:13 -07:00
Alan Jowett b52d9efe22
Enable building with Address Sanitizer (#821)
* Enable building with Address Sanitizer

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Grab clang binaries

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix read overrun in map_crud_operations_lpm_trie_32

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix potential read of uninitialized memory

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Really fix read overrun

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Fix second overrun

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Remove RPC client test for now

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* PR feedback

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

* Apply suggestions from code review

Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Co-authored-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-03-30 12:32:29 -06:00
Alan Jowett fd94c807a5
Centralize compiler options (#823)
* Centralize all compiler options

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-03-29 10:41:09 -06:00
saxena-anurag e56e80e51c
Fix race condition between ebpf_epoch_terminate() and _ebpf_epoch_stale_worker() (#850)
* bugfix

* bugfix
2022-03-28 13:39:29 -07:00
Shankar Seal ecea57b4d8
Change extensions npiid (#841)
* remove dependabot from the fork.

* change extension provider NPI IDs.

* PR feedback.

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-03-28 11:26:19 -07:00
saxena-anurag edd6d974d5
Fix calling ObReferenceObjectByHandle at DISPATCH (#840)
* bugfix, add test cases

* fix build break

* cr comments

* cr comments

* cr comments
2022-03-28 10:25:12 -07:00
dependabot[bot] 7b2c9c08ce
Bump external/ebpf-verifier from `e7e7017` to `5356ffe` (#824)
* Bump external/ebpf-verifier from `e7e7017` to `5356ffe`

Bumps [external/ebpf-verifier](https://github.com/dthaler/ebpf-verifier) from `e7e7017` to `5356ffe`.
- [Release notes](https://github.com/dthaler/ebpf-verifier/releases)
- [Commits](e7e701712d...5356ffe3be)

---
updated-dependencies:
- dependency-name: external/ebpf-verifier
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update to match latest verifier

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-03-21 19:35:43 -06:00
Alan Jowett b4b6e15d73
Move common interlocked API's into their own file (#815)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-03-17 18:27:47 -06:00
Alan Jowett 2709dac138
Flush free_list if it's stale (#814)
Add an additional flag per CPU EBPF_EPOCH_PER_CPU_STALE.
This flag is accessed by ebpf_epoch_exit and by the flush timer.

This flag is set to on by the flush timer if the free_list is not empty.
This flag is set to off by ebpf_epoch_exit (if set).

If the flush timer sees this flag on and the free_list is not empty, then it will schedule an _ebpf_epoch_stale_worker DPC on the CPU (this DPC calls ebpf_epoch_enter/ebpf_epoch_exit).

Resolves: #813

Signed-off-by: Alan Jowett alanjo@microsoft.com
2022-03-17 14:44:22 -06:00
Shankar Seal a8e3a30767
Support attaching XDP program per NIC. (#803)
* Support attaching XDP program per NIC.

* PR Feedback.

* fix bug.

* PR Feedback.
2022-03-14 15:16:11 -07:00
Alan Jowett c6d36834f2
Add mutual auth for RPC client / server. (#804)
* Add mutual auth for RPC client / server.

RPC client and server should authenticate each other, to ensure:

Only admin client makes a call to ebpfsvc.
Client is talking only to ebpfsvc.

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-03-14 15:26:55 -06:00
Alan Jowett 16760b2b3d
Add queue and stack helper functions (#801)
* Add queue and stack helper functions

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-03-11 17:16:02 -07:00
Dave Thaler 727451f3b4
Add support for integer arguments to bpf_printk helper (#797)
* Initial printk numeric args support

Also add a verification failure test case if trying to print a pointer

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Add varargs support to printk

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Validate printk format specifiers

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Verify that printk specifier count and arg count match

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

* Update doxygen docs

Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-03-10 17:16:45 -08:00
Shankar Seal d5cf5e8622
support interface parameter for loading XDP program in netsh ebpf con… (#790)
* support interface parameter for loading XDP program in netsh ebpf context.

* PR Feedback.

* PR Feedback.
2022-03-09 16:15:58 -08:00