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

663 Коммитов

Автор SHA1 Сообщение Дата
Alan Jowett 6bb51b9e0d
Fix stack overrun and fix EC to return correct size (#604)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-24 21:05:03 -07:00
Dave Thaler 65390d8baa
Simple error code conversion fixes (#596)
Addresses part of issue #595
A more comprehensive fix is left for a separate PR.
This PR fixes some bad error messages from bpftool.

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-24 10:58:57 -07:00
Dave Thaler 20d7a6565e
Add more libbpf APIs needed by bpftool (#576)
* Add more libbpf APIs needed by bpftool

* Add missing export for existing bpf_map__name API
* Add bpf_object__load
* Add bpf_object__load_xattr
* Add bpf_object__open_file
* Add bpf_object__unload() API
* Add bpf_program__get_type
* Add bpf_program__set_type
* Add bpf_program__unload() API
* Add libbpf_get_error
* Add libbpf_num_possible_cpus
* Rename BPF_MAP_TYPE_UNSPECIFIED to BPF_MAP_TYPE_UNSPEC for libbpf
  compat
* Rename BPF_PROG_TYPE_UNKNOWN to BPF_PROG_TYPE_UNSPEC for libbpf compat
* Add attach_type to bpf_link_info
* Add map_flags to bpf_map_info (but currently always 0)

Fixes #575

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-23 19:32:09 -07:00
Dave Thaler 6a1c193b5b
Add kernel test as part of PR checks (#593)
* Build on self-hosted runner so can report kernel test status check

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-23 14:59:09 -07:00
Alan Jowett 73eb08680f
Implement trivial version of BPF_MAP_TYPE_LPM_TRIE (#565)
* Implement trivial lpm trie map implementation

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-22 18:36:37 -06:00
Alan Jowett 630145d271
Add support to have sample driver profile ebpf programs (#577)
* Add support to have sample driver profile ebpf programs

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

* PR feedback

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

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2021-09-22 16:20:44 -07:00
Alan Jowett c31901ce43
Fix ebpf_set_current_thread_affinity (#592)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-22 13:48:21 -06:00
Dave Thaler 17dbbefaad
Fix sample project dependencies (#591)
* 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>
2021-09-22 12:12:20 -07:00
Alan Jowett c794dc9141
Move release of maps to program release (#590)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-21 19:03:54 -07:00
Shankar Seal b0134783cc
fix (#589) 2021-09-21 17:23:40 -06:00
Shankar Seal 91400e41a2
Clang treat warning as error (#578)
* bpf_xdp_adjust_head Part 2

* Fix csum_diff algorithm to use 1's complement arithmetic.

* treat warning as error
2021-09-21 12:03:06 -07:00
Alan Jowett c7d2c2fddf
Refactor perf tests into individual areas (#579)
* Refactor perf tests into individual areas

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

* Remove dependency on api lib internals

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-21 11:43:14 -07:00
Dave Thaler 6d3be2a0c2
Fix netsh "show maps" output (#581)
* Fix netsh "show maps" output

* Display correct inner map ID
* Display Map ID
* Display count of # paths pinned
* Correct "set program" help text

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

* Fix rebase

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

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2021-09-21 10:34:13 -06:00
Alan Jowett 3305fae5df
Set thread affinity during ioctl calls (#580)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2021-09-21 10:17:27 -06:00
Shankar Seal b04620eeee
bpf_xdp_adjust_head Part 2 (#566)
* bpf_xdp_adjust_head Part 2

* PR Feedback.

* Fix csum_diff algorithm to use 1's complement arithmetic.
2021-09-21 09:46:35 -06:00
Alan Jowett 97bfb473dd
Switch to clang 10 in CI/CD (#582)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-20 20:45:51 -07:00
Shankar Seal 9d01eb45c1
Fix EbpfProgramType for sample extension. (#569)
Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2021-09-20 13:00:21 -07:00
Alan Jowett 107d915b0d
Switch ebpf_pinning_table_get_next_name to use ebpf_utf8_string_t (#552)
* Switch ebpf_pinning_table_get_next_name to use ebpf_utf8_string_t

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-20 13:42:22 -06:00
Dave Thaler d806803a8a
Add libbpf bpf_create_map_xattr() API (#571)
* Add libbpf bpf_create_map_xattr() API

Needed for bpftool and other apps

* Add bpf_create_map_xattr() which allows creating maps with extended
  attributes such as name
* Remove unused ebpf_api_create_map()

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-20 11:58:00 -07:00
Dave Thaler 52e4acdcdf
Add option to pin all programs added, and show links and maps (#553)
* Add option to pin all programs added and show links and maps

* "add programs" now supports the equivalent of bpftool's "prog loadall"
  in addition to just "prog load"
* add "show links" netsh command
* expose "show maps" netsh command.  It was partially implemented but
  never exposed before.
* remove ebpf_map_query_definition() and test as being redundant with
  bpf_obj_get_info_by_fd() (and in the future, a strongly typed one that
  is map specific but different from the query map definition prototype)
* Fix bug where getting the next ID failed to check for index beyond
  array size.  And add test cases for it.
* Fix bug in ebpf_state.c where after enough tests ran it would start
  returning EBPF_NO_MEMORY because _ebpf_state_next_index was never
  reset.

Addresses #549

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-17 18:52:47 -07:00
Dave Thaler 956244fb72
Improve netsh show programs functionality (#548)
* Improve netsh show programs functionality

* Rename ebpf_get_next_pinned_program_name to ebpf_get_next_pinned_program_path for clarity
* Show link count and pinned path count
* Support "level=verbose" format
* Support filtering by attached and/or pinned

Fixes #188

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-17 16:41:43 -07:00
Alan Jowett cdcf793a54
Move generated include to include (#564)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-17 17:13:14 -06:00
Alan Jowett 9903a29409
Add BPF_MAP_TYPE_LRU_HASH (#556)
* Add LRU HASH map

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-17 10:28:49 -07:00
Dave Thaler f0cbb6da84
Fix bugs in ebpf_state and ebpf_object (#554)
* Fix bug where getting the next ID failed to check for index beyond array size.

* Fix bug in ebpf_state.c where after enough tests ran it would start
returning EBPF_NO_MEMORY because _ebpf_state_next_index was never reset.

The tests in PR #553 cover both of these bugs.

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

Co-authored-by: Alan Jowett <alanjo@microsoft.com>
2021-09-16 18:00:38 -06:00
Alan Jowett 967990f700
Disable /ZI and incremental linking (#546)
* Disable /ZI and incremental linking

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-16 16:49:02 -06:00
Alan Jowett 1393901505
CodeQl pipeline should run daily, not on every PR (#547)
* CodeQl pipeline shoud run daily, not on every PR

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-16 10:41:14 -06:00
Alan Jowett 488a4bf6d3
Switch to SHA256 digest algorithm (#550)
* Switch to SHA256 digest algorithm

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-16 10:24:45 -06:00
Dave Thaler 872999db06
Add netsh capability to unpin programs (#539)
* Add netsh capability to unpin programs

* The netsh "set program id=<id> pinned=" (with no value) will now unpin a
  program from all paths
* The netsh "delete program <id>" will now unpin a program from all
  paths before and releasing any reference held by netsh itself
* Make the "attached=<string>" argument to netsh set programs work
  with a section name like string
* Add libbpf api bpf_obj_get()
* Add ebpf_get_next_pinned_program_name() API to enumerate pinned
  programs

Fixes #190 #373

This is required for #188 which will update the "show programs"
and also add an option to "add program" to pin all programs rather
than just the first one in a file, like bpftool has such an option.

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

* Update mock netsh behavior since PR 540 changed the underlying requirements

PreprocessCommand now correctly matches tags so you can specify a later
optional tag without having to specify earlier optional tags

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-15 18:40:44 -07:00
Alan Jowett 6ae5c349dc
Only run performance tests on release (#543)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-15 14:29:19 -06:00
Dave Thaler aa09128ae0
Add libpf's libbpf_prog_type_by_name() API (#534)
* Add libpf's libbpf_prog_type_by_name() API

And add an ebpf_get_program_type_by_name() that returns the GUIDs
instead of ints.

This also removes the hard-coding of GUIDs or ints from the netsh
helper.

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-15 12:08:18 -07:00
Alan Jowett 7b9b6a7b1a
Fail link initialize if loading extension fails (#540)
* Fail link initialize if loading extension fails

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-15 12:11:13 -06:00
Alan Jowett 30011f0174
Remove unneeded manual download of boost (#541)
* Remove unneeded manual download of boost

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-15 11:42:30 -06:00
Alan Jowett 36784bbac4
Provide blurb to explain how pinning table works (#538)
* Provide blurb to explain how pinning table works

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-15 10:21:06 -07:00
Alan Jowett 9102f1e8c4
Remove reference to MSVC Runtime from docs as it is no longer needed (#529)
* Remove reference to MSVC Runtime from docs as it is no longer needed

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2021-09-14 18:45:33 -06:00
Alan Jowett cc9d0b06cc
First unregister for callouts, then unregister the provider (#532)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2021-09-14 15:48:56 -06:00
Alan Jowett 56a8d19c8b
Revert fix for #530 as it breaks ci/cd pipeline (#536)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-14 14:41:54 -06:00
Alan Jowett 48d31c2c37
Cache symbols of drivers loaded on kernel CI/CD machine (#533)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-14 13:20:43 -06:00
Dave Thaler 12bb2e7195
Update netsh commands to use more standard libbpf apis (#527)
* Update netsh commands to use more standard libbpf apis

* Add support for libbpf bpf_obj_pin() API
* Add support for libbpf bpf_object__next() API
* Rename BPF_{PROG,ATTACH}_TYPE_UNKNOWN to ...UNSPEC for libbpf compat
* Remove now-unused handle APIs ebpf_api_load_program and
  ebpf_api_pin_object, which is part of issue #383
  * netsh set/delete program now uses the ID to identify the program,
    like bpftool does, so that it can work even if the program wasn't
    loaded from an ELF file

Fixes #191

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-14 10:59:57 -07:00
Alan Jowett f5ba5c5d7c
Use CRT library to map handles to fds (#513)
* Use CRT library to map handles to fds

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-14 09:25:56 -06:00
Alan Jowett e553150b1b
Switch from MultiThreadedDebug to MultiThreadedDebugDll (#528)
* Switch from MultiThreadedDebug to MultiThreadedDebugDll
* Pull in latest ebpf-verifier

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-14 08:46:01 -06:00
Shankar Seal e84efdf092
Xdp adjust head part1 (#522)
xdp_adjust_head : Part 1
2021-09-13 17:46:23 -07:00
Shankar Seal 4d4c5b5cc7
refactor net_ebpf_ext (#520)
* refactor net_ebpf_ext
2021-09-13 14:46:43 -07:00
Alan Jowett f661e74d82
Fix unreliable test (#519)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>

Co-authored-by: Dave Thaler <dthaler@microsoft.com>
2021-09-13 10:54:10 -06:00
Dave Thaler b6a0fb84b9
Add support for libbpf bpf_obj_get_info_by_fd API (#510)
* Add support for libbpf bpf_obj_get_info_by_fd API

This is the last libbpf api needed to enable the bpftool
flow to detach an already loaded program.

The count of maps is changed from size_t to uint32_t for
consistency with libbpf and because it's not actually a size
in the sizeof() sense, it's a count in the countof() sense.

Also fix bug where map_name was never being set in the kernel

Fixes #372

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-10 21:54:07 -07:00
Alan Jowett 25f9887e69
Remove dependency on run-tests.bat (#517)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-10 17:59:53 -06:00
Alan Jowett f0a07e7dd0
Switch to ExAllocatePoolZero (#509)
Resolves: #506

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-10 17:35:03 -06:00
Alan Jowett 7e12a6f920
Add support for bpf_ktime_get_ns (#511)
* Add support for bpf_ktime_get_ns

Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-10 12:45:52 -06:00
Alan Jowett 84fef4e73c
Run utility helper tests in both interpret and jit modes (#512)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
2021-09-10 10:39:30 -07:00
Shankar Seal acb6859758
Support for xdp_tx. (#498)
* xdp_tx

* Fix analysis error.

* update documentation.

* IPv6 tests.

* Apply suggestions from code review
2021-09-09 22:34:03 -07:00
Dave Thaler 38952de71a
Require all inner map attributes to match (#508)
Updated the map_in_map.c test to use HASH instead of ARRAY as the inner
map type, to make it possible to test key_size mismatch (since key_size
must be 4 for all ARRAY maps, it can't be tested with ARRAY).

Fixes #507

Signed-off-by: Dave Thaler <dthaler@microsoft.com>
2021-09-09 21:11:19 -07:00