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

182 Коммитов

Автор SHA1 Сообщение Дата
Alan Jowett 27fee383cd
Prevent loading of incompatible native modules (#1990)
* Prevent loading of incompatible native modules

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

* Apply suggestions from code review

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

* Fix test failures

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

---------

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>
2023-02-01 20:43:58 +00:00
Anurag Saxena 319ba6dc6b
Implement sock_addr specific global helper functions (#1847)
* fix

* add native test

* cleanup

* CR comments

* update expected files

* fix

* cr comments

* add 2 helper

* fix proj

* add admin helper

* fix expected files

* test fix

* fix log

* fix

* fix

* fix

* fix test

* implement global helper, add tests

* fix cmake build

* fix analysis failure, update expected files

* update expected fileS

* reuse bpf_get_current_pid_tgid

* fix tests

* fix helper

* fix tests

* update expected files

* backup

* formatting

* fix bad merge

* cleanup

* cleanup

* update issue number

* add header file

* add standard user test

* update helper definition

* fix

* code cleanup

* code cleanup

* fix kernel test

* add check for API calls

* fix test, PR comments

* pr comments

* add debug logs

* add debug logs, fix netebpfext test

* fix netebpfext test

* comment out log

* add traces to debug

* CR comments

* fix netebpfext_unit sock_addr test

* cr comments
2023-01-30 23:44:30 +00:00
Alan Jowett 1e5fb18ff7
Mark all ebpf_* api's as noexcept (#1967)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2023-01-26 23:46:27 +00:00
Alan Jowett 5bd706092b
Add option to generate .spd files for sample driven PGO (#1931)
* Add option to generate .spd files for sample driven PGO

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

* Fix test failure

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

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2023-01-20 23:10:24 +00:00
red 198adeb429
Add helper functions to bpf_endian.h (#1899)
* Add helper functions to bpf_endian.h

* Add SPDX identifier for the source of bpf_endian.h

Co-authored-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2023-01-19 07:14:23 -08:00
Dave Thaler fcce18ecb9
Add unit tests for BIND, CGROUP_SOCK_ADDR, and SOCK_OPS (#1895)
* Move hook NMR registration into netebpext helper class

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

* Unit test bind hook

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

* Add cgroup sock addr unit test

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

* Add unit tests for rest of cgroup sock addr attach types

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

* Partial sock_ops unit test support

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

* Cleanup

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

* Add sock_ops unit test

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

* Fix code analysis warning

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

* Fix code analysis warning

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

* Fix crash

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

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2023-01-19 00:03:48 +00:00
Delaram Amiri 215323919a
Implementation of syscalls in bpf_syscall.cpp (#1866)
* update fuzzing doc

* Update docs/Fuzzing.md

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

* update based on PR comment

* implementation of bpf syscall

* modify attach/detach APIs

* modify unit tests

* modify unit test

* Update tests/unit/libbpf_test.cpp

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

* Update tests/unit/libbpf_test.cpp

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

* Update tests/unit/libbpf_test.cpp

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

* Update tests/unit/libbpf_test.cpp

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

* Update tests/unit/libbpf_test.cpp

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

* Update tests/unit/libbpf_test.cpp

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

* Update tests/unit/libbpf_test.cpp

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

* change attach struct to unnamed

* Update tests/unit/libbpf_test.cpp

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

* added failure test for look up and deletion

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2023-01-17 17:56:03 +00:00
Dave Thaler d4ca06954c
Change global variable to a static member per DevelopmentGuide (#1858)
* Change global variable to a static member per development guide

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

* Fix comment in include file

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

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2023-01-11 19:02:31 +00:00
Alan Jowett 9f46c2ad90
Implement context handling for netebpfext (#1840)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2023-01-10 19:22:20 +00:00
Alan Jowett a902b82788
PR feedback from https://github.com/microsoft/ebpf-for-windows/pull/1825 (#1838)
* PR feedback from https://github.com/microsoft/ebpf-for-windows/pull/1825

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

* Update libs/execution_context/ebpf_program.c

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

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2023-01-08 19:53:53 -07:00
Alan Jowett de5ab7aaec
Add bpf_prog_test_run_opts support (#1825)
* Add bpf_prog_test_run_opts support

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

* Update BPF syscall interface

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

* Fix code analysis failure

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

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2023-01-09 00:24:24 +00:00
Alan Jowett 03b16e40cc
Remove dead code in encode_program_information module (#1821)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2023-01-05 08:31:41 -08:00
Anurag Saxena 8cb62b3fd7
Support for multiple implementations of global helper functions (#1761)
* fix

* add native test

* cleanup

* CR comments

* update expected files

* fix

* cr comments
2022-12-31 10:56:28 -07:00
Alan Jowett f4b0fa1a50
Add version check to native images (#1720)
* Add version check to native images

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

* Fix release build

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

* PR feedback

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

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-12-19 20:51:07 -07:00
Alan Jowett 0b293ad804
Fix code analysis annotations for In and In_opt parameters by adding const where appropriate or changing to Inout where appropriate. (#1749)
* Fix code analysis annotations for _In_ and _In_opt_ parameters,
add const where appropriate or change to _Inout_ where appropriate.

The following regex expressions were used to find the problems:
Find _In_ or _In_opt_ that are not const and are not followed by _Post_invalid_ or _Frees_ptr_ or _Post_ptr_invalid_:
```_In_[ ]+(?!.*(const|_Post_invalid_|_Frees_ptr_|_Post_ptr_invalid_))```
```_In_opt_[ ]+(?!.*(const|_Post_invalid_|_Frees_ptr_|_Post_ptr_invalid_))```

Some of the _In_ and _In_opt_ parameters are not const due to required compatibility with the Windows API.
Pointers to functions are const by definition, so the const qualifier is not required.

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

* PR feedback

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

* Fix code analysis failure

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

* PR feedback

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

* PR feedback

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

* PR feedback

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

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-12-15 15:58:33 -08:00
Dave Thaler 76f8191a80
Cleanup (#1737)
Signed-off-by: Dave Thaler <dthaler@microsoft.com>

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-12-12 17:56:51 +00:00
Alan Jowett 8edff23f55
Update ebpf-verifier to latest (#1712)
* Update ebpf-verifier to latest

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

* Update expected output

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

* Fix code analysis warning

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

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2022-12-08 00:05:08 +00:00
Alan Jowett 0a9be2779e
Annotate remaining code with _Must_inspect_result_ (#1570)
* Annotate remaining code with _Must_inspect_result_

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

* Fix build

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

* PR feedback

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

* Fix merge failure

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

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>
2022-11-18 13:36:24 -08:00
Alan Jowett 58cdfdcf8a
Spelling (#1601)
* Fix spelling in docs

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

* Fix spelling in ebpfsvc

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

* Fix include

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

* Fix libs part 1

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

* Fix libs part 2

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

* Fix tests

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

* Fix tools

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

* Fix build

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

* PR feedback

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

* Fix generated files

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

* PR feedback

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

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>
2022-11-16 14:06:14 -07:00
Alan Jowett 4d9084017c
Annotate EBPF API's with _Must_inspect_result_ (#1569)
* Annotate EBPF API's with _Must_inspect_result_

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

* Fix build break

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

* Fix test failure

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

* Handles may be closed by fuzzing

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

* PR feedback

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

* Fix code-analysis failure

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

Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-11-15 10:31:40 -08:00
Dave Thaler bdd4df8c58
Fuzz test netebpfext helper(s) (#1467)
* 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>
2022-11-08 09:31:04 +00:00
Alan Jowett 65c4418394
Add ebpf_assert_success and always evaluate ebpf_assert values (#1571)
* Add ebpf_assert_success and always evaluate ebpf_assert values

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>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-11-07 10:40:39 -07:00
Alan Jowett b7deedc7ce
Add bpf2c_plugin for use with bpf_conformance test suite (#1475)
* Add bpf2c_plugin

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

* Fix CMake so that it builds correctly

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

* Remove bpf_conformance as a submodule

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

* Download bpf_conformance artifact

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

* Extract bpf_conformance\

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

* Fix path

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

* Execute bpf_conformance in CI/CD

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

* Pickup latest artifacts"

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>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-10-25 13:26:49 -06:00
Dave Thaler 8c31dbd5dd
Clean up unused code in header files (#1445)
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>
2022-10-06 13:48:29 -07:00
Dave Thaler 568e8f0bdf
Add ability to enumerate maps associated with a program (#1395)
* Add map ids test

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

* Enumerate maps associated with a program

Fixes #1339

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

* Initialize info before calling

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

* Update bpftool

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

* Make "netsh show prog l=v" show map ids for program

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

* Return EFAULT if map_ids is not a valid pointer

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

* Fix warning

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

* More test fixes

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

* Fix test

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

* Fix socket test

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

* Add more checks in the socket test

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

* Fix socket test

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

* Fix netsh

Also fix GettingStarted.md and a missing space in the logs
that were found while testing this fix.

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

* Set map_ids on output

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

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-09-30 12:12:12 -07:00
Alan Jowett b371d24603
Fix the bpf_map_lookup_elem / bpf_map_update_elem API for per-cpu maps. (#1423)
* The bpf_map_lookup_elem API should correctly handle PERCPU maps.

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

* PR feedback

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

* Use correct APIs to compute current CPU index and maximum CPU index

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>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-09-30 10:24:50 -07:00
Alan Jowett f93f0d58ee
Include hash of program information in metadata (#1376)
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>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-09-20 15:58:38 -07:00
Shankar Seal 782244b4f0
remove deprecated prog_load API. (#1352)
* remove deprecated prog_load API.

* PR Feedback.

* PR Feedback.
2022-08-25 09:18:05 -06:00
Dave Thaler 6888b14533
bpf_object__open_file() should allow null opts (#1363)
Fixes #1354

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

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-08-23 21:11:27 -07:00
Dave Thaler 61eddd268d
Update bpftool (#1337)
* Update bpftool

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

* Fix cmake build

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

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-08-23 13:46:29 -07:00
Shankar Seal e4ccdc8b1c
Implement `bpf_prog_detach` and `bpf_prog_detach2` APIs. (#1311)
* Implement bpf_prog_detach and bpf_prog_detach2 APIs.

* fix SAL break.

* PR feedback.

* PR feedback and test changes.

* PR feedback.
2022-08-07 17:21:23 -07:00
Dave Thaler c41b4d9541
Add noexcept keyword to various internal APIs (#1305)
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-08-04 11:11:12 -06:00
Dave Thaler 7e0738ee07
Add support for new libbpf APIs (#1288)
* Update to latest libbpf .h files

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

* Add libbpf_bpf_{prog,attach}_type_str APIs

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

* Add libbpf_attach_type_by_name

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

* Add libbpf_bpf_{link,map}_type_str

And add tests for prog type and attach type names

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

* Add tests

And change type names to match Linux

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

* Fix cmake build

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

* Update tests

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

* Update docs

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

* Add bpf_program__insn_cnt()

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

* Add MSVC deprecated attribute to most deprecated APIs

Still haven't done bpf_object__next() or bpf_prog_load_deprecated()

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

* Mark bpf_object__next was deprecated

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

* Fix some test failures

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

* Suppress instead of disable deprecated warnings

To simplify diffs

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

* Merge with latest main

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

* PR feedback

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-07-29 14:57:30 -04:00
Dave Thaler 067d5d7e7f
Clean up Verifier.cpp (#1296)
* Try some cleanup of Verifier.cpp

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

* Analysis fixes

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

* Fix error messages

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

* Fix test

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

Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-07-18 12:39:50 -07:00
Shankar Seal 23b1b1030c
Fix store read logic. (#1267)
* Fix store read logic.

* PR feedback.

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-07-05 16:54:22 -07:00
Dave Thaler 12cee68d10
Upgrade verifier to latest commit (#1262)
* Upgrade verifier to latest commit

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

* Disable warning hit in elfio.hpp

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

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-07-05 10:02:12 -07:00
saxena-anurag 1160f7914e
Registry changes for program and section data. (#1192)
* fix

* backup

* fix backup

* msbuild compiling

* fix release build

* fixes

* cmake build fix

* fix cmake build

* fix analyse build

* fix

Signed-off-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>

* fix expected output

* add pre step for tests

* add pre step for tests

* add -s option, revert this later

* Revert "add -s option, revert this later"

This reverts commit 1f42d100e4.

* code cleanup

Signed-off-by: Anurag Saxena <anusa@microsoft.com>

* rename driver_registry_helper.h

* delete bpf_structs.h

* fix

* hardcode HKLM

* code cleanup

* fix

* backup

* fix backup

* msbuild compiling

* fix release build

* fixes

* cmake build fix

* fix cmake build

* fix analyse build

* fix

Signed-off-by: Anurag Saxena <43585259+saxena-anurag@users.noreply.github.com>

* add pre step for tests

* add pre step for tests

* add -s option, revert this later

* Revert "add -s option, revert this later"

This reverts commit 1f42d100e4.

* code cleanup

Signed-off-by: Anurag Saxena <anusa@microsoft.com>

* rename driver_registry_helper.h

* delete bpf_structs.h

* fix

* hardcode HKLM

* code cleanup

* fix build break

* fix build break, enable warning

* fix bad merge

* cleanup

* fix

* fix tests

* add tests, make ebpf_store_helper platform agnostic

* fixes, cleanup, common code for store APIs

* fix cmake build, driver tests

* cleanup

* code cleanup

* cr comments

* code cleanup

* cleanup

* bugfix

* Apply suggestions from code review

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

* cr comments

* fix build break

* move UM read store APIs to a different file

* cr comments

* cr comments

* cr comments

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2022-06-30 16:53:03 -07:00
Dave Thaler 1fea5bb8ca
Update to latest verifier code (#1235)
* Update to latest verifier code

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

* Suppress elfio warning

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-06-21 16:32:19 -07:00
Dave Thaler 90eee8717e
Expose interface luid and compartment id to sock_ops and sock_addr hooks (#1222)
* 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>
2022-06-17 09:31:48 -07:00
saxena-anurag 96226a7db9
Change default program type to EBPF_PROGRAM_TYPE_UNSPECIFIED (#1173)
* fixes

* update cmakelists

* fix bpf2c tests

* fix cilium tests

* add tests

* update bpf2c issue number

* Apply suggestions from code review

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

* fix

* fix

* fix

* cr comments

* fix build break

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2022-06-15 09:59:39 -06:00
Dave Thaler f863a02469
Create bpf_map structures from bpf_object__open() on a native file (#1160)
* Create bpf_map structures from bpf_object__open() on a native file

Fixes #1140

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

* Fix map update when loading native object

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

* Update tests

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

* Fix for test

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

* More test fixes

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

* More test fixes

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

* PR feedback

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

* PR feedback

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-06-07 19:28:52 -07:00
Dave Thaler 063ed2a4f8
Update to latest libbpf and bpftool (#1155)
* Update to latest libbpf and bpftool

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

* Fix test

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

* Update to latest verifier commit

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-31 17:43:39 -07:00
Dave Thaler ee166b5717
Increase instruction count limit (#1152)
* Increase bound on instruction count

And align more with other platforms

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

* Fix compiler error

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-31 16:02:05 -07:00
Alan Jowett 9fdd90adb3
Adding negative tests for ebpf_core.c (#1132)
* Adding negative tests for ebpf_core.c
Fixed bugs in ebpf_core.c around handling bad data.
Fixed incorrect helper function numbering for bpf_ktime_get_ns.
Canonacalizes names of protocol structs and handlers.
Simply protocol dispatch table and remove redundancy.
Add the ability to unregister for async notification (for failure path).
Remove redundant checks (internal calls with SAL annotations).

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>
Co-authored-by: saxena-anurag <43585259+saxena-anurag@users.noreply.github.com>
2022-05-26 14:06:02 -07:00
Dave Thaler bec56bc8c3
Add (non-deprecated) bpf_prog_load API support (#1130)
* Add bpf_prog_load()
* Move prototype for bpf_prog_load_deprecated() from libbpf.h to bpf.h
  to match libbpf
* Mark as deprecated bpf_object__load_xattr(), bpf_load_program(), and
  bpf_load_program_xattr() to match libbpf
* Make bpf_load_program_xattr() support the program name field, where
  previously it was ignored and a random name was used.

Fixes #1073

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-24 16:12:00 -07:00
Dave Thaler 4718bf7a73
Support bpf_object__load() with native programs (#1133)
* Make bpf_object__open_file work with native files

* Update bpf_object__open_file()
* Add bpf_object__open()
* Rename ebpf_enumerate_sections() to ebpf_enumerate_program_sections()

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

* Remove ebpf_program_load

And add a couple of windows-specific libbpf related APIs

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

* Fix bug in enumerate sections hit by tail_call_multiple_um.dll

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

* Fix program_name field in object_open

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

* Cleanup

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

* Fix order of PE sections returned

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

* Bug fix

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

* Bug fix

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

* Bug fix and revert enumerate_sections rename

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

* Updated expected bpf2c output

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

* Fix analysis warning

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

* Updated issue number in TODO comments

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

* Address Anurag's feedback

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-24 14:53:04 -07:00
Alan Jowett cb10093a54
Add function entry/exit tracing to ebpf_api.cpp (#1108)
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

Co-authored-by: Alan Jowett <alan.jowett@microsoft.com>
2022-05-19 12:14:42 -06:00
Dave Thaler e213b5c963
Add bpf_get_current_pid_tgid() helper (#1107)
* 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>
2022-05-18 20:12:31 -06:00
Dave Thaler eab141f47c
Remove more obsolete APIs (#1110)
* Remove ebpf_get_next_program (bpf_prog_get_next_id should be used
  instead)
* Don't export the internal ebpf_map_pin api

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-16 10:02:22 -07:00
Dave Thaler b7df2bec27
Document whether to close fds returned from various APIs (#1095)
Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2022-05-12 16:21:16 -07:00