From 62a07fbbec92498ba0c9a4f9a8671c8fa81a01db Mon Sep 17 00:00:00 2001 From: Dean Sheather Date: Fri, 12 Apr 2024 07:14:18 +0000 Subject: [PATCH] feat: send logs to userspace + revamp Update bpf_printk statements to be also sent to userspace so they can be logged alongside events. All log lines are considered errors and should be checked (unless running a debug eBPF binary). Revamps the CO-RE reads that were performed in the eBPF code to use slimmer types and to use BPF helper macros for readability. --- .github/workflows/enterprise-release.yaml | 2 +- .github/workflows/enterprise.yaml | 2 +- .github/workflows/quality.yml | 14 +- .gitignore | 2 + .golangci.yaml | 58 +- Makefile | 4 +- README.md | 20 +- bpf.go | 19 + bpf/bpf_core_read.h | 146 ++- bpf/bpf_helper_defs.h | 1318 +++++++++++++++++---- bpf/bpf_helpers.h | 301 ++++- bpf/handler-bpfeb.o | Bin 731080 -> 74640 bytes bpf/handler-bpfel.o | Bin 731080 -> 74640 bytes bpf/handler.c | 195 ++- bpf/update_bpf.sh | 5 +- bpf/vmlinux_core.h | 26 + ci/scripts/build_handler.sh | 2 +- cmd/exectrace/main.go | 3 +- enterprise/go.mod | 22 +- enterprise/go.sum | 157 +-- go.mod | 18 +- go.sum | 25 +- go.work | 4 +- go.work.sum | 338 +++++- tracer.go | 8 + tracer_linux.go | 126 +- 26 files changed, 2260 insertions(+), 555 deletions(-) create mode 100644 bpf/vmlinux_core.h diff --git a/.github/workflows/enterprise-release.yaml b/.github/workflows/enterprise-release.yaml index e3ec764..0dfab26 100644 --- a/.github/workflows/enterprise-release.yaml +++ b/.github/workflows/enterprise-release.yaml @@ -51,7 +51,7 @@ jobs: - uses: actions/setup-go@v3 with: - go-version: "^1.20.7" + go-version: "^1.20.9" - name: Build binaries run: | diff --git a/.github/workflows/enterprise.yaml b/.github/workflows/enterprise.yaml index 28855f4..3ccd2cc 100644 --- a/.github/workflows/enterprise.yaml +++ b/.github/workflows/enterprise.yaml @@ -37,7 +37,7 @@ jobs: - uses: actions/checkout@v3 - uses: actions/setup-go@v3 with: - go-version: "^1.20.7" + go-version: "^1.20.9" - name: Echo Go Cache Paths id: go-cache-paths diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 61cebb5..5d6382f 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -36,7 +36,7 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: "^1.20.7" + go-version: "^1.20.9" - name: Run make fmt/go run: make fmt/go @@ -75,12 +75,12 @@ jobs: - name: Install Go uses: actions/setup-go@v2 with: - go-version: "^1.20.7" + go-version: "^1.20.9" - name: Install golangci-lint run: | curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh \ - | sh -s -- -b $(go env GOPATH)/bin v1.53.2 + | sh -s -- -b $(go env GOPATH)/bin v1.57.2 # Linting needs to be done on each build variation of GOOS. - name: Run make lint/go/linux @@ -100,6 +100,14 @@ jobs: - name: Run make lint/c run: make lint/c + - name: Ensure DEBUG is disabled + run: | + # look for uncommented "#define DEBUG" in bpf/handler.c + if grep -q "^#define DEBUG" bpf/handler.c; then + echo "DEBUG is enabled in bpf/handler.c" + exit 1 + fi + lint-shellcheck: name: lint/shellcheck runs-on: ubuntu-20.04 diff --git a/.gitignore b/.gitignore index c5e54ba..ab94f8b 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,5 @@ build *.tfplan *.lock.hcl .terraform/ + +/exectrace diff --git a/.golangci.yaml b/.golangci.yaml index 7794a6e..0db4a80 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -20,30 +20,30 @@ linters-settings: enabled-checks: # - appendAssign # - appendCombine - - argOrder + #- argOrder # - assignOp # - badCall - - badCond + #- badCond - badLock - badRegexp - boolExprSimplify # - builtinShadow - builtinShadowDecl - - captLocal - - caseOrder - - codegenComment + #- captLocal + #- caseOrder + #- codegenComment # - commentedOutCode - commentedOutImport - - commentFormatting - - defaultCaseOrder + #- commentFormatting + #- defaultCaseOrder - deferUnlambda # - deprecatedComment # - docStub - - dupArg - - dupBranchBody - - dupCase + #- dupArg + #- dupBranchBody + #- dupCase - dupImport - - dupSubExpr + #- dupSubExpr # - elseif - emptyFallthrough # - emptyStringTest @@ -52,8 +52,8 @@ linters-settings: # - exitAfterDefer # - exposedSyncMutex # - filepathJoin - - flagDeref - - flagName + #- flagDeref + #- flagName - hexLiteral # - httpNoBody # - hugeParam @@ -61,47 +61,47 @@ linters-settings: # - importShadow - indexAlloc - initClause - - mapKey + #- mapKey - methodExprCall # - nestingReduce - - newDeref + #- newDeref - nilValReturn # - octalLiteral - - offBy1 + #- offBy1 # - paramTypeCombine # - preferStringWriter # - preferWriteByte # - ptrToRefParam # - rangeExprCopy # - rangeValCopy - - regexpMust + #- regexpMust - regexpPattern # - regexpSimplify #- ruleguard - - singleCaseSwitch - - sloppyLen + #- singleCaseSwitch + #- sloppyLen # - sloppyReassign - - sloppyTypeAssert + #- sloppyTypeAssert - sortSlice - sprintfQuotedString - sqlQuery # - stringConcatSimplify # - stringXbytes # - suspiciousSorting - - switchTrue + #- switchTrue - truncateCmp - typeAssertChain # - typeDefFirst - - typeSwitchVar + #- typeSwitchVar # - typeUnparen - - underef + #- underef # - unlabelStmt # - unlambda # - unnamedResult # - unnecessaryBlock # - unnecessaryDefer # - unslice - - valSwap + #- valSwap - weakCond # - whyNoLint # - wrapperFunc @@ -207,15 +207,17 @@ issues: linters: - exhaustruct + exclude-files: + - scripts/rules.go + + exclude-dirs: + - node_modules + fix: true max-issues-per-linter: 0 max-same-issues: 0 run: - skip-dirs: - - node_modules - skip-files: - - scripts/rules.go timeout: 10m # Over time, add more and more linters from diff --git a/Makefile b/Makefile index 0a8abd9..18a37b2 100644 --- a/Makefile +++ b/Makefile @@ -24,12 +24,12 @@ handlers: bpf/handler-bpfeb.o bpf/handler-bpfel.o clean: clean-enterprise rm -rf bpf/handler-bpfeb.o bpf/handler-bpfel.o -ci/.clang-image: ci/images/clang-13/Dockerfile +ci/.clang-image: ci/images/clang-13/Dockerfile ci/scripts/clang_image.sh ./ci/scripts/clang_image.sh touch ci/.clang-image # bpfeb is big endian, bpfel is little endian. -bpf/handler-bpfeb.o bpf/handler-bpfel.o: bpf/*.h bpf/*.c ci/.clang-image +bpf/handler-bpfeb.o bpf/handler-bpfel.o: bpf/*.h bpf/*.c ci/.clang-image ci/scripts/build_handler.sh ./ci/scripts/build_handler.sh "$(@F)" .PHONY: fmt diff --git a/README.md b/README.md index 6730760..8ae1d48 100644 --- a/README.md +++ b/README.md @@ -113,25 +113,29 @@ func main() { You will need the following: - Docker (the Makefile runs clang within a Docker container for reproducibility) +- Golang 1.20+ - `golangci-lint` - `prettier` - `shellcheck` -Since the eBPF program is packaged as a Go library, you need to compile the -program and include it in the repo. +Since the eBPF program is packaged using `go:embed`, you will need to compile +the program and include it in the repo. If you change the files in the `bpf` directory, run `make` and ensure that you include the `.o` files you changed in your commit (CI will verify that you've done this correctly). -## Status: beta +## Status: stable -This library is ready to use as-is, though it is under active development as we -modify it to suit the needs of Coder's [enterprise product](https://coder.com). +This library is ready to use as-is. It has been used in production for years and +has received minimal maintenance over that time period. -We plan on adding more features and fields that can be read from the API, as -well as easier-to-use methods for filtering events (currently, you must -implement additional filtering yourself). +In April 2024, a system to send logs from the kernel to userspace was added +which can make discovering potential issues in production/development much +easier. + +The API will likely not be further modified as we have no need for additional +fields/features. We will continue to maintain the library as needed. ## See also diff --git a/bpf.go b/bpf.go index 4307d4d..74bdb66 100644 --- a/bpf.go +++ b/bpf.go @@ -53,6 +53,12 @@ func loadBPFObjects() (*bpfObjects, error) { } err = spec.LoadAndAssign(objs, collectionOpts) if err != nil { + var ve *ebpf.VerifierError + if xerrors.As(err, &ve) { + // It's better to use %+v for this as it forces the error to contain + // all lines from the verifier log. + return nil, xerrors.Errorf("load and assign specs: verifier error: %+v", ve) + } return nil, xerrors.Errorf("load and assign specs: %w", err) } @@ -62,6 +68,7 @@ func loadBPFObjects() (*bpfObjects, error) { type bpfObjects struct { EnterExecveProg *ebpf.Program `ebpf:"enter_execve"` EventsMap *ebpf.Map `ebpf:"events"` + LogsMap *ebpf.Map `ebpf:"logs"` FiltersMap *ebpf.Map `ebpf:"filters"` closeLock sync.Mutex @@ -92,6 +99,18 @@ func (o *bpfObjects) Close() error { merr = multierror.Append(merr, xerrors.Errorf(`close BPF map "events": %w`, err)) } } + if o.LogsMap != nil { + err := o.LogsMap.Close() + if err != nil { + merr = multierror.Append(merr, xerrors.Errorf(`close BPF map "logs": %w`, err)) + } + } + if o.FiltersMap != nil { + err := o.FiltersMap.Close() + if err != nil { + merr = multierror.Append(merr, xerrors.Errorf(`close BPF map "filters": %w`, err)) + } + } return merr } diff --git a/bpf/bpf_core_read.h b/bpf/bpf_core_read.h index d169e9a..b6cfd80 100644 --- a/bpf/bpf_core_read.h +++ b/bpf/bpf_core_read.h @@ -1,5 +1,5 @@ -// This file is taken from libbpf v0.4.0. -// https://github.com/libbpf/libbpf/blob/v0.4.0/src/bpf_core_read.h +// This file is taken from libbpf v0.8.2. +// https://github.com/libbpf/libbpf/blob/v0.8.2/src/bpf_core_read.h // // Licensed under LGPL 2.1 or the BSD 2 Clause. @@ -7,6 +7,8 @@ #ifndef __BPF_CORE_READ_H__ #define __BPF_CORE_READ_H__ +#include "bpf_helpers.h" + /* * enum bpf_field_info_kind is passed as a second argument into * __builtin_preserve_field_info() built-in to get a specific aspect of @@ -34,6 +36,7 @@ enum bpf_type_id_kind { enum bpf_type_info_kind { BPF_TYPE_EXISTS = 0, /* type existence in target kernel */ BPF_TYPE_SIZE = 1, /* type size in target kernel */ + BPF_TYPE_MATCHES = 2, /* type match in target kernel */ }; /* second argument to __builtin_preserve_enum_value() built-in */ @@ -45,10 +48,10 @@ enum bpf_enum_value_kind { #define __CORE_RELO(src, field, info) \ __builtin_preserve_field_info((src)->field, BPF_FIELD_##info) -#if __BYTE_ORDER == __LITTLE_ENDIAN +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ #define __CORE_BITFIELD_PROBE_READ(dst, src, fld) \ bpf_probe_read_kernel( \ - (void *)dst, \ + (void *)dst, \ __CORE_RELO(src, fld, BYTE_SIZE), \ (const void *)src + __CORE_RELO(src, fld, BYTE_OFFSET)) #else @@ -115,21 +118,103 @@ enum bpf_enum_value_kind { val; \ }) +/* + * Write to a bitfield, identified by s->field. + * This is the inverse of BPF_CORE_WRITE_BITFIELD(). + */ +#define BPF_CORE_WRITE_BITFIELD(s, field, new_val) ({ \ + void *p = (void *)s + __CORE_RELO(s, field, BYTE_OFFSET); \ + unsigned int byte_size = __CORE_RELO(s, field, BYTE_SIZE); \ + unsigned int lshift = __CORE_RELO(s, field, LSHIFT_U64); \ + unsigned int rshift = __CORE_RELO(s, field, RSHIFT_U64); \ + unsigned long long mask, val, nval = new_val; \ + unsigned int rpad = rshift - lshift; \ + \ + asm volatile("" : "+r"(p)); \ + \ + switch (byte_size) { \ + case 1: val = *(unsigned char *)p; break; \ + case 2: val = *(unsigned short *)p; break; \ + case 4: val = *(unsigned int *)p; break; \ + case 8: val = *(unsigned long long *)p; break; \ + } \ + \ + mask = (~0ULL << rshift) >> lshift; \ + val = (val & ~mask) | ((nval << rpad) & mask); \ + \ + switch (byte_size) { \ + case 1: *(unsigned char *)p = val; break; \ + case 2: *(unsigned short *)p = val; break; \ + case 4: *(unsigned int *)p = val; break; \ + case 8: *(unsigned long long *)p = val; break; \ + } \ +}) + +/* Differentiator between compilers builtin implementations. This is a + * requirement due to the compiler parsing differences where GCC optimizes + * early in parsing those constructs of type pointers to the builtin specific + * type, resulting in not being possible to collect the required type + * information in the builtin expansion. + */ +#ifdef __clang__ +#define ___bpf_typeof(type) ((typeof(type) *) 0) +#else +#define ___bpf_typeof1(type, NR) ({ \ + extern typeof(type) *___concat(bpf_type_tmp_, NR); \ + ___concat(bpf_type_tmp_, NR); \ +}) +#define ___bpf_typeof(type) ___bpf_typeof1(type, __COUNTER__) +#endif + +#ifdef __clang__ +#define ___bpf_field_ref1(field) (field) +#define ___bpf_field_ref2(type, field) (___bpf_typeof(type)->field) +#else +#define ___bpf_field_ref1(field) (&(field)) +#define ___bpf_field_ref2(type, field) (&(___bpf_typeof(type)->field)) +#endif +#define ___bpf_field_ref(args...) \ + ___bpf_apply(___bpf_field_ref, ___bpf_narg(args))(args) + /* * Convenience macro to check that field actually exists in target kernel's. * Returns: * 1, if matching field is present in target kernel; * 0, if no matching field found. + * + * Supports two forms: + * - field reference through variable access: + * bpf_core_field_exists(p->my_field); + * - field reference through type and field names: + * bpf_core_field_exists(struct my_type, my_field). */ -#define bpf_core_field_exists(field) \ - __builtin_preserve_field_info(field, BPF_FIELD_EXISTS) +#define bpf_core_field_exists(field...) \ + __builtin_preserve_field_info(___bpf_field_ref(field), BPF_FIELD_EXISTS) /* * Convenience macro to get the byte size of a field. Works for integers, * struct/unions, pointers, arrays, and enums. + * + * Supports two forms: + * - field reference through variable access: + * bpf_core_field_size(p->my_field); + * - field reference through type and field names: + * bpf_core_field_size(struct my_type, my_field). + */ +#define bpf_core_field_size(field...) \ + __builtin_preserve_field_info(___bpf_field_ref(field), BPF_FIELD_BYTE_SIZE) + +/* + * Convenience macro to get field's byte offset. + * + * Supports two forms: + * - field reference through variable access: + * bpf_core_field_offset(p->my_field); + * - field reference through type and field names: + * bpf_core_field_offset(struct my_type, my_field). */ -#define bpf_core_field_size(field) \ - __builtin_preserve_field_info(field, BPF_FIELD_BYTE_SIZE) +#define bpf_core_field_offset(field...) \ + __builtin_preserve_field_info(___bpf_field_ref(field), BPF_FIELD_BYTE_OFFSET) /* * Convenience macro to get BTF type ID of a specified type, using a local BTF @@ -137,7 +222,7 @@ enum bpf_enum_value_kind { * BTF. Always succeeds. */ #define bpf_core_type_id_local(type) \ - __builtin_btf_type_id(*(typeof(type) *)0, BPF_TYPE_ID_LOCAL) + __builtin_btf_type_id(*___bpf_typeof(type), BPF_TYPE_ID_LOCAL) /* * Convenience macro to get BTF type ID of a target kernel's type that matches @@ -147,7 +232,7 @@ enum bpf_enum_value_kind { * - 0, if no matching type was found in a target kernel BTF. */ #define bpf_core_type_id_kernel(type) \ - __builtin_btf_type_id(*(typeof(type) *)0, BPF_TYPE_ID_TARGET) + __builtin_btf_type_id(*___bpf_typeof(type), BPF_TYPE_ID_TARGET) /* * Convenience macro to check that provided named type @@ -157,7 +242,17 @@ enum bpf_enum_value_kind { * 0, if no matching type is found. */ #define bpf_core_type_exists(type) \ - __builtin_preserve_type_info(*(typeof(type) *)0, BPF_TYPE_EXISTS) + __builtin_preserve_type_info(*___bpf_typeof(type), BPF_TYPE_EXISTS) + +/* + * Convenience macro to check that provided named type + * (struct/union/enum/typedef) "matches" that in a target kernel. + * Returns: + * 1, if the type matches in the target kernel's BTF; + * 0, if the type does not match any in the target kernel + */ +#define bpf_core_type_matches(type) \ + __builtin_preserve_type_info(*___bpf_typeof(type), BPF_TYPE_MATCHES) /* * Convenience macro to get the byte size of a provided named type @@ -167,7 +262,7 @@ enum bpf_enum_value_kind { * 0, if no matching type is found. */ #define bpf_core_type_size(type) \ - __builtin_preserve_type_info(*(typeof(type) *)0, BPF_TYPE_SIZE) + __builtin_preserve_type_info(*___bpf_typeof(type), BPF_TYPE_SIZE) /* * Convenience macro to check that provided enumerator value is defined in @@ -177,8 +272,13 @@ enum bpf_enum_value_kind { * kernel's BTF; * 0, if no matching enum and/or enum value within that enum is found. */ +#ifdef __clang__ #define bpf_core_enum_value_exists(enum_type, enum_value) \ __builtin_preserve_enum_value(*(typeof(enum_type) *)enum_value, BPF_ENUMVAL_EXISTS) +#else +#define bpf_core_enum_value_exists(enum_type, enum_value) \ + __builtin_preserve_enum_value(___bpf_typeof(enum_type), enum_value, BPF_ENUMVAL_EXISTS) +#endif /* * Convenience macro to get the integer value of an enumerator value in @@ -188,8 +288,13 @@ enum bpf_enum_value_kind { * present in target kernel's BTF; * 0, if no matching enum and/or enum value within that enum is found. */ +#ifdef __clang__ #define bpf_core_enum_value(enum_type, enum_value) \ __builtin_preserve_enum_value(*(typeof(enum_type) *)enum_value, BPF_ENUMVAL_VALUE) +#else +#define bpf_core_enum_value(enum_type, enum_value) \ + __builtin_preserve_enum_value(___bpf_typeof(enum_type), enum_value, BPF_ENUMVAL_VALUE) +#endif /* * bpf_core_read() abstracts away bpf_probe_read_kernel() call and captures @@ -201,7 +306,7 @@ enum bpf_enum_value_kind { * a relocation, which records BTF type ID describing root struct/union and an * accessor string which describes exact embedded field that was used to take * an address. See detailed description of this relocation format and - * semantics in comments to struct bpf_field_reloc in libbpf_internal.h. + * semantics in comments to struct bpf_core_relo in include/uapi/linux/bpf.h. * * This relocation allows libbpf to adjust BPF instruction to use correct * actual field offset, based on target kernel BTF type that matches original @@ -225,6 +330,17 @@ enum bpf_enum_value_kind { #define bpf_core_read_user_str(dst, sz, src) \ bpf_probe_read_user_str(dst, sz, (const void *)__builtin_preserve_access_index(src)) +extern void *bpf_rdonly_cast(const void *obj, __u32 btf_id) __ksym __weak; + +/* + * Cast provided pointer *ptr* into a pointer to a specified *type* in such + * a way that BPF verifier will become aware of associated kernel-side BTF + * type. This allows to access members of kernel types directly without the + * need to use BPF_CORE_READ() macros. + */ +#define bpf_core_cast(ptr, type) \ + ((typeof(type) *)bpf_rdonly_cast((ptr), bpf_core_type_id_kernel(type))) + #define ___concat(a, b) a ## b #define ___apply(fn, n) ___concat(fn, n) #define ___nth(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, __11, N, ...) N @@ -329,7 +445,7 @@ enum bpf_enum_value_kind { /* Non-CO-RE variant of BPF_CORE_READ_INTO() */ #define BPF_PROBE_READ_INTO(dst, src, a, ...) ({ \ - ___core_read(bpf_probe_read, bpf_probe_read, \ + ___core_read(bpf_probe_read_kernel, bpf_probe_read_kernel, \ dst, (src), a, ##__VA_ARGS__) \ }) @@ -365,7 +481,7 @@ enum bpf_enum_value_kind { /* Non-CO-RE variant of BPF_CORE_READ_STR_INTO() */ #define BPF_PROBE_READ_STR_INTO(dst, src, a, ...) ({ \ - ___core_read(bpf_probe_read_str, bpf_probe_read, \ + ___core_read(bpf_probe_read_kernel_str, bpf_probe_read_kernel, \ dst, (src), a, ##__VA_ARGS__) \ }) diff --git a/bpf/bpf_helper_defs.h b/bpf/bpf_helper_defs.h index 4e55a8f..c91739d 100644 --- a/bpf/bpf_helper_defs.h +++ b/bpf/bpf_helper_defs.h @@ -1,5 +1,5 @@ -// This file is taken from libbpf v0.4.0. -// https://github.com/libbpf/libbpf/blob/v0.4.0/src/bpf_helper_defs.h +// This file is taken from libbpf v0.8.2. +// https://github.com/libbpf/libbpf/blob/v0.8.2/src/bpf_helper_defs.h // // Licensed under LGPL 2.1 or the BSD 2 Clause. @@ -32,7 +32,9 @@ struct tcp_sock; struct tcp_timewait_sock; struct tcp_request_sock; struct udp6_sock; +struct unix_sock; struct task_struct; +struct cgroup; struct __sk_buff; struct sk_msg_md; struct xdp_md; @@ -41,6 +43,11 @@ struct btf_ptr; struct inode; struct socket; struct file; +struct bpf_timer; +struct mptcp_sock; +struct bpf_dynptr; +struct iphdr; +struct ipv6hdr; /* * bpf_map_lookup_elem @@ -51,7 +58,7 @@ struct file; * Map value associated to *key*, or **NULL** if no entry was * found. */ -static void *(*bpf_map_lookup_elem)(void *map, const void *key) = (void *) 1; +static void *(* const bpf_map_lookup_elem)(void *map, const void *key) = (void *) 1; /* * bpf_map_update_elem @@ -73,7 +80,7 @@ static void *(*bpf_map_lookup_elem)(void *map, const void *key) = (void *) 1; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_map_update_elem)(void *map, const void *key, const void *value, __u64 flags) = (void *) 2; +static long (* const bpf_map_update_elem)(void *map, const void *key, const void *value, __u64 flags) = (void *) 2; /* * bpf_map_delete_elem @@ -83,7 +90,7 @@ static long (*bpf_map_update_elem)(void *map, const void *key, const void *value * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_map_delete_elem)(void *map, const void *key) = (void *) 3; +static long (* const bpf_map_delete_elem)(void *map, const void *key) = (void *) 3; /* * bpf_probe_read @@ -97,7 +104,7 @@ static long (*bpf_map_delete_elem)(void *map, const void *key) = (void *) 3; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_probe_read)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 4; +static long (* const bpf_probe_read)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 4; /* * bpf_ktime_get_ns @@ -109,24 +116,24 @@ static long (*bpf_probe_read)(void *dst, __u32 size, const void *unsafe_ptr) = ( * Returns * Current *ktime*. */ -static __u64 (*bpf_ktime_get_ns)(void) = (void *) 5; +static __u64 (* const bpf_ktime_get_ns)(void) = (void *) 5; /* * bpf_trace_printk * * This helper is a "printk()-like" facility for debugging. It * prints a message defined by format *fmt* (of size *fmt_size*) - * to file *\/sys/kernel/debug/tracing/trace* from DebugFS, if + * to file *\/sys/kernel/tracing/trace* from TraceFS, if * available. It can take up to three additional **u64** * arguments (as an eBPF helpers, the total number of arguments is * limited to five). * * Each time the helper is called, it appends a line to the trace. - * Lines are discarded while *\/sys/kernel/debug/tracing/trace* is - * open, use *\/sys/kernel/debug/tracing/trace_pipe* to avoid this. + * Lines are discarded while *\/sys/kernel/tracing/trace* is + * open, use *\/sys/kernel/tracing/trace_pipe* to avoid this. * The format of the trace is customizable, and the exact output * one will get depends on the options set in - * *\/sys/kernel/debug/tracing/trace_options* (see also the + * *\/sys/kernel/tracing/trace_options* (see also the * *README* file under the same directory). However, it usually * defaults to something like: * @@ -172,7 +179,7 @@ static __u64 (*bpf_ktime_get_ns)(void) = (void *) 5; * The number of bytes written to the buffer, or a negative error * in case of failure. */ -static long (*bpf_trace_printk)(const char *fmt, __u32 fmt_size, ...) = (void *) 6; +static long (* const bpf_trace_printk)(const char *fmt, __u32 fmt_size, ...) = (void *) 6; /* * bpf_get_prandom_u32 @@ -188,20 +195,20 @@ static long (*bpf_trace_printk)(const char *fmt, __u32 fmt_size, ...) = (void *) * Returns * A random 32-bit unsigned value. */ -static __u32 (*bpf_get_prandom_u32)(void) = (void *) 7; +static __u32 (* const bpf_get_prandom_u32)(void) = (void *) 7; /* * bpf_get_smp_processor_id * * Get the SMP (symmetric multiprocessing) processor id. Note that - * all programs run with preemption disabled, which means that the + * all programs run with migration disabled, which means that the * SMP processor id is stable during all the execution of the * program. * * Returns * The SMP id of the processor running the program. */ -static __u32 (*bpf_get_smp_processor_id)(void) = (void *) 8; +static __u32 (* const bpf_get_smp_processor_id)(void) = (void *) 8; /* * bpf_skb_store_bytes @@ -222,7 +229,7 @@ static __u32 (*bpf_get_smp_processor_id)(void) = (void *) 8; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_store_bytes)(struct __sk_buff *skb, __u32 offset, const void *from, __u32 len, __u64 flags) = (void *) 9; +static long (* const bpf_skb_store_bytes)(struct __sk_buff *skb, __u32 offset, const void *from, __u32 len, __u64 flags) = (void *) 9; /* * bpf_l3_csum_replace @@ -251,7 +258,7 @@ static long (*bpf_skb_store_bytes)(struct __sk_buff *skb, __u32 offset, const vo * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_l3_csum_replace)(struct __sk_buff *skb, __u32 offset, __u64 from, __u64 to, __u64 size) = (void *) 10; +static long (* const bpf_l3_csum_replace)(struct __sk_buff *skb, __u32 offset, __u64 from, __u64 to, __u64 size) = (void *) 10; /* * bpf_l4_csum_replace @@ -287,7 +294,7 @@ static long (*bpf_l3_csum_replace)(struct __sk_buff *skb, __u32 offset, __u64 fr * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_l4_csum_replace)(struct __sk_buff *skb, __u32 offset, __u64 from, __u64 to, __u64 flags) = (void *) 11; +static long (* const bpf_l4_csum_replace)(struct __sk_buff *skb, __u32 offset, __u64 from, __u64 to, __u64 flags) = (void *) 11; /* * bpf_tail_call @@ -317,12 +324,12 @@ static long (*bpf_l4_csum_replace)(struct __sk_buff *skb, __u32 offset, __u64 fr * if the maximum number of tail calls has been reached for this * chain of programs. This limit is defined in the kernel by the * macro **MAX_TAIL_CALL_CNT** (not accessible to user space), - * which is currently set to 32. + * which is currently set to 33. * * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_tail_call)(void *ctx, void *prog_array_map, __u32 index) = (void *) 12; +static long (* const bpf_tail_call)(void *ctx, void *prog_array_map, __u32 index) = (void *) 12; /* * bpf_clone_redirect @@ -348,13 +355,16 @@ static long (*bpf_tail_call)(void *ctx, void *prog_array_map, __u32 index) = (vo * direct packet access. * * Returns - * 0 on success, or a negative error in case of failure. + * 0 on success, or a negative error in case of failure. Positive + * error indicates a potential drop or congestion in the target + * device. The particular positive error codes are not defined. */ -static long (*bpf_clone_redirect)(struct __sk_buff *skb, __u32 ifindex, __u64 flags) = (void *) 13; +static long (* const bpf_clone_redirect)(struct __sk_buff *skb, __u32 ifindex, __u64 flags) = (void *) 13; /* * bpf_get_current_pid_tgid * + * Get the current pid and tgid. * * Returns * A 64-bit integer containing the current tgid and pid, and @@ -362,17 +372,18 @@ static long (*bpf_clone_redirect)(struct __sk_buff *skb, __u32 ifindex, __u64 fl * *current_task*\ **->tgid << 32 \|** * *current_task*\ **->pid**. */ -static __u64 (*bpf_get_current_pid_tgid)(void) = (void *) 14; +static __u64 (* const bpf_get_current_pid_tgid)(void) = (void *) 14; /* * bpf_get_current_uid_gid * + * Get the current uid and gid. * * Returns * A 64-bit integer containing the current GID and UID, and * created as such: *current_gid* **<< 32 \|** *current_uid*. */ -static __u64 (*bpf_get_current_uid_gid)(void) = (void *) 15; +static __u64 (* const bpf_get_current_uid_gid)(void) = (void *) 15; /* * bpf_get_current_comm @@ -387,7 +398,7 @@ static __u64 (*bpf_get_current_uid_gid)(void) = (void *) 15; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_get_current_comm)(void *buf, __u32 size_of_buf) = (void *) 16; +static long (* const bpf_get_current_comm)(void *buf, __u32 size_of_buf) = (void *) 16; /* * bpf_get_cgroup_classid @@ -417,7 +428,7 @@ static long (*bpf_get_current_comm)(void *buf, __u32 size_of_buf) = (void *) 16; * Returns * The classid, or 0 for the default unconfigured classid. */ -static __u32 (*bpf_get_cgroup_classid)(struct __sk_buff *skb) = (void *) 17; +static __u32 (* const bpf_get_cgroup_classid)(struct __sk_buff *skb) = (void *) 17; /* * bpf_skb_vlan_push @@ -437,7 +448,7 @@ static __u32 (*bpf_get_cgroup_classid)(struct __sk_buff *skb) = (void *) 17; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_vlan_push)(struct __sk_buff *skb, __be16 vlan_proto, __u16 vlan_tci) = (void *) 18; +static long (* const bpf_skb_vlan_push)(struct __sk_buff *skb, __be16 vlan_proto, __u16 vlan_tci) = (void *) 18; /* * bpf_skb_vlan_pop @@ -453,7 +464,7 @@ static long (*bpf_skb_vlan_push)(struct __sk_buff *skb, __be16 vlan_proto, __u16 * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_vlan_pop)(struct __sk_buff *skb) = (void *) 19; +static long (* const bpf_skb_vlan_pop)(struct __sk_buff *skb) = (void *) 19; /* * bpf_skb_get_tunnel_key @@ -508,7 +519,7 @@ static long (*bpf_skb_vlan_pop)(struct __sk_buff *skb) = (void *) 19; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_get_tunnel_key)(struct __sk_buff *skb, struct bpf_tunnel_key *key, __u32 size, __u64 flags) = (void *) 20; +static long (* const bpf_skb_get_tunnel_key)(struct __sk_buff *skb, struct bpf_tunnel_key *key, __u32 size, __u64 flags) = (void *) 20; /* * bpf_skb_set_tunnel_key @@ -533,6 +544,9 @@ static long (*bpf_skb_get_tunnel_key)(struct __sk_buff *skb, struct bpf_tunnel_k * sending the packet. This flag was added for GRE * encapsulation, but might be used with other protocols * as well in the future. + * **BPF_F_NO_TUNNEL_KEY** + * Add a flag to tunnel metadata indicating that no tunnel + * key should be set in the resulting tunnel header. * * Here is a typical usage on the transmit path: * @@ -549,7 +563,7 @@ static long (*bpf_skb_get_tunnel_key)(struct __sk_buff *skb, struct bpf_tunnel_k * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_set_tunnel_key)(struct __sk_buff *skb, struct bpf_tunnel_key *key, __u32 size, __u64 flags) = (void *) 21; +static long (* const bpf_skb_set_tunnel_key)(struct __sk_buff *skb, struct bpf_tunnel_key *key, __u32 size, __u64 flags) = (void *) 21; /* * bpf_perf_event_read @@ -582,7 +596,7 @@ static long (*bpf_skb_set_tunnel_key)(struct __sk_buff *skb, struct bpf_tunnel_k * The value of the perf event counter read from the map, or a * negative error code in case of failure. */ -static __u64 (*bpf_perf_event_read)(void *map, __u64 flags) = (void *) 22; +static __u64 (* const bpf_perf_event_read)(void *map, __u64 flags) = (void *) 22; /* * bpf_redirect @@ -609,7 +623,7 @@ static __u64 (*bpf_perf_event_read)(void *map, __u64 flags) = (void *) 22; * are **TC_ACT_REDIRECT** on success or **TC_ACT_SHOT** on * error. */ -static long (*bpf_redirect)(__u32 ifindex, __u64 flags) = (void *) 23; +static long (* const bpf_redirect)(__u32 ifindex, __u64 flags) = (void *) 23; /* * bpf_get_route_realm @@ -637,7 +651,7 @@ static long (*bpf_redirect)(__u32 ifindex, __u64 flags) = (void *) 23; * The realm of the route for the packet associated to *skb*, or 0 * if none was found. */ -static __u32 (*bpf_get_route_realm)(struct __sk_buff *skb) = (void *) 24; +static __u32 (* const bpf_get_route_realm)(struct __sk_buff *skb) = (void *) 24; /* * bpf_perf_event_output @@ -686,7 +700,7 @@ static __u32 (*bpf_get_route_realm)(struct __sk_buff *skb) = (void *) 24; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_perf_event_output)(void *ctx, void *map, __u64 flags, void *data, __u64 size) = (void *) 25; +static long (* const bpf_perf_event_output)(void *ctx, void *map, __u64 flags, void *data, __u64 size) = (void *) 25; /* * bpf_skb_load_bytes @@ -707,7 +721,7 @@ static long (*bpf_perf_event_output)(void *ctx, void *map, __u64 flags, void *da * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_load_bytes)(const void *skb, __u32 offset, void *to, __u32 len) = (void *) 26; +static long (* const bpf_skb_load_bytes)(const void *skb, __u32 offset, void *to, __u32 len) = (void *) 26; /* * bpf_get_stackid @@ -753,7 +767,7 @@ static long (*bpf_skb_load_bytes)(const void *skb, __u32 offset, void *to, __u32 * The positive or null stack id on success, or a negative error * in case of failure. */ -static long (*bpf_get_stackid)(void *ctx, void *map, __u64 flags) = (void *) 27; +static long (* const bpf_get_stackid)(void *ctx, void *map, __u64 flags) = (void *) 27; /* * bpf_csum_diff @@ -784,7 +798,7 @@ static long (*bpf_get_stackid)(void *ctx, void *map, __u64 flags) = (void *) 27; * The checksum result, or a negative error code in case of * failure. */ -static __s64 (*bpf_csum_diff)(__be32 *from, __u32 from_size, __be32 *to, __u32 to_size, __wsum seed) = (void *) 28; +static __s64 (* const bpf_csum_diff)(__be32 *from, __u32 from_size, __be32 *to, __u32 to_size, __wsum seed) = (void *) 28; /* * bpf_skb_get_tunnel_opt @@ -806,7 +820,7 @@ static __s64 (*bpf_csum_diff)(__be32 *from, __u32 from_size, __be32 *to, __u32 t * Returns * The size of the option data retrieved. */ -static long (*bpf_skb_get_tunnel_opt)(struct __sk_buff *skb, void *opt, __u32 size) = (void *) 29; +static long (* const bpf_skb_get_tunnel_opt)(struct __sk_buff *skb, void *opt, __u32 size) = (void *) 29; /* * bpf_skb_set_tunnel_opt @@ -820,7 +834,7 @@ static long (*bpf_skb_get_tunnel_opt)(struct __sk_buff *skb, void *opt, __u32 si * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_set_tunnel_opt)(struct __sk_buff *skb, void *opt, __u32 size) = (void *) 30; +static long (* const bpf_skb_set_tunnel_opt)(struct __sk_buff *skb, void *opt, __u32 size) = (void *) 30; /* * bpf_skb_change_proto @@ -851,7 +865,7 @@ static long (*bpf_skb_set_tunnel_opt)(struct __sk_buff *skb, void *opt, __u32 si * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_change_proto)(struct __sk_buff *skb, __be16 proto, __u64 flags) = (void *) 31; +static long (* const bpf_skb_change_proto)(struct __sk_buff *skb, __be16 proto, __u64 flags) = (void *) 31; /* * bpf_skb_change_type @@ -882,7 +896,7 @@ static long (*bpf_skb_change_proto)(struct __sk_buff *skb, __be16 proto, __u64 f * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_change_type)(struct __sk_buff *skb, __u32 type) = (void *) 32; +static long (* const bpf_skb_change_type)(struct __sk_buff *skb, __u32 type) = (void *) 32; /* * bpf_skb_under_cgroup @@ -897,7 +911,7 @@ static long (*bpf_skb_change_type)(struct __sk_buff *skb, __u32 type) = (void *) * * 1, if the *skb* succeeded the cgroup2 descendant test. * * A negative error code, if an error occurred. */ -static long (*bpf_skb_under_cgroup)(struct __sk_buff *skb, void *map, __u32 index) = (void *) 33; +static long (* const bpf_skb_under_cgroup)(struct __sk_buff *skb, void *map, __u32 index) = (void *) 33; /* * bpf_get_hash_recalc @@ -917,16 +931,17 @@ static long (*bpf_skb_under_cgroup)(struct __sk_buff *skb, void *map, __u32 inde * Returns * The 32-bit hash. */ -static __u32 (*bpf_get_hash_recalc)(struct __sk_buff *skb) = (void *) 34; +static __u32 (* const bpf_get_hash_recalc)(struct __sk_buff *skb) = (void *) 34; /* * bpf_get_current_task * + * Get the current task. * * Returns * A pointer to the current task struct. */ -static __u64 (*bpf_get_current_task)(void) = (void *) 35; +static __u64 (* const bpf_get_current_task)(void) = (void *) 35; /* * bpf_probe_write_user @@ -949,7 +964,7 @@ static __u64 (*bpf_get_current_task)(void) = (void *) 35; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_probe_write_user)(void *dst, const void *src, __u32 len) = (void *) 36; +static long (* const bpf_probe_write_user)(void *dst, const void *src, __u32 len) = (void *) 36; /* * bpf_current_task_under_cgroup @@ -961,11 +976,11 @@ static long (*bpf_probe_write_user)(void *dst, const void *src, __u32 len) = (vo * Returns * The return value depends on the result of the test, and can be: * - * * 0, if current task belongs to the cgroup2. - * * 1, if current task does not belong to the cgroup2. + * * 1, if current task belongs to the cgroup2. + * * 0, if current task does not belong to the cgroup2. * * A negative error code, if an error occurred. */ -static long (*bpf_current_task_under_cgroup)(void *map, __u32 index) = (void *) 37; +static long (* const bpf_current_task_under_cgroup)(void *map, __u32 index) = (void *) 37; /* * bpf_skb_change_tail @@ -993,7 +1008,7 @@ static long (*bpf_current_task_under_cgroup)(void *map, __u32 index) = (void *) * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_change_tail)(struct __sk_buff *skb, __u32 len, __u64 flags) = (void *) 38; +static long (* const bpf_skb_change_tail)(struct __sk_buff *skb, __u32 len, __u64 flags) = (void *) 38; /* * bpf_skb_pull_data @@ -1001,7 +1016,8 @@ static long (*bpf_skb_change_tail)(struct __sk_buff *skb, __u32 len, __u64 flags * Pull in non-linear data in case the *skb* is non-linear and not * all of *len* are part of the linear section. Make *len* bytes * from *skb* readable and writable. If a zero value is passed for - * *len*, then the whole length of the *skb* is pulled. + * *len*, then all bytes in the linear part of *skb* will be made + * readable and writable. * * This helper is only needed for reading and writing with direct * packet access. @@ -1033,7 +1049,7 @@ static long (*bpf_skb_change_tail)(struct __sk_buff *skb, __u32 len, __u64 flags * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_pull_data)(struct __sk_buff *skb, __u32 len) = (void *) 39; +static long (* const bpf_skb_pull_data)(struct __sk_buff *skb, __u32 len) = (void *) 39; /* * bpf_csum_update @@ -1049,7 +1065,7 @@ static long (*bpf_skb_pull_data)(struct __sk_buff *skb, __u32 len) = (void *) 39 * The checksum on success, or a negative error code in case of * failure. */ -static __s64 (*bpf_csum_update)(struct __sk_buff *skb, __wsum csum) = (void *) 40; +static __s64 (* const bpf_csum_update)(struct __sk_buff *skb, __wsum csum) = (void *) 40; /* * bpf_set_hash_invalid @@ -1060,8 +1076,10 @@ static __s64 (*bpf_csum_update)(struct __sk_buff *skb, __wsum csum) = (void *) 4 * recalculation the next time the kernel tries to access this * hash or when the **bpf_get_hash_recalc**\ () helper is called. * + * Returns + * void. */ -static void (*bpf_set_hash_invalid)(struct __sk_buff *skb) = (void *) 41; +static void (* const bpf_set_hash_invalid)(struct __sk_buff *skb) = (void *) 41; /* * bpf_get_numa_node_id @@ -1076,7 +1094,7 @@ static void (*bpf_set_hash_invalid)(struct __sk_buff *skb) = (void *) 41; * Returns * The id of current NUMA node. */ -static long (*bpf_get_numa_node_id)(void) = (void *) 42; +static long (* const bpf_get_numa_node_id)(void) = (void *) 42; /* * bpf_skb_change_head @@ -1101,7 +1119,7 @@ static long (*bpf_get_numa_node_id)(void) = (void *) 42; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_change_head)(struct __sk_buff *skb, __u32 len, __u64 flags) = (void *) 43; +static long (* const bpf_skb_change_head)(struct __sk_buff *skb, __u32 len, __u64 flags) = (void *) 43; /* * bpf_xdp_adjust_head @@ -1120,7 +1138,7 @@ static long (*bpf_skb_change_head)(struct __sk_buff *skb, __u32 len, __u64 flags * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_xdp_adjust_head)(struct xdp_md *xdp_md, int delta) = (void *) 44; +static long (* const bpf_xdp_adjust_head)(struct xdp_md *xdp_md, int delta) = (void *) 44; /* * bpf_probe_read_str @@ -1137,7 +1155,7 @@ static long (*bpf_xdp_adjust_head)(struct xdp_md *xdp_md, int delta) = (void *) * including the trailing NUL character. On error, a negative * value. */ -static long (*bpf_probe_read_str)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 45; +static long (* const bpf_probe_read_str)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 45; /* * bpf_get_socket_cookie @@ -1154,11 +1172,12 @@ static long (*bpf_probe_read_str)(void *dst, __u32 size, const void *unsafe_ptr) * A 8-byte long unique number on success, or 0 if the socket * field is missing inside *skb*. */ -static __u64 (*bpf_get_socket_cookie)(void *ctx) = (void *) 46; +static __u64 (* const bpf_get_socket_cookie)(void *ctx) = (void *) 46; /* * bpf_get_socket_uid * + * Get the owner UID of the socked associated to *skb*. * * Returns * The owner UID of the socket associated to *skb*. If the socket @@ -1167,7 +1186,7 @@ static __u64 (*bpf_get_socket_cookie)(void *ctx) = (void *) 46; * is returned (note that **overflowuid** might also be the actual * UID value for the socket). */ -static __u32 (*bpf_get_socket_uid)(struct __sk_buff *skb) = (void *) 47; +static __u32 (* const bpf_get_socket_uid)(struct __sk_buff *skb) = (void *) 47; /* * bpf_set_hash @@ -1178,7 +1197,7 @@ static __u32 (*bpf_get_socket_uid)(struct __sk_buff *skb) = (void *) 47; * Returns * 0 */ -static long (*bpf_set_hash)(struct __sk_buff *skb, __u32 hash) = (void *) 48; +static long (* const bpf_set_hash)(struct __sk_buff *skb, __u32 hash) = (void *) 48; /* * bpf_setsockopt @@ -1192,8 +1211,8 @@ static long (*bpf_set_hash)(struct __sk_buff *skb, __u32 hash) = (void *) 48; * *bpf_socket* should be one of the following: * * * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**. - * * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT** - * and **BPF_CGROUP_INET6_CONNECT**. + * * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**, + * **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**. * * This helper actually implements a subset of **setsockopt()**. * It supports the following *level*\ s: @@ -1201,19 +1220,24 @@ static long (*bpf_set_hash)(struct __sk_buff *skb, __u32 hash) = (void *) 48; * * **SOL_SOCKET**, which supports the following *optname*\ s: * **SO_RCVBUF**, **SO_SNDBUF**, **SO_MAX_PACING_RATE**, * **SO_PRIORITY**, **SO_RCVLOWAT**, **SO_MARK**, - * **SO_BINDTODEVICE**, **SO_KEEPALIVE**. + * **SO_BINDTODEVICE**, **SO_KEEPALIVE**, **SO_REUSEADDR**, + * **SO_REUSEPORT**, **SO_BINDTOIFINDEX**, **SO_TXREHASH**. * * **IPPROTO_TCP**, which supports the following *optname*\ s: * **TCP_CONGESTION**, **TCP_BPF_IW**, * **TCP_BPF_SNDCWND_CLAMP**, **TCP_SAVE_SYN**, * **TCP_KEEPIDLE**, **TCP_KEEPINTVL**, **TCP_KEEPCNT**, - * **TCP_SYNCNT**, **TCP_USER_TIMEOUT**, **TCP_NOTSENT_LOWAT**. + * **TCP_SYNCNT**, **TCP_USER_TIMEOUT**, **TCP_NOTSENT_LOWAT**, + * **TCP_NODELAY**, **TCP_MAXSEG**, **TCP_WINDOW_CLAMP**, + * **TCP_THIN_LINEAR_TIMEOUTS**, **TCP_BPF_DELACK_MAX**, + * **TCP_BPF_RTO_MIN**. * * **IPPROTO_IP**, which supports *optname* **IP_TOS**. - * * **IPPROTO_IPV6**, which supports *optname* **IPV6_TCLASS**. + * * **IPPROTO_IPV6**, which supports the following *optname*\ s: + * **IPV6_TCLASS**, **IPV6_AUTOFLOWLABEL**. * * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_setsockopt)(void *bpf_socket, int level, int optname, void *optval, int optlen) = (void *) 49; +static long (* const bpf_setsockopt)(void *bpf_socket, int level, int optname, void *optval, int optlen) = (void *) 49; /* * bpf_skb_adjust_room @@ -1231,10 +1255,12 @@ static long (*bpf_setsockopt)(void *bpf_socket, int level, int optname, void *op * There are two supported modes at this time: * * * **BPF_ADJ_ROOM_MAC**: Adjust room at the mac layer - * (room space is added or removed below the layer 2 header). + * (room space is added or removed between the layer 2 and + * layer 3 headers). * * * **BPF_ADJ_ROOM_NET**: Adjust room at the network layer - * (room space is added or removed below the layer 3 header). + * (room space is added or removed between the layer 3 and + * layer 4 headers). * * The following flags are supported at this time: * @@ -1258,6 +1284,11 @@ static long (*bpf_setsockopt)(void *bpf_socket, int level, int optname, void *op * Use with BPF_F_ADJ_ROOM_ENCAP_L2 flag to further specify the * L2 type as Ethernet. * + * * **BPF_F_ADJ_ROOM_DECAP_L3_IPV4**, + * **BPF_F_ADJ_ROOM_DECAP_L3_IPV6**: + * Indicate the new IP header version after decapsulating the outer + * IP header. Used when the inner and outer IP versions are different. + * * A call to this helper is susceptible to change the underlying * packet buffer. Therefore, at load time, all checks on pointers * previously done by the verifier are invalidated and must be @@ -1267,7 +1298,7 @@ static long (*bpf_setsockopt)(void *bpf_socket, int level, int optname, void *op * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_adjust_room)(struct __sk_buff *skb, __s32 len_diff, __u32 mode, __u64 flags) = (void *) 50; +static long (* const bpf_skb_adjust_room)(struct __sk_buff *skb, __s32 len_diff, __u32 mode, __u64 flags) = (void *) 50; /* * bpf_redirect_map @@ -1282,8 +1313,12 @@ static long (*bpf_skb_adjust_room)(struct __sk_buff *skb, __s32 len_diff, __u32 * The lower two bits of *flags* are used as the return code if * the map lookup fails. This is so that the return value can be * one of the XDP program return codes up to **XDP_TX**, as chosen - * by the caller. Any higher bits in the *flags* argument must be - * unset. + * by the caller. The higher bits of *flags* can be set to + * BPF_F_BROADCAST or BPF_F_EXCLUDE_INGRESS as defined below. + * + * With BPF_F_BROADCAST the packet will be broadcasted to all the + * interfaces in the map, with BPF_F_EXCLUDE_INGRESS the ingress + * interface will be excluded when do broadcasting. * * See also **bpf_redirect**\ (), which only supports redirecting * to an ifindex, but doesn't require a map to do so. @@ -1292,7 +1327,7 @@ static long (*bpf_skb_adjust_room)(struct __sk_buff *skb, __s32 len_diff, __u32 * **XDP_REDIRECT** on success, or the value of the two lower bits * of the *flags* argument on error. */ -static long (*bpf_redirect_map)(void *map, __u32 key, __u64 flags) = (void *) 51; +static long (* const bpf_redirect_map)(void *map, __u64 key, __u64 flags) = (void *) 51; /* * bpf_sk_redirect_map @@ -1307,7 +1342,7 @@ static long (*bpf_redirect_map)(void *map, __u32 key, __u64 flags) = (void *) 51 * Returns * **SK_PASS** on success, or **SK_DROP** on error. */ -static long (*bpf_sk_redirect_map)(struct __sk_buff *skb, void *map, __u32 key, __u64 flags) = (void *) 52; +static long (* const bpf_sk_redirect_map)(struct __sk_buff *skb, void *map, __u32 key, __u64 flags) = (void *) 52; /* * bpf_sock_map_update @@ -1330,7 +1365,7 @@ static long (*bpf_sk_redirect_map)(struct __sk_buff *skb, void *map, __u32 key, * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_sock_map_update)(struct bpf_sock_ops *skops, void *map, void *key, __u64 flags) = (void *) 53; +static long (* const bpf_sock_map_update)(struct bpf_sock_ops *skops, void *map, void *key, __u64 flags) = (void *) 53; /* * bpf_xdp_adjust_meta @@ -1363,7 +1398,7 @@ static long (*bpf_sock_map_update)(struct bpf_sock_ops *skops, void *map, void * * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_xdp_adjust_meta)(struct xdp_md *xdp_md, int delta) = (void *) 54; +static long (* const bpf_xdp_adjust_meta)(struct xdp_md *xdp_md, int delta) = (void *) 54; /* * bpf_perf_event_read_value @@ -1417,12 +1452,12 @@ static long (*bpf_xdp_adjust_meta)(struct xdp_md *xdp_md, int delta) = (void *) * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_perf_event_read_value)(void *map, __u64 flags, struct bpf_perf_event_value *buf, __u32 buf_size) = (void *) 55; +static long (* const bpf_perf_event_read_value)(void *map, __u64 flags, struct bpf_perf_event_value *buf, __u32 buf_size) = (void *) 55; /* * bpf_perf_prog_read_value * - * For en eBPF program attached to a perf event, retrieve the + * For an eBPF program attached to a perf event, retrieve the * value of the event counter associated to *ctx* and store it in * the structure pointed by *buf* and of size *buf_size*. Enabled * and running times are also stored in the structure (see @@ -1432,7 +1467,7 @@ static long (*bpf_perf_event_read_value)(void *map, __u64 flags, struct bpf_perf * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_perf_prog_read_value)(struct bpf_perf_event_data *ctx, struct bpf_perf_event_value *buf, __u32 buf_size) = (void *) 56; +static long (* const bpf_perf_prog_read_value)(struct bpf_perf_event_data *ctx, struct bpf_perf_event_value *buf, __u32 buf_size) = (void *) 56; /* * bpf_getsockopt @@ -1447,21 +1482,19 @@ static long (*bpf_perf_prog_read_value)(struct bpf_perf_event_data *ctx, struct * *bpf_socket* should be one of the following: * * * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**. - * * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT** - * and **BPF_CGROUP_INET6_CONNECT**. + * * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**, + * **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**. * * This helper actually implements a subset of **getsockopt()**. - * It supports the following *level*\ s: - * - * * **IPPROTO_TCP**, which supports *optname* - * **TCP_CONGESTION**. - * * **IPPROTO_IP**, which supports *optname* **IP_TOS**. - * * **IPPROTO_IPV6**, which supports *optname* **IPV6_TCLASS**. + * It supports the same set of *optname*\ s that is supported by + * the **bpf_setsockopt**\ () helper. The exceptions are + * **TCP_BPF_*** is **bpf_setsockopt**\ () only and + * **TCP_SAVED_SYN** is **bpf_getsockopt**\ () only. * * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_getsockopt)(void *bpf_socket, int level, int optname, void *optval, int optlen) = (void *) 57; +static long (* const bpf_getsockopt)(void *bpf_socket, int level, int optname, void *optval, int optlen) = (void *) 57; /* * bpf_override_return @@ -1490,7 +1523,7 @@ static long (*bpf_getsockopt)(void *bpf_socket, int level, int optname, void *op * Returns * 0 */ -static long (*bpf_override_return)(struct pt_regs *regs, __u64 rc) = (void *) 58; +static long (* const bpf_override_return)(struct pt_regs *regs, __u64 rc) = (void *) 58; /* * bpf_sock_ops_cb_flags_set @@ -1538,7 +1571,7 @@ static long (*bpf_override_return)(struct pt_regs *regs, __u64 rc) = (void *) 58 * be set is returned (which comes down to 0 if all bits were set * as required). */ -static long (*bpf_sock_ops_cb_flags_set)(struct bpf_sock_ops *bpf_sock, int argval) = (void *) 59; +static long (* const bpf_sock_ops_cb_flags_set)(struct bpf_sock_ops *bpf_sock, int argval) = (void *) 59; /* * bpf_msg_redirect_map @@ -1556,7 +1589,7 @@ static long (*bpf_sock_ops_cb_flags_set)(struct bpf_sock_ops *bpf_sock, int argv * Returns * **SK_PASS** on success, or **SK_DROP** on error. */ -static long (*bpf_msg_redirect_map)(struct sk_msg_md *msg, void *map, __u32 key, __u64 flags) = (void *) 60; +static long (* const bpf_msg_redirect_map)(struct sk_msg_md *msg, void *map, __u32 key, __u64 flags) = (void *) 60; /* * bpf_msg_apply_bytes @@ -1594,7 +1627,7 @@ static long (*bpf_msg_redirect_map)(struct sk_msg_md *msg, void *map, __u32 key, * Returns * 0 */ -static long (*bpf_msg_apply_bytes)(struct sk_msg_md *msg, __u32 bytes) = (void *) 61; +static long (* const bpf_msg_apply_bytes)(struct sk_msg_md *msg, __u32 bytes) = (void *) 61; /* * bpf_msg_cork_bytes @@ -1616,7 +1649,7 @@ static long (*bpf_msg_apply_bytes)(struct sk_msg_md *msg, __u32 bytes) = (void * * Returns * 0 */ -static long (*bpf_msg_cork_bytes)(struct sk_msg_md *msg, __u32 bytes) = (void *) 62; +static long (* const bpf_msg_cork_bytes)(struct sk_msg_md *msg, __u32 bytes) = (void *) 62; /* * bpf_msg_pull_data @@ -1651,7 +1684,7 @@ static long (*bpf_msg_cork_bytes)(struct sk_msg_md *msg, __u32 bytes) = (void *) * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_msg_pull_data)(struct sk_msg_md *msg, __u32 start, __u32 end, __u64 flags) = (void *) 63; +static long (* const bpf_msg_pull_data)(struct sk_msg_md *msg, __u32 start, __u32 end, __u64 flags) = (void *) 63; /* * bpf_bind @@ -1673,7 +1706,7 @@ static long (*bpf_msg_pull_data)(struct sk_msg_md *msg, __u32 start, __u32 end, * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_bind)(struct bpf_sock_addr *ctx, struct sockaddr *addr, int addr_len) = (void *) 64; +static long (* const bpf_bind)(struct bpf_sock_addr *ctx, struct sockaddr *addr, int addr_len) = (void *) 64; /* * bpf_xdp_adjust_tail @@ -1691,7 +1724,7 @@ static long (*bpf_bind)(struct bpf_sock_addr *ctx, struct sockaddr *addr, int ad * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_xdp_adjust_tail)(struct xdp_md *xdp_md, int delta) = (void *) 65; +static long (* const bpf_xdp_adjust_tail)(struct xdp_md *xdp_md, int delta) = (void *) 65; /* * bpf_skb_get_xfrm_state @@ -1711,7 +1744,7 @@ static long (*bpf_xdp_adjust_tail)(struct xdp_md *xdp_md, int delta) = (void *) * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_get_xfrm_state)(struct __sk_buff *skb, __u32 index, struct bpf_xfrm_state *xfrm_state, __u32 size, __u64 flags) = (void *) 66; +static long (* const bpf_skb_get_xfrm_state)(struct __sk_buff *skb, __u32 index, struct bpf_xfrm_state *xfrm_state, __u32 size, __u64 flags) = (void *) 66; /* * bpf_get_stack @@ -1730,8 +1763,18 @@ static long (*bpf_skb_get_xfrm_state)(struct __sk_buff *skb, __u32 index, struct * **BPF_F_USER_STACK** * Collect a user space stack instead of a kernel stack. * **BPF_F_USER_BUILD_ID** - * Collect buildid+offset instead of ips for user stack, - * only valid if **BPF_F_USER_STACK** is also specified. + * Collect (build_id, file_offset) instead of ips for user + * stack, only valid if **BPF_F_USER_STACK** is also + * specified. + * + * *file_offset* is an offset relative to the beginning + * of the executable or shared object file backing the vma + * which the *ip* falls in. It is *not* an offset relative + * to that object's base address. Accordingly, it must be + * adjusted by adding (sh_addr - sh_offset), where + * sh_{addr,offset} correspond to the executable section + * containing *file_offset* in the object, for comparisons + * to symbols' st_value to be valid. * * **bpf_get_stack**\ () can collect up to * **PERF_MAX_STACK_DEPTH** both kernel and user frames, subject @@ -1745,10 +1788,10 @@ static long (*bpf_skb_get_xfrm_state)(struct __sk_buff *skb, __u32 index, struct * # sysctl kernel.perf_event_max_stack= * * Returns - * A non-negative value equal to or less than *size* on success, - * or a negative error in case of failure. + * The non-negative copied *buf* length equal to or less than + * *size* on success, or a negative error in case of failure. */ -static long (*bpf_get_stack)(void *ctx, void *buf, __u32 size, __u64 flags) = (void *) 67; +static long (* const bpf_get_stack)(void *ctx, void *buf, __u32 size, __u64 flags) = (void *) 67; /* * bpf_skb_load_bytes_relative @@ -1774,7 +1817,7 @@ static long (*bpf_get_stack)(void *ctx, void *buf, __u32 size, __u64 flags) = (v * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_load_bytes_relative)(const void *skb, __u32 offset, void *to, __u32 len, __u32 start_header) = (void *) 68; +static long (* const bpf_skb_load_bytes_relative)(const void *skb, __u32 offset, void *to, __u32 len, __u32 start_header) = (void *) 68; /* * bpf_fib_lookup @@ -1796,9 +1839,23 @@ static long (*bpf_skb_load_bytes_relative)(const void *skb, __u32 offset, void * * **BPF_FIB_LOOKUP_DIRECT** * Do a direct table lookup vs full lookup using FIB * rules. + * **BPF_FIB_LOOKUP_TBID** + * Used with BPF_FIB_LOOKUP_DIRECT. + * Use the routing table ID present in *params*->tbid + * for the fib lookup. * **BPF_FIB_LOOKUP_OUTPUT** * Perform lookup from an egress perspective (default is * ingress). + * **BPF_FIB_LOOKUP_SKIP_NEIGH** + * Skip the neighbour table lookup. *params*->dmac + * and *params*->smac will not be set as output. A common + * use case is to call **bpf_redirect_neigh**\ () after + * doing **bpf_fib_lookup**\ (). + * **BPF_FIB_LOOKUP_SRC** + * Derive and set source IP addr in *params*->ipv{4,6}_src + * for the nexthop. If the src addr cannot be derived, + * **BPF_FIB_LKUP_RET_NO_SRC_ADDR** is returned. In this + * case, *params*->dmac and *params*->smac are not set either. * * *ctx* is either **struct xdp_md** for XDP programs or * **struct sk_buff** tc cls_act programs. @@ -1812,7 +1869,7 @@ static long (*bpf_skb_load_bytes_relative)(const void *skb, __u32 offset, void * * If lookup fails with BPF_FIB_LKUP_RET_FRAG_NEEDED, then the MTU * was exceeded and output params->mtu_result contains the MTU. */ -static long (*bpf_fib_lookup)(void *ctx, struct bpf_fib_lookup *params, int plen, __u32 flags) = (void *) 69; +static long (* const bpf_fib_lookup)(void *ctx, struct bpf_fib_lookup *params, int plen, __u32 flags) = (void *) 69; /* * bpf_sock_hash_update @@ -1835,7 +1892,7 @@ static long (*bpf_fib_lookup)(void *ctx, struct bpf_fib_lookup *params, int plen * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_sock_hash_update)(struct bpf_sock_ops *skops, void *map, void *key, __u64 flags) = (void *) 70; +static long (* const bpf_sock_hash_update)(struct bpf_sock_ops *skops, void *map, void *key, __u64 flags) = (void *) 70; /* * bpf_msg_redirect_hash @@ -1853,7 +1910,7 @@ static long (*bpf_sock_hash_update)(struct bpf_sock_ops *skops, void *map, void * Returns * **SK_PASS** on success, or **SK_DROP** on error. */ -static long (*bpf_msg_redirect_hash)(struct sk_msg_md *msg, void *map, void *key, __u64 flags) = (void *) 71; +static long (* const bpf_msg_redirect_hash)(struct sk_msg_md *msg, void *map, void *key, __u64 flags) = (void *) 71; /* * bpf_sk_redirect_hash @@ -1871,7 +1928,7 @@ static long (*bpf_msg_redirect_hash)(struct sk_msg_md *msg, void *map, void *key * Returns * **SK_PASS** on success, or **SK_DROP** on error. */ -static long (*bpf_sk_redirect_hash)(struct __sk_buff *skb, void *map, void *key, __u64 flags) = (void *) 72; +static long (* const bpf_sk_redirect_hash)(struct __sk_buff *skb, void *map, void *key, __u64 flags) = (void *) 72; /* * bpf_lwt_push_encap @@ -1912,7 +1969,7 @@ static long (*bpf_sk_redirect_hash)(struct __sk_buff *skb, void *map, void *key, * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_lwt_push_encap)(struct __sk_buff *skb, __u32 type, void *hdr, __u32 len) = (void *) 73; +static long (* const bpf_lwt_push_encap)(struct __sk_buff *skb, __u32 type, void *hdr, __u32 len) = (void *) 73; /* * bpf_lwt_seg6_store_bytes @@ -1931,7 +1988,7 @@ static long (*bpf_lwt_push_encap)(struct __sk_buff *skb, __u32 type, void *hdr, * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_lwt_seg6_store_bytes)(struct __sk_buff *skb, __u32 offset, const void *from, __u32 len) = (void *) 74; +static long (* const bpf_lwt_seg6_store_bytes)(struct __sk_buff *skb, __u32 offset, const void *from, __u32 len) = (void *) 74; /* * bpf_lwt_seg6_adjust_srh @@ -1951,7 +2008,7 @@ static long (*bpf_lwt_seg6_store_bytes)(struct __sk_buff *skb, __u32 offset, con * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_lwt_seg6_adjust_srh)(struct __sk_buff *skb, __u32 offset, __s32 delta) = (void *) 75; +static long (* const bpf_lwt_seg6_adjust_srh)(struct __sk_buff *skb, __u32 offset, __s32 delta) = (void *) 75; /* * bpf_lwt_seg6_action @@ -1984,7 +2041,7 @@ static long (*bpf_lwt_seg6_adjust_srh)(struct __sk_buff *skb, __u32 offset, __s3 * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_lwt_seg6_action)(struct __sk_buff *skb, __u32 action, void *param, __u32 param_len) = (void *) 76; +static long (* const bpf_lwt_seg6_action)(struct __sk_buff *skb, __u32 action, void *param, __u32 param_len) = (void *) 76; /* * bpf_rc_repeat @@ -2007,7 +2064,7 @@ static long (*bpf_lwt_seg6_action)(struct __sk_buff *skb, __u32 action, void *pa * Returns * 0 */ -static long (*bpf_rc_repeat)(void *ctx) = (void *) 77; +static long (* const bpf_rc_repeat)(void *ctx) = (void *) 77; /* * bpf_rc_keydown @@ -2037,7 +2094,7 @@ static long (*bpf_rc_repeat)(void *ctx) = (void *) 77; * Returns * 0 */ -static long (*bpf_rc_keydown)(void *ctx, __u32 protocol, __u64 scancode, __u32 toggle) = (void *) 78; +static long (* const bpf_rc_keydown)(void *ctx, __u32 protocol, __u64 scancode, __u32 toggle) = (void *) 78; /* * bpf_skb_cgroup_id @@ -2057,17 +2114,19 @@ static long (*bpf_rc_keydown)(void *ctx, __u32 protocol, __u64 scancode, __u32 t * Returns * The id is returned or 0 in case the id could not be retrieved. */ -static __u64 (*bpf_skb_cgroup_id)(struct __sk_buff *skb) = (void *) 79; +static __u64 (* const bpf_skb_cgroup_id)(struct __sk_buff *skb) = (void *) 79; /* * bpf_get_current_cgroup_id * + * Get the current cgroup id based on the cgroup within which + * the current task is running. * * Returns * A 64-bit integer containing the current cgroup id based * on the cgroup within which the current task is running. */ -static __u64 (*bpf_get_current_cgroup_id)(void) = (void *) 80; +static __u64 (* const bpf_get_current_cgroup_id)(void) = (void *) 80; /* * bpf_get_local_storage @@ -2089,20 +2148,20 @@ static __u64 (*bpf_get_current_cgroup_id)(void) = (void *) 80; * Returns * A pointer to the local storage area. */ -static void *(*bpf_get_local_storage)(void *map, __u64 flags) = (void *) 81; +static void *(* const bpf_get_local_storage)(void *map, __u64 flags) = (void *) 81; /* * bpf_sk_select_reuseport * * Select a **SO_REUSEPORT** socket from a - * **BPF_MAP_TYPE_REUSEPORT_ARRAY** *map*. + * **BPF_MAP_TYPE_REUSEPORT_SOCKARRAY** *map*. * It checks the selected socket is matching the incoming * request in the socket buffer. * * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_sk_select_reuseport)(struct sk_reuseport_md *reuse, void *map, void *key, __u64 flags) = (void *) 82; +static long (* const bpf_sk_select_reuseport)(struct sk_reuseport_md *reuse, void *map, void *key, __u64 flags) = (void *) 82; /* * bpf_skb_ancestor_cgroup_id @@ -2124,7 +2183,7 @@ static long (*bpf_sk_select_reuseport)(struct sk_reuseport_md *reuse, void *map, * Returns * The id is returned or 0 in case the id could not be retrieved. */ -static __u64 (*bpf_skb_ancestor_cgroup_id)(struct __sk_buff *skb, int ancestor_level) = (void *) 83; +static __u64 (* const bpf_skb_ancestor_cgroup_id)(struct __sk_buff *skb, int ancestor_level) = (void *) 83; /* * bpf_sk_lookup_tcp @@ -2165,7 +2224,7 @@ static __u64 (*bpf_skb_ancestor_cgroup_id)(struct __sk_buff *skb, int ancestor_l * result is from *reuse*\ **->socks**\ [] using the hash of the * tuple. */ -static struct bpf_sock *(*bpf_sk_lookup_tcp)(void *ctx, struct bpf_sock_tuple *tuple, __u32 tuple_size, __u64 netns, __u64 flags) = (void *) 84; +static struct bpf_sock *(* const bpf_sk_lookup_tcp)(void *ctx, struct bpf_sock_tuple *tuple, __u32 tuple_size, __u64 netns, __u64 flags) = (void *) 84; /* * bpf_sk_lookup_udp @@ -2206,7 +2265,7 @@ static struct bpf_sock *(*bpf_sk_lookup_tcp)(void *ctx, struct bpf_sock_tuple *t * result is from *reuse*\ **->socks**\ [] using the hash of the * tuple. */ -static struct bpf_sock *(*bpf_sk_lookup_udp)(void *ctx, struct bpf_sock_tuple *tuple, __u32 tuple_size, __u64 netns, __u64 flags) = (void *) 85; +static struct bpf_sock *(* const bpf_sk_lookup_udp)(void *ctx, struct bpf_sock_tuple *tuple, __u32 tuple_size, __u64 netns, __u64 flags) = (void *) 85; /* * bpf_sk_release @@ -2218,7 +2277,7 @@ static struct bpf_sock *(*bpf_sk_lookup_udp)(void *ctx, struct bpf_sock_tuple *t * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_sk_release)(void *sock) = (void *) 86; +static long (* const bpf_sk_release)(void *sock) = (void *) 86; /* * bpf_map_push_elem @@ -2232,7 +2291,7 @@ static long (*bpf_sk_release)(void *sock) = (void *) 86; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_map_push_elem)(void *map, const void *value, __u64 flags) = (void *) 87; +static long (* const bpf_map_push_elem)(void *map, const void *value, __u64 flags) = (void *) 87; /* * bpf_map_pop_elem @@ -2242,7 +2301,7 @@ static long (*bpf_map_push_elem)(void *map, const void *value, __u64 flags) = (v * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_map_pop_elem)(void *map, void *value) = (void *) 88; +static long (* const bpf_map_pop_elem)(void *map, void *value) = (void *) 88; /* * bpf_map_peek_elem @@ -2252,7 +2311,7 @@ static long (*bpf_map_pop_elem)(void *map, void *value) = (void *) 88; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_map_peek_elem)(void *map, void *value) = (void *) 89; +static long (* const bpf_map_peek_elem)(void *map, void *value) = (void *) 89; /* * bpf_msg_push_data @@ -2272,7 +2331,7 @@ static long (*bpf_map_peek_elem)(void *map, void *value) = (void *) 89; * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_msg_push_data)(struct sk_msg_md *msg, __u32 start, __u32 len, __u64 flags) = (void *) 90; +static long (* const bpf_msg_push_data)(struct sk_msg_md *msg, __u32 start, __u32 len, __u64 flags) = (void *) 90; /* * bpf_msg_pop_data @@ -2288,7 +2347,7 @@ static long (*bpf_msg_push_data)(struct sk_msg_md *msg, __u32 start, __u32 len, * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_msg_pop_data)(struct sk_msg_md *msg, __u32 start, __u32 len, __u64 flags) = (void *) 91; +static long (* const bpf_msg_pop_data)(struct sk_msg_md *msg, __u32 start, __u32 len, __u64 flags) = (void *) 91; /* * bpf_rc_pointer_rel @@ -2306,7 +2365,7 @@ static long (*bpf_msg_pop_data)(struct sk_msg_md *msg, __u32 start, __u32 len, _ * Returns * 0 */ -static long (*bpf_rc_pointer_rel)(void *ctx, __s32 rel_x, __s32 rel_y) = (void *) 92; +static long (* const bpf_rc_pointer_rel)(void *ctx, __s32 rel_x, __s32 rel_y) = (void *) 92; /* * bpf_spin_lock @@ -2358,7 +2417,7 @@ static long (*bpf_rc_pointer_rel)(void *ctx, __s32 rel_x, __s32 rel_y) = (void * * Returns * 0 */ -static long (*bpf_spin_lock)(struct bpf_spin_lock *lock) = (void *) 93; +static long (* const bpf_spin_lock)(struct bpf_spin_lock *lock) = (void *) 93; /* * bpf_spin_unlock @@ -2369,7 +2428,7 @@ static long (*bpf_spin_lock)(struct bpf_spin_lock *lock) = (void *) 93; * Returns * 0 */ -static long (*bpf_spin_unlock)(struct bpf_spin_lock *lock) = (void *) 94; +static long (* const bpf_spin_unlock)(struct bpf_spin_lock *lock) = (void *) 94; /* * bpf_sk_fullsock @@ -2381,7 +2440,7 @@ static long (*bpf_spin_unlock)(struct bpf_spin_lock *lock) = (void *) 94; * A **struct bpf_sock** pointer on success, or **NULL** in * case of failure. */ -static struct bpf_sock *(*bpf_sk_fullsock)(struct bpf_sock *sk) = (void *) 95; +static struct bpf_sock *(* const bpf_sk_fullsock)(struct bpf_sock *sk) = (void *) 95; /* * bpf_tcp_sock @@ -2393,7 +2452,7 @@ static struct bpf_sock *(*bpf_sk_fullsock)(struct bpf_sock *sk) = (void *) 95; * A **struct bpf_tcp_sock** pointer on success, or **NULL** in * case of failure. */ -static struct bpf_tcp_sock *(*bpf_tcp_sock)(struct bpf_sock *sk) = (void *) 96; +static struct bpf_tcp_sock *(* const bpf_tcp_sock)(struct bpf_sock *sk) = (void *) 96; /* * bpf_skb_ecn_set_ce @@ -2407,7 +2466,7 @@ static struct bpf_tcp_sock *(*bpf_tcp_sock)(struct bpf_sock *sk) = (void *) 96; * 1 if the **CE** flag is set (either by the current helper call * or because it was already present), 0 if it is not set. */ -static long (*bpf_skb_ecn_set_ce)(struct __sk_buff *skb) = (void *) 97; +static long (* const bpf_skb_ecn_set_ce)(struct __sk_buff *skb) = (void *) 97; /* * bpf_get_listener_sock @@ -2419,7 +2478,7 @@ static long (*bpf_skb_ecn_set_ce)(struct __sk_buff *skb) = (void *) 97; * A **struct bpf_sock** pointer on success, or **NULL** in * case of failure. */ -static struct bpf_sock *(*bpf_get_listener_sock)(struct bpf_sock *sk) = (void *) 98; +static struct bpf_sock *(* const bpf_get_listener_sock)(struct bpf_sock *sk) = (void *) 98; /* * bpf_skc_lookup_tcp @@ -2442,7 +2501,7 @@ static struct bpf_sock *(*bpf_get_listener_sock)(struct bpf_sock *sk) = (void *) * result is from *reuse*\ **->socks**\ [] using the hash of the * tuple. */ -static struct bpf_sock *(*bpf_skc_lookup_tcp)(void *ctx, struct bpf_sock_tuple *tuple, __u32 tuple_size, __u64 netns, __u64 flags) = (void *) 99; +static struct bpf_sock *(* const bpf_skc_lookup_tcp)(void *ctx, struct bpf_sock_tuple *tuple, __u32 tuple_size, __u64 netns, __u64 flags) = (void *) 99; /* * bpf_tcp_check_syncookie @@ -2452,16 +2511,17 @@ static struct bpf_sock *(*bpf_skc_lookup_tcp)(void *ctx, struct bpf_sock_tuple * * * *iph* points to the start of the IPv4 or IPv6 header, while * *iph_len* contains **sizeof**\ (**struct iphdr**) or - * **sizeof**\ (**struct ip6hdr**). + * **sizeof**\ (**struct ipv6hdr**). * * *th* points to the start of the TCP header, while *th_len* - * contains **sizeof**\ (**struct tcphdr**). + * contains the length of the TCP header (at least + * **sizeof**\ (**struct tcphdr**)). * * Returns * 0 if *iph* and *th* are a valid SYN cookie ACK, or a negative * error otherwise. */ -static long (*bpf_tcp_check_syncookie)(void *sk, void *iph, __u32 iph_len, struct tcphdr *th, __u32 th_len) = (void *) 100; +static long (* const bpf_tcp_check_syncookie)(void *sk, void *iph, __u32 iph_len, struct tcphdr *th, __u32 th_len) = (void *) 100; /* * bpf_sysctl_get_name @@ -2481,7 +2541,7 @@ static long (*bpf_tcp_check_syncookie)(void *sk, void *iph, __u32 iph_len, struc * **-E2BIG** if the buffer wasn't big enough (*buf* will contain * truncated name in this case). */ -static long (*bpf_sysctl_get_name)(struct bpf_sysctl *ctx, char *buf, unsigned long buf_len, __u64 flags) = (void *) 101; +static long (* const bpf_sysctl_get_name)(struct bpf_sysctl *ctx, char *buf, unsigned long buf_len, __u64 flags) = (void *) 101; /* * bpf_sysctl_get_current_value @@ -2504,7 +2564,7 @@ static long (*bpf_sysctl_get_name)(struct bpf_sysctl *ctx, char *buf, unsigned l * **-EINVAL** if current value was unavailable, e.g. because * sysctl is uninitialized and read returns -EIO for it. */ -static long (*bpf_sysctl_get_current_value)(struct bpf_sysctl *ctx, char *buf, unsigned long buf_len) = (void *) 102; +static long (* const bpf_sysctl_get_current_value)(struct bpf_sysctl *ctx, char *buf, unsigned long buf_len) = (void *) 102; /* * bpf_sysctl_get_new_value @@ -2525,7 +2585,7 @@ static long (*bpf_sysctl_get_current_value)(struct bpf_sysctl *ctx, char *buf, u * * **-EINVAL** if sysctl is being read. */ -static long (*bpf_sysctl_get_new_value)(struct bpf_sysctl *ctx, char *buf, unsigned long buf_len) = (void *) 103; +static long (* const bpf_sysctl_get_new_value)(struct bpf_sysctl *ctx, char *buf, unsigned long buf_len) = (void *) 103; /* * bpf_sysctl_set_new_value @@ -2546,7 +2606,7 @@ static long (*bpf_sysctl_get_new_value)(struct bpf_sysctl *ctx, char *buf, unsig * * **-EINVAL** if sysctl is being read. */ -static long (*bpf_sysctl_set_new_value)(struct bpf_sysctl *ctx, const char *buf, unsigned long buf_len) = (void *) 104; +static long (* const bpf_sysctl_set_new_value)(struct bpf_sysctl *ctx, const char *buf, unsigned long buf_len) = (void *) 104; /* * bpf_strtol @@ -2574,7 +2634,7 @@ static long (*bpf_sysctl_set_new_value)(struct bpf_sysctl *ctx, const char *buf, * * **-ERANGE** if resulting value was out of range. */ -static long (*bpf_strtol)(const char *buf, unsigned long buf_len, __u64 flags, long *res) = (void *) 105; +static long (* const bpf_strtol)(const char *buf, unsigned long buf_len, __u64 flags, long *res) = (void *) 105; /* * bpf_strtoul @@ -2601,7 +2661,7 @@ static long (*bpf_strtol)(const char *buf, unsigned long buf_len, __u64 flags, l * * **-ERANGE** if resulting value was out of range. */ -static long (*bpf_strtoul)(const char *buf, unsigned long buf_len, __u64 flags, unsigned long *res) = (void *) 106; +static long (* const bpf_strtoul)(const char *buf, unsigned long buf_len, __u64 flags, unsigned long *res) = (void *) 106; /* * bpf_sk_storage_get @@ -2636,7 +2696,7 @@ static long (*bpf_strtoul)(const char *buf, unsigned long buf_len, __u64 flags, * **NULL** if not found or there was an error in adding * a new bpf-local-storage. */ -static void *(*bpf_sk_storage_get)(void *map, void *sk, void *value, __u64 flags) = (void *) 107; +static void *(* const bpf_sk_storage_get)(void *map, void *sk, void *value, __u64 flags) = (void *) 107; /* * bpf_sk_storage_delete @@ -2649,7 +2709,7 @@ static void *(*bpf_sk_storage_get)(void *map, void *sk, void *value, __u64 flags * **-ENOENT** if the bpf-local-storage cannot be found. * **-EINVAL** if sk is not a fullsock (e.g. a request_sock). */ -static long (*bpf_sk_storage_delete)(void *map, void *sk) = (void *) 108; +static long (* const bpf_sk_storage_delete)(void *map, void *sk) = (void *) 108; /* * bpf_send_signal @@ -2668,7 +2728,7 @@ static long (*bpf_sk_storage_delete)(void *map, void *sk) = (void *) 108; * * **-EAGAIN** if bpf program can try again. */ -static long (*bpf_send_signal)(__u32 sig) = (void *) 109; +static long (* const bpf_send_signal)(__u32 sig) = (void *) 109; /* * bpf_tcp_gen_syncookie @@ -2678,10 +2738,11 @@ static long (*bpf_send_signal)(__u32 sig) = (void *) 109; * * *iph* points to the start of the IPv4 or IPv6 header, while * *iph_len* contains **sizeof**\ (**struct iphdr**) or - * **sizeof**\ (**struct ip6hdr**). + * **sizeof**\ (**struct ipv6hdr**). * * *th* points to the start of the TCP header, while *th_len* - * contains the length of the TCP header. + * contains the length of the TCP header with options (at least + * **sizeof**\ (**struct tcphdr**)). * * Returns * On success, lower 32 bits hold the generated SYN cookie in @@ -2698,7 +2759,7 @@ static long (*bpf_send_signal)(__u32 sig) = (void *) 109; * * **-EPROTONOSUPPORT** IP packet version is not 4 or 6 */ -static __s64 (*bpf_tcp_gen_syncookie)(void *sk, void *iph, __u32 iph_len, struct tcphdr *th, __u32 th_len) = (void *) 110; +static __s64 (* const bpf_tcp_gen_syncookie)(void *sk, void *iph, __u32 iph_len, struct tcphdr *th, __u32 th_len) = (void *) 110; /* * bpf_skb_output @@ -2726,7 +2787,7 @@ static __s64 (*bpf_tcp_gen_syncookie)(void *sk, void *iph, __u32 iph_len, struct * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_skb_output)(void *ctx, void *map, __u64 flags, void *data, __u64 size) = (void *) 111; +static long (* const bpf_skb_output)(void *ctx, void *map, __u64 flags, void *data, __u64 size) = (void *) 111; /* * bpf_probe_read_user @@ -2737,7 +2798,7 @@ static long (*bpf_skb_output)(void *ctx, void *map, __u64 flags, void *data, __u * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_probe_read_user)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 112; +static long (* const bpf_probe_read_user)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 112; /* * bpf_probe_read_kernel @@ -2748,7 +2809,7 @@ static long (*bpf_probe_read_user)(void *dst, __u32 size, const void *unsafe_ptr * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_probe_read_kernel)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 113; +static long (* const bpf_probe_read_kernel)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 113; /* * bpf_probe_read_user_str @@ -2796,7 +2857,7 @@ static long (*bpf_probe_read_kernel)(void *dst, __u32 size, const void *unsafe_p * including the trailing NUL character. On error, a negative * value. */ -static long (*bpf_probe_read_user_str)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 114; +static long (* const bpf_probe_read_user_str)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 114; /* * bpf_probe_read_kernel_str @@ -2808,7 +2869,7 @@ static long (*bpf_probe_read_user_str)(void *dst, __u32 size, const void *unsafe * On success, the strictly positive length of the string, including * the trailing NUL character. On error, a negative value. */ -static long (*bpf_probe_read_kernel_str)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 115; +static long (* const bpf_probe_read_kernel_str)(void *dst, __u32 size, const void *unsafe_ptr) = (void *) 115; /* * bpf_tcp_send_ack @@ -2819,7 +2880,7 @@ static long (*bpf_probe_read_kernel_str)(void *dst, __u32 size, const void *unsa * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_tcp_send_ack)(void *tp, __u32 rcv_nxt) = (void *) 116; +static long (* const bpf_tcp_send_ack)(void *tp, __u32 rcv_nxt) = (void *) 116; /* * bpf_send_signal_thread @@ -2837,7 +2898,7 @@ static long (*bpf_tcp_send_ack)(void *tp, __u32 rcv_nxt) = (void *) 116; * * **-EAGAIN** if bpf program can try again. */ -static long (*bpf_send_signal_thread)(__u32 sig) = (void *) 117; +static long (* const bpf_send_signal_thread)(__u32 sig) = (void *) 117; /* * bpf_jiffies64 @@ -2847,7 +2908,7 @@ static long (*bpf_send_signal_thread)(__u32 sig) = (void *) 117; * Returns * The 64 bit jiffies */ -static __u64 (*bpf_jiffies64)(void) = (void *) 118; +static __u64 (* const bpf_jiffies64)(void) = (void *) 118; /* * bpf_read_branch_records @@ -2870,7 +2931,7 @@ static __u64 (*bpf_jiffies64)(void) = (void *) 118; * * **-ENOENT** if architecture does not support branch records. */ -static long (*bpf_read_branch_records)(struct bpf_perf_event_data *ctx, void *buf, __u32 size, __u64 flags) = (void *) 119; +static long (* const bpf_read_branch_records)(struct bpf_perf_event_data *ctx, void *buf, __u32 size, __u64 flags) = (void *) 119; /* * bpf_get_ns_current_pid_tgid @@ -2886,7 +2947,7 @@ static long (*bpf_read_branch_records)(struct bpf_perf_event_data *ctx, void *bu * * **-ENOENT** if pidns does not exists for the current task. */ -static long (*bpf_get_ns_current_pid_tgid)(__u64 dev, __u64 ino, struct bpf_pidns_info *nsdata, __u32 size) = (void *) 120; +static long (* const bpf_get_ns_current_pid_tgid)(__u64 dev, __u64 ino, struct bpf_pidns_info *nsdata, __u32 size) = (void *) 120; /* * bpf_xdp_output @@ -2914,7 +2975,7 @@ static long (*bpf_get_ns_current_pid_tgid)(__u64 dev, __u64 ino, struct bpf_pidn * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_xdp_output)(void *ctx, void *map, __u64 flags, void *data, __u64 size) = (void *) 121; +static long (* const bpf_xdp_output)(void *ctx, void *map, __u64 flags, void *data, __u64 size) = (void *) 121; /* * bpf_get_netns_cookie @@ -2931,7 +2992,7 @@ static long (*bpf_xdp_output)(void *ctx, void *map, __u64 flags, void *data, __u * Returns * A 8-byte long opaque number. */ -static __u64 (*bpf_get_netns_cookie)(void *ctx) = (void *) 122; +static __u64 (* const bpf_get_netns_cookie)(void *ctx) = (void *) 122; /* * bpf_get_current_ancestor_cgroup_id @@ -2953,7 +3014,7 @@ static __u64 (*bpf_get_netns_cookie)(void *ctx) = (void *) 122; * Returns * The id is returned or 0 in case the id could not be retrieved. */ -static __u64 (*bpf_get_current_ancestor_cgroup_id)(int ancestor_level) = (void *) 123; +static __u64 (* const bpf_get_current_ancestor_cgroup_id)(int ancestor_level) = (void *) 123; /* * bpf_sk_assign @@ -2984,11 +3045,8 @@ static __u64 (*bpf_get_current_ancestor_cgroup_id)(int ancestor_level) = (void * * * **-EOPNOTSUPP** if the operation is not supported, for example * a call from outside of TC ingress. - * - * **-ESOCKTNOSUPPORT** if the socket type is not supported - * (reuseport). */ -static long (*bpf_sk_assign)(void *ctx, void *sk, __u64 flags) = (void *) 124; +static long (* const bpf_sk_assign)(void *ctx, void *sk, __u64 flags) = (void *) 124; /* * bpf_ktime_get_boot_ns @@ -3000,7 +3058,7 @@ static long (*bpf_sk_assign)(void *ctx, void *sk, __u64 flags) = (void *) 124; * Returns * Current *ktime*. */ -static __u64 (*bpf_ktime_get_boot_ns)(void) = (void *) 125; +static __u64 (* const bpf_ktime_get_boot_ns)(void) = (void *) 125; /* * bpf_seq_printf @@ -3012,7 +3070,7 @@ static __u64 (*bpf_ktime_get_boot_ns)(void) = (void *) 125; * arguments. The *data* are a **u64** array and corresponding format string * values are stored in the array. For strings and pointers where pointees * are accessed, only the pointer values are stored in the *data* array. - * The *data_len* is the size of *data* in bytes. + * The *data_len* is the size of *data* in bytes - must be a multiple of 8. * * Formats **%s**, **%p{i,I}{4,6}** requires to read kernel memory. * Reading kernel memory may fail due to either invalid address or @@ -3033,7 +3091,7 @@ static __u64 (*bpf_ktime_get_boot_ns)(void) = (void *) 125; * * **-EOVERFLOW** if an overflow happened: The same object will be tried again. */ -static long (*bpf_seq_printf)(struct seq_file *m, const char *fmt, __u32 fmt_size, const void *data, __u32 data_len) = (void *) 126; +static long (* const bpf_seq_printf)(struct seq_file *m, const char *fmt, __u32 fmt_size, const void *data, __u32 data_len) = (void *) 126; /* * bpf_seq_write @@ -3047,7 +3105,7 @@ static long (*bpf_seq_printf)(struct seq_file *m, const char *fmt, __u32 fmt_siz * * **-EOVERFLOW** if an overflow happened: The same object will be tried again. */ -static long (*bpf_seq_write)(struct seq_file *m, const void *data, __u32 len) = (void *) 127; +static long (* const bpf_seq_write)(struct seq_file *m, const void *data, __u32 len) = (void *) 127; /* * bpf_sk_cgroup_id @@ -3065,7 +3123,7 @@ static long (*bpf_seq_write)(struct seq_file *m, const void *data, __u32 len) = * Returns * The id is returned or 0 in case the id could not be retrieved. */ -static __u64 (*bpf_sk_cgroup_id)(void *sk) = (void *) 128; +static __u64 (* const bpf_sk_cgroup_id)(void *sk) = (void *) 128; /* * bpf_sk_ancestor_cgroup_id @@ -3087,7 +3145,7 @@ static __u64 (*bpf_sk_cgroup_id)(void *sk) = (void *) 128; * Returns * The id is returned or 0 in case the id could not be retrieved. */ -static __u64 (*bpf_sk_ancestor_cgroup_id)(void *sk, int ancestor_level) = (void *) 129; +static __u64 (* const bpf_sk_ancestor_cgroup_id)(void *sk, int ancestor_level) = (void *) 129; /* * bpf_ringbuf_output @@ -3108,7 +3166,7 @@ static __u64 (*bpf_sk_ancestor_cgroup_id)(void *sk, int ancestor_level) = (void * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_ringbuf_output)(void *ringbuf, void *data, __u64 size, __u64 flags) = (void *) 130; +static long (* const bpf_ringbuf_output)(void *ringbuf, void *data, __u64 size, __u64 flags) = (void *) 130; /* * bpf_ringbuf_reserve @@ -3120,7 +3178,7 @@ static long (*bpf_ringbuf_output)(void *ringbuf, void *data, __u64 size, __u64 f * Valid pointer with *size* bytes of memory available; NULL, * otherwise. */ -static void *(*bpf_ringbuf_reserve)(void *ringbuf, __u64 size, __u64 flags) = (void *) 131; +static void *(* const bpf_ringbuf_reserve)(void *ringbuf, __u64 size, __u64 flags) = (void *) 131; /* * bpf_ringbuf_submit @@ -3138,7 +3196,7 @@ static void *(*bpf_ringbuf_reserve)(void *ringbuf, __u64 size, __u64 flags) = (v * Returns * Nothing. Always succeeds. */ -static void (*bpf_ringbuf_submit)(void *data, __u64 flags) = (void *) 132; +static void (* const bpf_ringbuf_submit)(void *data, __u64 flags) = (void *) 132; /* * bpf_ringbuf_discard @@ -3156,7 +3214,7 @@ static void (*bpf_ringbuf_submit)(void *data, __u64 flags) = (void *) 132; * Returns * Nothing. Always succeeds. */ -static void (*bpf_ringbuf_discard)(void *data, __u64 flags) = (void *) 133; +static void (* const bpf_ringbuf_discard)(void *data, __u64 flags) = (void *) 133; /* * bpf_ringbuf_query @@ -3177,7 +3235,7 @@ static void (*bpf_ringbuf_discard)(void *data, __u64 flags) = (void *) 133; * Returns * Requested value, or 0, if *flags* are not recognized. */ -static __u64 (*bpf_ringbuf_query)(void *ringbuf, __u64 flags) = (void *) 134; +static __u64 (* const bpf_ringbuf_query)(void *ringbuf, __u64 flags) = (void *) 134; /* * bpf_csum_level @@ -3213,7 +3271,7 @@ static __u64 (*bpf_ringbuf_query)(void *ringbuf, __u64 flags) = (void *) 134; * is returned or the error code -EACCES in case the skb is not * subject to CHECKSUM_UNNECESSARY. */ -static long (*bpf_csum_level)(struct __sk_buff *skb, __u64 level) = (void *) 135; +static long (* const bpf_csum_level)(struct __sk_buff *skb, __u64 level) = (void *) 135; /* * bpf_skc_to_tcp6_sock @@ -3223,7 +3281,7 @@ static long (*bpf_csum_level)(struct __sk_buff *skb, __u64 level) = (void *) 135 * Returns * *sk* if casting is valid, or **NULL** otherwise. */ -static struct tcp6_sock *(*bpf_skc_to_tcp6_sock)(void *sk) = (void *) 136; +static struct tcp6_sock *(* const bpf_skc_to_tcp6_sock)(void *sk) = (void *) 136; /* * bpf_skc_to_tcp_sock @@ -3233,7 +3291,7 @@ static struct tcp6_sock *(*bpf_skc_to_tcp6_sock)(void *sk) = (void *) 136; * Returns * *sk* if casting is valid, or **NULL** otherwise. */ -static struct tcp_sock *(*bpf_skc_to_tcp_sock)(void *sk) = (void *) 137; +static struct tcp_sock *(* const bpf_skc_to_tcp_sock)(void *sk) = (void *) 137; /* * bpf_skc_to_tcp_timewait_sock @@ -3243,7 +3301,7 @@ static struct tcp_sock *(*bpf_skc_to_tcp_sock)(void *sk) = (void *) 137; * Returns * *sk* if casting is valid, or **NULL** otherwise. */ -static struct tcp_timewait_sock *(*bpf_skc_to_tcp_timewait_sock)(void *sk) = (void *) 138; +static struct tcp_timewait_sock *(* const bpf_skc_to_tcp_timewait_sock)(void *sk) = (void *) 138; /* * bpf_skc_to_tcp_request_sock @@ -3253,7 +3311,7 @@ static struct tcp_timewait_sock *(*bpf_skc_to_tcp_timewait_sock)(void *sk) = (vo * Returns * *sk* if casting is valid, or **NULL** otherwise. */ -static struct tcp_request_sock *(*bpf_skc_to_tcp_request_sock)(void *sk) = (void *) 139; +static struct tcp_request_sock *(* const bpf_skc_to_tcp_request_sock)(void *sk) = (void *) 139; /* * bpf_skc_to_udp6_sock @@ -3263,12 +3321,14 @@ static struct tcp_request_sock *(*bpf_skc_to_tcp_request_sock)(void *sk) = (void * Returns * *sk* if casting is valid, or **NULL** otherwise. */ -static struct udp6_sock *(*bpf_skc_to_udp6_sock)(void *sk) = (void *) 140; +static struct udp6_sock *(* const bpf_skc_to_udp6_sock)(void *sk) = (void *) 140; /* * bpf_get_task_stack * * Return a user or a kernel stack in bpf program provided buffer. + * Note: the user stack will only be populated if the *task* is + * the current task; all other tasks will return -EOPNOTSUPP. * To achieve this, the helper needs *task*, which is a valid * pointer to **struct task_struct**. To store the stacktrace, the * bpf program provides *buf* with a nonnegative *size*. @@ -3280,6 +3340,7 @@ static struct udp6_sock *(*bpf_skc_to_udp6_sock)(void *sk) = (void *) 140; * * **BPF_F_USER_STACK** * Collect a user space stack instead of a kernel stack. + * The *task* must be the current task. * **BPF_F_USER_BUILD_ID** * Collect buildid+offset instead of ips for user stack, * only valid if **BPF_F_USER_STACK** is also specified. @@ -3296,10 +3357,10 @@ static struct udp6_sock *(*bpf_skc_to_udp6_sock)(void *sk) = (void *) 140; * # sysctl kernel.perf_event_max_stack= * * Returns - * A non-negative value equal to or less than *size* on success, - * or a negative error in case of failure. + * The non-negative copied *buf* length equal to or less than + * *size* on success, or a negative error in case of failure. */ -static long (*bpf_get_task_stack)(struct task_struct *task, void *buf, __u32 size, __u64 flags) = (void *) 141; +static long (* const bpf_get_task_stack)(struct task_struct *task, void *buf, __u32 size, __u64 flags) = (void *) 141; /* * bpf_load_hdr_opt @@ -3366,7 +3427,7 @@ static long (*bpf_get_task_stack)(struct task_struct *task, void *buf, __u32 siz * **-EPERM** if the helper cannot be used under the current * *skops*\ **->op**. */ -static long (*bpf_load_hdr_opt)(struct bpf_sock_ops *skops, void *searchby_res, __u32 len, __u64 flags) = (void *) 142; +static long (* const bpf_load_hdr_opt)(struct bpf_sock_ops *skops, void *searchby_res, __u32 len, __u64 flags) = (void *) 142; /* * bpf_store_hdr_opt @@ -3398,12 +3459,12 @@ static long (*bpf_load_hdr_opt)(struct bpf_sock_ops *skops, void *searchby_res, * * **-EEXIST** if the option already exists. * - * **-EFAULT** on failrue to parse the existing header options. + * **-EFAULT** on failure to parse the existing header options. * * **-EPERM** if the helper cannot be used under the current * *skops*\ **->op**. */ -static long (*bpf_store_hdr_opt)(struct bpf_sock_ops *skops, const void *from, __u32 len, __u64 flags) = (void *) 143; +static long (* const bpf_store_hdr_opt)(struct bpf_sock_ops *skops, const void *from, __u32 len, __u64 flags) = (void *) 143; /* * bpf_reserve_hdr_opt @@ -3429,7 +3490,7 @@ static long (*bpf_store_hdr_opt)(struct bpf_sock_ops *skops, const void *from, _ * **-EPERM** if the helper cannot be used under the current * *skops*\ **->op**. */ -static long (*bpf_reserve_hdr_opt)(struct bpf_sock_ops *skops, __u32 len, __u64 flags) = (void *) 144; +static long (* const bpf_reserve_hdr_opt)(struct bpf_sock_ops *skops, __u32 len, __u64 flags) = (void *) 144; /* * bpf_inode_storage_get @@ -3461,7 +3522,7 @@ static long (*bpf_reserve_hdr_opt)(struct bpf_sock_ops *skops, __u32 len, __u64 * **NULL** if not found or there was an error in adding * a new bpf_local_storage. */ -static void *(*bpf_inode_storage_get)(void *map, void *inode, void *value, __u64 flags) = (void *) 145; +static void *(* const bpf_inode_storage_get)(void *map, void *inode, void *value, __u64 flags) = (void *) 145; /* * bpf_inode_storage_delete @@ -3473,7 +3534,7 @@ static void *(*bpf_inode_storage_get)(void *map, void *inode, void *value, __u64 * * **-ENOENT** if the bpf_local_storage cannot be found. */ -static int (*bpf_inode_storage_delete)(void *map, void *inode) = (void *) 146; +static int (* const bpf_inode_storage_delete)(void *map, void *inode) = (void *) 146; /* * bpf_d_path @@ -3489,7 +3550,7 @@ static int (*bpf_inode_storage_delete)(void *map, void *inode) = (void *) 146; * including the trailing NUL character. On error, a negative * value. */ -static long (*bpf_d_path)(struct path *path, char *buf, __u32 sz) = (void *) 147; +static long (* const bpf_d_path)(struct path *path, char *buf, __u32 sz) = (void *) 147; /* * bpf_copy_from_user @@ -3500,7 +3561,7 @@ static long (*bpf_d_path)(struct path *path, char *buf, __u32 sz) = (void *) 147 * Returns * 0 on success, or a negative error in case of failure. */ -static long (*bpf_copy_from_user)(void *dst, __u32 size, const void *user_ptr) = (void *) 148; +static long (* const bpf_copy_from_user)(void *dst, __u32 size, const void *user_ptr) = (void *) 148; /* * bpf_snprintf_btf @@ -3540,7 +3601,7 @@ static long (*bpf_copy_from_user)(void *dst, __u32 size, const void *user_ptr) = * written if output had to be truncated due to string size), * or a negative error in cases of failure. */ -static long (*bpf_snprintf_btf)(char *str, __u32 str_size, struct btf_ptr *ptr, __u32 btf_ptr_size, __u64 flags) = (void *) 149; +static long (* const bpf_snprintf_btf)(char *str, __u32 str_size, struct btf_ptr *ptr, __u32 btf_ptr_size, __u64 flags) = (void *) 149; /* * bpf_seq_printf_btf @@ -3552,7 +3613,7 @@ static long (*bpf_snprintf_btf)(char *str, __u32 str_size, struct btf_ptr *ptr, * Returns * 0 on success or a negative error in case of failure. */ -static long (*bpf_seq_printf_btf)(struct seq_file *m, struct btf_ptr *ptr, __u32 ptr_size, __u64 flags) = (void *) 150; +static long (* const bpf_seq_printf_btf)(struct seq_file *m, struct btf_ptr *ptr, __u32 ptr_size, __u64 flags) = (void *) 150; /* * bpf_skb_cgroup_classid @@ -3565,7 +3626,7 @@ static long (*bpf_seq_printf_btf)(struct seq_file *m, struct btf_ptr *ptr, __u32 * Returns * The id is returned or 0 in case the id could not be retrieved. */ -static __u64 (*bpf_skb_cgroup_classid)(struct __sk_buff *skb) = (void *) 151; +static __u64 (* const bpf_skb_cgroup_classid)(struct __sk_buff *skb) = (void *) 151; /* * bpf_redirect_neigh @@ -3590,7 +3651,7 @@ static __u64 (*bpf_skb_cgroup_classid)(struct __sk_buff *skb) = (void *) 151; * The helper returns **TC_ACT_REDIRECT** on success or * **TC_ACT_SHOT** on error. */ -static long (*bpf_redirect_neigh)(__u32 ifindex, struct bpf_redir_neigh *params, int plen, __u64 flags) = (void *) 152; +static long (* const bpf_redirect_neigh)(__u32 ifindex, struct bpf_redir_neigh *params, int plen, __u64 flags) = (void *) 152; /* * bpf_per_cpu_ptr @@ -3611,7 +3672,7 @@ static long (*bpf_redirect_neigh)(__u32 ifindex, struct bpf_redir_neigh *params, * A pointer pointing to the kernel percpu variable on *cpu*, or * NULL, if *cpu* is invalid. */ -static void *(*bpf_per_cpu_ptr)(const void *percpu_ptr, __u32 cpu) = (void *) 153; +static void *(* const bpf_per_cpu_ptr)(const void *percpu_ptr, __u32 cpu) = (void *) 153; /* * bpf_this_cpu_ptr @@ -3627,7 +3688,7 @@ static void *(*bpf_per_cpu_ptr)(const void *percpu_ptr, __u32 cpu) = (void *) 15 * Returns * A pointer pointing to the kernel percpu variable on this cpu. */ -static void *(*bpf_this_cpu_ptr)(const void *percpu_ptr) = (void *) 154; +static void *(* const bpf_this_cpu_ptr)(const void *percpu_ptr) = (void *) 154; /* * bpf_redirect_peer @@ -3639,15 +3700,15 @@ static void *(*bpf_this_cpu_ptr)(const void *percpu_ptr) = (void *) 154; * going through the CPU's backlog queue. * * The *flags* argument is reserved and must be 0. The helper is - * currently only supported for tc BPF program types at the ingress - * hook and for veth device types. The peer device must reside in a - * different network namespace. + * currently only supported for tc BPF program types at the + * ingress hook and for veth and netkit target device types. The + * peer device must reside in a different network namespace. * * Returns * The helper returns **TC_ACT_REDIRECT** on success or * **TC_ACT_SHOT** on error. */ -static long (*bpf_redirect_peer)(__u32 ifindex, __u64 flags) = (void *) 155; +static long (* const bpf_redirect_peer)(__u32 ifindex, __u64 flags) = (void *) 155; /* * bpf_task_storage_get @@ -3658,7 +3719,7 @@ static long (*bpf_redirect_peer)(__u32 ifindex, __u64 flags) = (void *) 155; * a *map* with *task* as the **key**. From this * perspective, the usage is not much different from * **bpf_map_lookup_elem**\ (*map*, **&**\ *task*) except this - * helper enforces the key must be an task_struct and the map must also + * helper enforces the key must be a task_struct and the map must also * be a **BPF_MAP_TYPE_TASK_STORAGE**. * * Underneath, the value is stored locally at *task* instead of @@ -3679,7 +3740,7 @@ static long (*bpf_redirect_peer)(__u32 ifindex, __u64 flags) = (void *) 155; * **NULL** if not found or there was an error in adding * a new bpf_local_storage. */ -static void *(*bpf_task_storage_get)(void *map, struct task_struct *task, void *value, __u64 flags) = (void *) 156; +static void *(* const bpf_task_storage_get)(void *map, struct task_struct *task, void *value, __u64 flags) = (void *) 156; /* * bpf_task_storage_delete @@ -3691,7 +3752,7 @@ static void *(*bpf_task_storage_get)(void *map, struct task_struct *task, void * * * **-ENOENT** if the bpf_local_storage cannot be found. */ -static long (*bpf_task_storage_delete)(void *map, struct task_struct *task) = (void *) 157; +static long (* const bpf_task_storage_delete)(void *map, struct task_struct *task) = (void *) 157; /* * bpf_get_current_task_btf @@ -3703,7 +3764,7 @@ static long (*bpf_task_storage_delete)(void *map, struct task_struct *task) = (v * Returns * Pointer to the current task. */ -static struct task_struct *(*bpf_get_current_task_btf)(void) = (void *) 158; +static struct task_struct *(* const bpf_get_current_task_btf)(void) = (void *) 158; /* * bpf_bprm_opts_set @@ -3717,7 +3778,7 @@ static struct task_struct *(*bpf_get_current_task_btf)(void) = (void *) 158; * Returns * **-EINVAL** if invalid *flags* are passed, zero otherwise. */ -static long (*bpf_bprm_opts_set)(struct linux_binprm *bprm, __u64 flags) = (void *) 159; +static long (* const bpf_bprm_opts_set)(struct linux_binprm *bprm, __u64 flags) = (void *) 159; /* * bpf_ktime_get_coarse_ns @@ -3731,12 +3792,12 @@ static long (*bpf_bprm_opts_set)(struct linux_binprm *bprm, __u64 flags) = (void * Returns * Current *ktime*. */ -static __u64 (*bpf_ktime_get_coarse_ns)(void) = (void *) 160; +static __u64 (* const bpf_ktime_get_coarse_ns)(void) = (void *) 160; /* * bpf_ima_inode_hash * - * Returns the stored IMA hash of the *inode* (if it's avaialable). + * Returns the stored IMA hash of the *inode* (if it's available). * If the hash is larger than *size*, then only *size* * bytes will be copied to *dst* * @@ -3745,7 +3806,7 @@ static __u64 (*bpf_ktime_get_coarse_ns)(void) = (void *) 160; * **-EOPNOTSUP** if IMA is disabled or **-EINVAL** if * invalid arguments are passed. */ -static long (*bpf_ima_inode_hash)(struct inode *inode, void *dst, __u32 size) = (void *) 161; +static long (* const bpf_ima_inode_hash)(struct inode *inode, void *dst, __u32 size) = (void *) 161; /* * bpf_sock_from_file @@ -3757,7 +3818,7 @@ static long (*bpf_ima_inode_hash)(struct inode *inode, void *dst, __u32 size) = * A pointer to a struct socket on success or NULL if the file is * not a socket. */ -static struct socket *(*bpf_sock_from_file)(struct file *file) = (void *) 162; +static struct socket *(* const bpf_sock_from_file)(struct file *file) = (void *) 162; /* * bpf_check_mtu @@ -3768,12 +3829,12 @@ static struct socket *(*bpf_sock_from_file)(struct file *file) = (void *) 162; * * The argument *len_diff* can be used for querying with a planned * size change. This allows to check MTU prior to changing packet - * ctx. Providing an *len_diff* adjustment that is larger than the + * ctx. Providing a *len_diff* adjustment that is larger than the * actual packet size (resulting in negative packet size) will in - * principle not exceed the MTU, why it is not considered a - * failure. Other BPF-helpers are needed for performing the - * planned size change, why the responsability for catch a negative - * packet size belong in those helpers. + * principle not exceed the MTU, which is why it is not considered + * a failure. Other BPF helpers are needed for performing the + * planned size change; therefore the responsibility for catching + * a negative packet size belongs in those helpers. * * Specifying *ifindex* zero means the MTU check is performed * against the current net device. This is practical if this isn't @@ -3828,7 +3889,7 @@ static struct socket *(*bpf_sock_from_file)(struct file *file) = (void *) 162; * * **BPF_MTU_CHK_RET_FRAG_NEEDED** * * **BPF_MTU_CHK_RET_SEGS_TOOBIG** */ -static long (*bpf_check_mtu)(void *ctx, __u32 ifindex, __u32 *mtu_len, __s32 len_diff, __u64 flags) = (void *) 163; +static long (* const bpf_check_mtu)(void *ctx, __u32 ifindex, __u32 *mtu_len, __s32 len_diff, __u64 flags) = (void *) 163; /* * bpf_for_each_map_elem @@ -3861,7 +3922,7 @@ static long (*bpf_check_mtu)(void *ctx, __u32 ifindex, __u32 *mtu_len, __s32 len * The number of traversed map elements for success, **-EINVAL** for * invalid **flags**. */ -static long (*bpf_for_each_map_elem)(void *map, void *callback_fn, void *callback_ctx, __u64 flags) = (void *) 164; +static long (* const bpf_for_each_map_elem)(void *map, void *callback_fn, void *callback_ctx, __u64 flags) = (void *) 164; /* * bpf_snprintf @@ -3873,7 +3934,8 @@ static long (*bpf_for_each_map_elem)(void *map, void *callback_fn, void *callbac * Each format specifier in **fmt** corresponds to one u64 element * in the **data** array. For strings and pointers where pointees * are accessed, only the pointer values are stored in the *data* - * array. The *data_len* is the size of *data* in bytes. + * array. The *data_len* is the size of *data* in bytes - must be + * a multiple of 8. * * Formats **%s** and **%p{i,I}{4,6}** require to read kernel * memory. Reading kernel memory may fail due to either invalid @@ -3892,4 +3954,816 @@ static long (*bpf_for_each_map_elem)(void *map, void *callback_fn, void *callbac * * Or **-EBUSY** if the per-CPU memory copy buffer is busy. */ -static long (*bpf_snprintf)(char *str, __u32 str_size, const char *fmt, __u64 *data, __u32 data_len) = (void *) 165; +static long (* const bpf_snprintf)(char *str, __u32 str_size, const char *fmt, __u64 *data, __u32 data_len) = (void *) 165; + +/* + * bpf_sys_bpf + * + * Execute bpf syscall with given arguments. + * + * Returns + * A syscall result. + */ +static long (* const bpf_sys_bpf)(__u32 cmd, void *attr, __u32 attr_size) = (void *) 166; + +/* + * bpf_btf_find_by_name_kind + * + * Find BTF type with given name and kind in vmlinux BTF or in module's BTFs. + * + * Returns + * Returns btf_id and btf_obj_fd in lower and upper 32 bits. + */ +static long (* const bpf_btf_find_by_name_kind)(char *name, int name_sz, __u32 kind, int flags) = (void *) 167; + +/* + * bpf_sys_close + * + * Execute close syscall for given FD. + * + * Returns + * A syscall result. + */ +static long (* const bpf_sys_close)(__u32 fd) = (void *) 168; + +/* + * bpf_timer_init + * + * Initialize the timer. + * First 4 bits of *flags* specify clockid. + * Only CLOCK_MONOTONIC, CLOCK_REALTIME, CLOCK_BOOTTIME are allowed. + * All other bits of *flags* are reserved. + * The verifier will reject the program if *timer* is not from + * the same *map*. + * + * Returns + * 0 on success. + * **-EBUSY** if *timer* is already initialized. + * **-EINVAL** if invalid *flags* are passed. + * **-EPERM** if *timer* is in a map that doesn't have any user references. + * The user space should either hold a file descriptor to a map with timers + * or pin such map in bpffs. When map is unpinned or file descriptor is + * closed all timers in the map will be cancelled and freed. + */ +static long (* const bpf_timer_init)(struct bpf_timer *timer, void *map, __u64 flags) = (void *) 169; + +/* + * bpf_timer_set_callback + * + * Configure the timer to call *callback_fn* static function. + * + * Returns + * 0 on success. + * **-EINVAL** if *timer* was not initialized with bpf_timer_init() earlier. + * **-EPERM** if *timer* is in a map that doesn't have any user references. + * The user space should either hold a file descriptor to a map with timers + * or pin such map in bpffs. When map is unpinned or file descriptor is + * closed all timers in the map will be cancelled and freed. + */ +static long (* const bpf_timer_set_callback)(struct bpf_timer *timer, void *callback_fn) = (void *) 170; + +/* + * bpf_timer_start + * + * Set timer expiration N nanoseconds from the current time. The + * configured callback will be invoked in soft irq context on some cpu + * and will not repeat unless another bpf_timer_start() is made. + * In such case the next invocation can migrate to a different cpu. + * Since struct bpf_timer is a field inside map element the map + * owns the timer. The bpf_timer_set_callback() will increment refcnt + * of BPF program to make sure that callback_fn code stays valid. + * When user space reference to a map reaches zero all timers + * in a map are cancelled and corresponding program's refcnts are + * decremented. This is done to make sure that Ctrl-C of a user + * process doesn't leave any timers running. If map is pinned in + * bpffs the callback_fn can re-arm itself indefinitely. + * bpf_map_update/delete_elem() helpers and user space sys_bpf commands + * cancel and free the timer in the given map element. + * The map can contain timers that invoke callback_fn-s from different + * programs. The same callback_fn can serve different timers from + * different maps if key/value layout matches across maps. + * Every bpf_timer_set_callback() can have different callback_fn. + * + * *flags* can be one of: + * + * **BPF_F_TIMER_ABS** + * Start the timer in absolute expire value instead of the + * default relative one. + * **BPF_F_TIMER_CPU_PIN** + * Timer will be pinned to the CPU of the caller. + * + * + * Returns + * 0 on success. + * **-EINVAL** if *timer* was not initialized with bpf_timer_init() earlier + * or invalid *flags* are passed. + */ +static long (* const bpf_timer_start)(struct bpf_timer *timer, __u64 nsecs, __u64 flags) = (void *) 171; + +/* + * bpf_timer_cancel + * + * Cancel the timer and wait for callback_fn to finish if it was running. + * + * Returns + * 0 if the timer was not active. + * 1 if the timer was active. + * **-EINVAL** if *timer* was not initialized with bpf_timer_init() earlier. + * **-EDEADLK** if callback_fn tried to call bpf_timer_cancel() on its + * own timer which would have led to a deadlock otherwise. + */ +static long (* const bpf_timer_cancel)(struct bpf_timer *timer) = (void *) 172; + +/* + * bpf_get_func_ip + * + * Get address of the traced function (for tracing and kprobe programs). + * + * When called for kprobe program attached as uprobe it returns + * probe address for both entry and return uprobe. + * + * + * Returns + * Address of the traced function for kprobe. + * 0 for kprobes placed within the function (not at the entry). + * Address of the probe for uprobe and return uprobe. + */ +static __u64 (* const bpf_get_func_ip)(void *ctx) = (void *) 173; + +/* + * bpf_get_attach_cookie + * + * Get bpf_cookie value provided (optionally) during the program + * attachment. It might be different for each individual + * attachment, even if BPF program itself is the same. + * Expects BPF program context *ctx* as a first argument. + * + * Supported for the following program types: + * - kprobe/uprobe; + * - tracepoint; + * - perf_event. + * + * Returns + * Value specified by user at BPF link creation/attachment time + * or 0, if it was not specified. + */ +static __u64 (* const bpf_get_attach_cookie)(void *ctx) = (void *) 174; + +/* + * bpf_task_pt_regs + * + * Get the struct pt_regs associated with **task**. + * + * Returns + * A pointer to struct pt_regs. + */ +static long (* const bpf_task_pt_regs)(struct task_struct *task) = (void *) 175; + +/* + * bpf_get_branch_snapshot + * + * Get branch trace from hardware engines like Intel LBR. The + * hardware engine is stopped shortly after the helper is + * called. Therefore, the user need to filter branch entries + * based on the actual use case. To capture branch trace + * before the trigger point of the BPF program, the helper + * should be called at the beginning of the BPF program. + * + * The data is stored as struct perf_branch_entry into output + * buffer *entries*. *size* is the size of *entries* in bytes. + * *flags* is reserved for now and must be zero. + * + * + * Returns + * On success, number of bytes written to *buf*. On error, a + * negative value. + * + * **-EINVAL** if *flags* is not zero. + * + * **-ENOENT** if architecture does not support branch records. + */ +static long (* const bpf_get_branch_snapshot)(void *entries, __u32 size, __u64 flags) = (void *) 176; + +/* + * bpf_trace_vprintk + * + * Behaves like **bpf_trace_printk**\ () helper, but takes an array of u64 + * to format and can handle more format args as a result. + * + * Arguments are to be used as in **bpf_seq_printf**\ () helper. + * + * Returns + * The number of bytes written to the buffer, or a negative error + * in case of failure. + */ +static long (* const bpf_trace_vprintk)(const char *fmt, __u32 fmt_size, const void *data, __u32 data_len) = (void *) 177; + +/* + * bpf_skc_to_unix_sock + * + * Dynamically cast a *sk* pointer to a *unix_sock* pointer. + * + * Returns + * *sk* if casting is valid, or **NULL** otherwise. + */ +static struct unix_sock *(* const bpf_skc_to_unix_sock)(void *sk) = (void *) 178; + +/* + * bpf_kallsyms_lookup_name + * + * Get the address of a kernel symbol, returned in *res*. *res* is + * set to 0 if the symbol is not found. + * + * Returns + * On success, zero. On error, a negative value. + * + * **-EINVAL** if *flags* is not zero. + * + * **-EINVAL** if string *name* is not the same size as *name_sz*. + * + * **-ENOENT** if symbol is not found. + * + * **-EPERM** if caller does not have permission to obtain kernel address. + */ +static long (* const bpf_kallsyms_lookup_name)(const char *name, int name_sz, int flags, __u64 *res) = (void *) 179; + +/* + * bpf_find_vma + * + * Find vma of *task* that contains *addr*, call *callback_fn* + * function with *task*, *vma*, and *callback_ctx*. + * The *callback_fn* should be a static function and + * the *callback_ctx* should be a pointer to the stack. + * The *flags* is used to control certain aspects of the helper. + * Currently, the *flags* must be 0. + * + * The expected callback signature is + * + * long (\*callback_fn)(struct task_struct \*task, struct vm_area_struct \*vma, void \*callback_ctx); + * + * + * Returns + * 0 on success. + * **-ENOENT** if *task->mm* is NULL, or no vma contains *addr*. + * **-EBUSY** if failed to try lock mmap_lock. + * **-EINVAL** for invalid **flags**. + */ +static long (* const bpf_find_vma)(struct task_struct *task, __u64 addr, void *callback_fn, void *callback_ctx, __u64 flags) = (void *) 180; + +/* + * bpf_loop + * + * For **nr_loops**, call **callback_fn** function + * with **callback_ctx** as the context parameter. + * The **callback_fn** should be a static function and + * the **callback_ctx** should be a pointer to the stack. + * The **flags** is used to control certain aspects of the helper. + * Currently, the **flags** must be 0. Currently, nr_loops is + * limited to 1 << 23 (~8 million) loops. + * + * long (\*callback_fn)(u32 index, void \*ctx); + * + * where **index** is the current index in the loop. The index + * is zero-indexed. + * + * If **callback_fn** returns 0, the helper will continue to the next + * loop. If return value is 1, the helper will skip the rest of + * the loops and return. Other return values are not used now, + * and will be rejected by the verifier. + * + * + * Returns + * The number of loops performed, **-EINVAL** for invalid **flags**, + * **-E2BIG** if **nr_loops** exceeds the maximum number of loops. + */ +static long (* const bpf_loop)(__u32 nr_loops, void *callback_fn, void *callback_ctx, __u64 flags) = (void *) 181; + +/* + * bpf_strncmp + * + * Do strncmp() between **s1** and **s2**. **s1** doesn't need + * to be null-terminated and **s1_sz** is the maximum storage + * size of **s1**. **s2** must be a read-only string. + * + * Returns + * An integer less than, equal to, or greater than zero + * if the first **s1_sz** bytes of **s1** is found to be + * less than, to match, or be greater than **s2**. + */ +static long (* const bpf_strncmp)(const char *s1, __u32 s1_sz, const char *s2) = (void *) 182; + +/* + * bpf_get_func_arg + * + * Get **n**-th argument register (zero based) of the traced function (for tracing programs) + * returned in **value**. + * + * + * Returns + * 0 on success. + * **-EINVAL** if n >= argument register count of traced function. + */ +static long (* const bpf_get_func_arg)(void *ctx, __u32 n, __u64 *value) = (void *) 183; + +/* + * bpf_get_func_ret + * + * Get return value of the traced function (for tracing programs) + * in **value**. + * + * + * Returns + * 0 on success. + * **-EOPNOTSUPP** for tracing programs other than BPF_TRACE_FEXIT or BPF_MODIFY_RETURN. + */ +static long (* const bpf_get_func_ret)(void *ctx, __u64 *value) = (void *) 184; + +/* + * bpf_get_func_arg_cnt + * + * Get number of registers of the traced function (for tracing programs) where + * function arguments are stored in these registers. + * + * + * Returns + * The number of argument registers of the traced function. + */ +static long (* const bpf_get_func_arg_cnt)(void *ctx) = (void *) 185; + +/* + * bpf_get_retval + * + * Get the BPF program's return value that will be returned to the upper layers. + * + * This helper is currently supported by cgroup programs and only by the hooks + * where BPF program's return value is returned to the userspace via errno. + * + * Returns + * The BPF program's return value. + */ +static int (* const bpf_get_retval)(void) = (void *) 186; + +/* + * bpf_set_retval + * + * Set the BPF program's return value that will be returned to the upper layers. + * + * This helper is currently supported by cgroup programs and only by the hooks + * where BPF program's return value is returned to the userspace via errno. + * + * Note that there is the following corner case where the program exports an error + * via bpf_set_retval but signals success via 'return 1': + * + * bpf_set_retval(-EPERM); + * return 1; + * + * In this case, the BPF program's return value will use helper's -EPERM. This + * still holds true for cgroup/bind{4,6} which supports extra 'return 3' success case. + * + * + * Returns + * 0 on success, or a negative error in case of failure. + */ +static int (* const bpf_set_retval)(int retval) = (void *) 187; + +/* + * bpf_xdp_get_buff_len + * + * Get the total size of a given xdp buff (linear and paged area) + * + * Returns + * The total size of a given xdp buffer. + */ +static __u64 (* const bpf_xdp_get_buff_len)(struct xdp_md *xdp_md) = (void *) 188; + +/* + * bpf_xdp_load_bytes + * + * This helper is provided as an easy way to load data from a + * xdp buffer. It can be used to load *len* bytes from *offset* from + * the frame associated to *xdp_md*, into the buffer pointed by + * *buf*. + * + * Returns + * 0 on success, or a negative error in case of failure. + */ +static long (* const bpf_xdp_load_bytes)(struct xdp_md *xdp_md, __u32 offset, void *buf, __u32 len) = (void *) 189; + +/* + * bpf_xdp_store_bytes + * + * Store *len* bytes from buffer *buf* into the frame + * associated to *xdp_md*, at *offset*. + * + * Returns + * 0 on success, or a negative error in case of failure. + */ +static long (* const bpf_xdp_store_bytes)(struct xdp_md *xdp_md, __u32 offset, void *buf, __u32 len) = (void *) 190; + +/* + * bpf_copy_from_user_task + * + * Read *size* bytes from user space address *user_ptr* in *tsk*'s + * address space, and stores the data in *dst*. *flags* is not + * used yet and is provided for future extensibility. This helper + * can only be used by sleepable programs. + * + * Returns + * 0 on success, or a negative error in case of failure. On error + * *dst* buffer is zeroed out. + */ +static long (* const bpf_copy_from_user_task)(void *dst, __u32 size, const void *user_ptr, struct task_struct *tsk, __u64 flags) = (void *) 191; + +/* + * bpf_skb_set_tstamp + * + * Change the __sk_buff->tstamp_type to *tstamp_type* + * and set *tstamp* to the __sk_buff->tstamp together. + * + * If there is no need to change the __sk_buff->tstamp_type, + * the tstamp value can be directly written to __sk_buff->tstamp + * instead. + * + * BPF_SKB_TSTAMP_DELIVERY_MONO is the only tstamp that + * will be kept during bpf_redirect_*(). A non zero + * *tstamp* must be used with the BPF_SKB_TSTAMP_DELIVERY_MONO + * *tstamp_type*. + * + * A BPF_SKB_TSTAMP_UNSPEC *tstamp_type* can only be used + * with a zero *tstamp*. + * + * Only IPv4 and IPv6 skb->protocol are supported. + * + * This function is most useful when it needs to set a + * mono delivery time to __sk_buff->tstamp and then + * bpf_redirect_*() to the egress of an iface. For example, + * changing the (rcv) timestamp in __sk_buff->tstamp at + * ingress to a mono delivery time and then bpf_redirect_*() + * to sch_fq@phy-dev. + * + * Returns + * 0 on success. + * **-EINVAL** for invalid input + * **-EOPNOTSUPP** for unsupported protocol + */ +static long (* const bpf_skb_set_tstamp)(struct __sk_buff *skb, __u64 tstamp, __u32 tstamp_type) = (void *) 192; + +/* + * bpf_ima_file_hash + * + * Returns a calculated IMA hash of the *file*. + * If the hash is larger than *size*, then only *size* + * bytes will be copied to *dst* + * + * Returns + * The **hash_algo** is returned on success, + * **-EOPNOTSUP** if the hash calculation failed or **-EINVAL** if + * invalid arguments are passed. + */ +static long (* const bpf_ima_file_hash)(struct file *file, void *dst, __u32 size) = (void *) 193; + +/* + * bpf_kptr_xchg + * + * Exchange kptr at pointer *map_value* with *ptr*, and return the + * old value. *ptr* can be NULL, otherwise it must be a referenced + * pointer which will be released when this helper is called. + * + * Returns + * The old value of kptr (which can be NULL). The returned pointer + * if not NULL, is a reference which must be released using its + * corresponding release function, or moved into a BPF map before + * program exit. + */ +static void *(* const bpf_kptr_xchg)(void *map_value, void *ptr) = (void *) 194; + +/* + * bpf_map_lookup_percpu_elem + * + * Perform a lookup in *percpu map* for an entry associated to + * *key* on *cpu*. + * + * Returns + * Map value associated to *key* on *cpu*, or **NULL** if no entry + * was found or *cpu* is invalid. + */ +static void *(* const bpf_map_lookup_percpu_elem)(void *map, const void *key, __u32 cpu) = (void *) 195; + +/* + * bpf_skc_to_mptcp_sock + * + * Dynamically cast a *sk* pointer to a *mptcp_sock* pointer. + * + * Returns + * *sk* if casting is valid, or **NULL** otherwise. + */ +static struct mptcp_sock *(* const bpf_skc_to_mptcp_sock)(void *sk) = (void *) 196; + +/* + * bpf_dynptr_from_mem + * + * Get a dynptr to local memory *data*. + * + * *data* must be a ptr to a map value. + * The maximum *size* supported is DYNPTR_MAX_SIZE. + * *flags* is currently unused. + * + * Returns + * 0 on success, -E2BIG if the size exceeds DYNPTR_MAX_SIZE, + * -EINVAL if flags is not 0. + */ +static long (* const bpf_dynptr_from_mem)(void *data, __u32 size, __u64 flags, struct bpf_dynptr *ptr) = (void *) 197; + +/* + * bpf_ringbuf_reserve_dynptr + * + * Reserve *size* bytes of payload in a ring buffer *ringbuf* + * through the dynptr interface. *flags* must be 0. + * + * Please note that a corresponding bpf_ringbuf_submit_dynptr or + * bpf_ringbuf_discard_dynptr must be called on *ptr*, even if the + * reservation fails. This is enforced by the verifier. + * + * Returns + * 0 on success, or a negative error in case of failure. + */ +static long (* const bpf_ringbuf_reserve_dynptr)(void *ringbuf, __u32 size, __u64 flags, struct bpf_dynptr *ptr) = (void *) 198; + +/* + * bpf_ringbuf_submit_dynptr + * + * Submit reserved ring buffer sample, pointed to by *data*, + * through the dynptr interface. This is a no-op if the dynptr is + * invalid/null. + * + * For more information on *flags*, please see + * 'bpf_ringbuf_submit'. + * + * Returns + * Nothing. Always succeeds. + */ +static void (* const bpf_ringbuf_submit_dynptr)(struct bpf_dynptr *ptr, __u64 flags) = (void *) 199; + +/* + * bpf_ringbuf_discard_dynptr + * + * Discard reserved ring buffer sample through the dynptr + * interface. This is a no-op if the dynptr is invalid/null. + * + * For more information on *flags*, please see + * 'bpf_ringbuf_discard'. + * + * Returns + * Nothing. Always succeeds. + */ +static void (* const bpf_ringbuf_discard_dynptr)(struct bpf_dynptr *ptr, __u64 flags) = (void *) 200; + +/* + * bpf_dynptr_read + * + * Read *len* bytes from *src* into *dst*, starting from *offset* + * into *src*. + * *flags* is currently unused. + * + * Returns + * 0 on success, -E2BIG if *offset* + *len* exceeds the length + * of *src*'s data, -EINVAL if *src* is an invalid dynptr or if + * *flags* is not 0. + */ +static long (* const bpf_dynptr_read)(void *dst, __u32 len, const struct bpf_dynptr *src, __u32 offset, __u64 flags) = (void *) 201; + +/* + * bpf_dynptr_write + * + * Write *len* bytes from *src* into *dst*, starting from *offset* + * into *dst*. + * + * *flags* must be 0 except for skb-type dynptrs. + * + * For skb-type dynptrs: + * * All data slices of the dynptr are automatically + * invalidated after **bpf_dynptr_write**\ (). This is + * because writing may pull the skb and change the + * underlying packet buffer. + * + * * For *flags*, please see the flags accepted by + * **bpf_skb_store_bytes**\ (). + * + * Returns + * 0 on success, -E2BIG if *offset* + *len* exceeds the length + * of *dst*'s data, -EINVAL if *dst* is an invalid dynptr or if *dst* + * is a read-only dynptr or if *flags* is not correct. For skb-type dynptrs, + * other errors correspond to errors returned by **bpf_skb_store_bytes**\ (). + */ +static long (* const bpf_dynptr_write)(const struct bpf_dynptr *dst, __u32 offset, void *src, __u32 len, __u64 flags) = (void *) 202; + +/* + * bpf_dynptr_data + * + * Get a pointer to the underlying dynptr data. + * + * *len* must be a statically known value. The returned data slice + * is invalidated whenever the dynptr is invalidated. + * + * skb and xdp type dynptrs may not use bpf_dynptr_data. They should + * instead use bpf_dynptr_slice and bpf_dynptr_slice_rdwr. + * + * Returns + * Pointer to the underlying dynptr data, NULL if the dynptr is + * read-only, if the dynptr is invalid, or if the offset and length + * is out of bounds. + */ +static void *(* const bpf_dynptr_data)(const struct bpf_dynptr *ptr, __u32 offset, __u32 len) = (void *) 203; + +/* + * bpf_tcp_raw_gen_syncookie_ipv4 + * + * Try to issue a SYN cookie for the packet with corresponding + * IPv4/TCP headers, *iph* and *th*, without depending on a + * listening socket. + * + * *iph* points to the IPv4 header. + * + * *th* points to the start of the TCP header, while *th_len* + * contains the length of the TCP header (at least + * **sizeof**\ (**struct tcphdr**)). + * + * Returns + * On success, lower 32 bits hold the generated SYN cookie in + * followed by 16 bits which hold the MSS value for that cookie, + * and the top 16 bits are unused. + * + * On failure, the returned value is one of the following: + * + * **-EINVAL** if *th_len* is invalid. + */ +static __s64 (* const bpf_tcp_raw_gen_syncookie_ipv4)(struct iphdr *iph, struct tcphdr *th, __u32 th_len) = (void *) 204; + +/* + * bpf_tcp_raw_gen_syncookie_ipv6 + * + * Try to issue a SYN cookie for the packet with corresponding + * IPv6/TCP headers, *iph* and *th*, without depending on a + * listening socket. + * + * *iph* points to the IPv6 header. + * + * *th* points to the start of the TCP header, while *th_len* + * contains the length of the TCP header (at least + * **sizeof**\ (**struct tcphdr**)). + * + * Returns + * On success, lower 32 bits hold the generated SYN cookie in + * followed by 16 bits which hold the MSS value for that cookie, + * and the top 16 bits are unused. + * + * On failure, the returned value is one of the following: + * + * **-EINVAL** if *th_len* is invalid. + * + * **-EPROTONOSUPPORT** if CONFIG_IPV6 is not builtin. + */ +static __s64 (* const bpf_tcp_raw_gen_syncookie_ipv6)(struct ipv6hdr *iph, struct tcphdr *th, __u32 th_len) = (void *) 205; + +/* + * bpf_tcp_raw_check_syncookie_ipv4 + * + * Check whether *iph* and *th* contain a valid SYN cookie ACK + * without depending on a listening socket. + * + * *iph* points to the IPv4 header. + * + * *th* points to the TCP header. + * + * Returns + * 0 if *iph* and *th* are a valid SYN cookie ACK. + * + * On failure, the returned value is one of the following: + * + * **-EACCES** if the SYN cookie is not valid. + */ +static long (* const bpf_tcp_raw_check_syncookie_ipv4)(struct iphdr *iph, struct tcphdr *th) = (void *) 206; + +/* + * bpf_tcp_raw_check_syncookie_ipv6 + * + * Check whether *iph* and *th* contain a valid SYN cookie ACK + * without depending on a listening socket. + * + * *iph* points to the IPv6 header. + * + * *th* points to the TCP header. + * + * Returns + * 0 if *iph* and *th* are a valid SYN cookie ACK. + * + * On failure, the returned value is one of the following: + * + * **-EACCES** if the SYN cookie is not valid. + * + * **-EPROTONOSUPPORT** if CONFIG_IPV6 is not builtin. + */ +static long (* const bpf_tcp_raw_check_syncookie_ipv6)(struct ipv6hdr *iph, struct tcphdr *th) = (void *) 207; + +/* + * bpf_ktime_get_tai_ns + * + * A nonsettable system-wide clock derived from wall-clock time but + * ignoring leap seconds. This clock does not experience + * discontinuities and backwards jumps caused by NTP inserting leap + * seconds as CLOCK_REALTIME does. + * + * See: **clock_gettime**\ (**CLOCK_TAI**) + * + * Returns + * Current *ktime*. + */ +static __u64 (* const bpf_ktime_get_tai_ns)(void) = (void *) 208; + +/* + * bpf_user_ringbuf_drain + * + * Drain samples from the specified user ring buffer, and invoke + * the provided callback for each such sample: + * + * long (\*callback_fn)(const struct bpf_dynptr \*dynptr, void \*ctx); + * + * If **callback_fn** returns 0, the helper will continue to try + * and drain the next sample, up to a maximum of + * BPF_MAX_USER_RINGBUF_SAMPLES samples. If the return value is 1, + * the helper will skip the rest of the samples and return. Other + * return values are not used now, and will be rejected by the + * verifier. + * + * Returns + * The number of drained samples if no error was encountered while + * draining samples, or 0 if no samples were present in the ring + * buffer. If a user-space producer was epoll-waiting on this map, + * and at least one sample was drained, they will receive an event + * notification notifying them of available space in the ring + * buffer. If the BPF_RB_NO_WAKEUP flag is passed to this + * function, no wakeup notification will be sent. If the + * BPF_RB_FORCE_WAKEUP flag is passed, a wakeup notification will + * be sent even if no sample was drained. + * + * On failure, the returned value is one of the following: + * + * **-EBUSY** if the ring buffer is contended, and another calling + * context was concurrently draining the ring buffer. + * + * **-EINVAL** if user-space is not properly tracking the ring + * buffer due to the producer position not being aligned to 8 + * bytes, a sample not being aligned to 8 bytes, or the producer + * position not matching the advertised length of a sample. + * + * **-E2BIG** if user-space has tried to publish a sample which is + * larger than the size of the ring buffer, or which cannot fit + * within a struct bpf_dynptr. + */ +static long (* const bpf_user_ringbuf_drain)(void *map, void *callback_fn, void *ctx, __u64 flags) = (void *) 209; + +/* + * bpf_cgrp_storage_get + * + * Get a bpf_local_storage from the *cgroup*. + * + * Logically, it could be thought of as getting the value from + * a *map* with *cgroup* as the **key**. From this + * perspective, the usage is not much different from + * **bpf_map_lookup_elem**\ (*map*, **&**\ *cgroup*) except this + * helper enforces the key must be a cgroup struct and the map must also + * be a **BPF_MAP_TYPE_CGRP_STORAGE**. + * + * In reality, the local-storage value is embedded directly inside of the + * *cgroup* object itself, rather than being located in the + * **BPF_MAP_TYPE_CGRP_STORAGE** map. When the local-storage value is + * queried for some *map* on a *cgroup* object, the kernel will perform an + * O(n) iteration over all of the live local-storage values for that + * *cgroup* object until the local-storage value for the *map* is found. + * + * An optional *flags* (**BPF_LOCAL_STORAGE_GET_F_CREATE**) can be + * used such that a new bpf_local_storage will be + * created if one does not exist. *value* can be used + * together with **BPF_LOCAL_STORAGE_GET_F_CREATE** to specify + * the initial value of a bpf_local_storage. If *value* is + * **NULL**, the new bpf_local_storage will be zero initialized. + * + * Returns + * A bpf_local_storage pointer is returned on success. + * + * **NULL** if not found or there was an error in adding + * a new bpf_local_storage. + */ +static void *(* const bpf_cgrp_storage_get)(void *map, struct cgroup *cgroup, void *value, __u64 flags) = (void *) 210; + +/* + * bpf_cgrp_storage_delete + * + * Delete a bpf_local_storage from a *cgroup*. + * + * Returns + * 0 on success. + * + * **-ENOENT** if the bpf_local_storage cannot be found. + */ +static long (* const bpf_cgrp_storage_delete)(void *map, struct cgroup *cgroup) = (void *) 211; diff --git a/bpf/bpf_helpers.h b/bpf/bpf_helpers.h index 917fd9a..079c975 100644 --- a/bpf/bpf_helpers.h +++ b/bpf/bpf_helpers.h @@ -1,5 +1,5 @@ -// This file is taken from libbpf v0.4.0. -// https://github.com/libbpf/libbpf/blob/v0.4.0/src/bpf_helpers.h +// This file is taken from libbpf v0.8.2. +// https://github.com/libbpf/libbpf/blob/v0.8.2/src/bpf_helpers.h // // Licensed under LGPL 2.1 or the BSD 2 Clause. @@ -18,14 +18,7 @@ #define __uint(name, val) int (*name)[val] #define __type(name, val) typeof(val) *name #define __array(name, val) typeof(val) *name[] - -/* Helper macro to print out debug messages */ -#define bpf_printk(fmt, ...) \ -({ \ - char ____fmt[] = fmt; \ - bpf_trace_printk(____fmt, sizeof(____fmt), \ - ##__VA_ARGS__); \ -}) +#define __ulong(name, val) enum { ___bpf_concat(__unique_value, __COUNTER__) = val } name /* * Helper macro to place programs, maps, license in @@ -35,12 +28,25 @@ * To allow use of SEC() with externs (e.g., for extern .maps declarations), * make sure __attribute__((unused)) doesn't trigger compilation warning. */ +#if __GNUC__ && !__clang__ + +/* + * Pragma macros are broken on GCC + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55578 + * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90400 + */ +#define SEC(name) __attribute__((section(name), used)) + +#else + #define SEC(name) \ _Pragma("GCC diagnostic push") \ _Pragma("GCC diagnostic ignored \"-Wignored-attributes\"") \ __attribute__((section(name), used)) \ _Pragma("GCC diagnostic pop") \ +#endif + /* Avoid 'linux/stddef.h' definition of '__always_inline'. */ #undef __always_inline #define __always_inline inline __attribute__((always_inline)) @@ -77,15 +83,44 @@ /* * Helper macros to manipulate data structures */ -#ifndef offsetof -#define offsetof(TYPE, MEMBER) ((unsigned long)&((TYPE *)0)->MEMBER) -#endif -#ifndef container_of + +/* offsetof() definition that uses __builtin_offset() might not preserve field + * offset CO-RE relocation properly, so force-redefine offsetof() using + * old-school approach which works with CO-RE correctly + */ +#undef offsetof +#define offsetof(type, member) ((unsigned long)&((type *)0)->member) + +/* redefined container_of() to ensure we use the above offsetof() macro */ +#undef container_of #define container_of(ptr, type, member) \ ({ \ void *__mptr = (void *)(ptr); \ ((type *)(__mptr - offsetof(type, member))); \ }) + +/* + * Compiler (optimization) barrier. + */ +#ifndef barrier +#define barrier() asm volatile("" ::: "memory") +#endif + +/* Variable-specific compiler (optimization) barrier. It's a no-op which makes + * compiler believe that there is some black box modification of a given + * variable and thus prevents compiler from making extra assumption about its + * value and potential simplifications and optimizations on this variable. + * + * E.g., compiler might often delay or even omit 32-bit to 64-bit casting of + * a variable, making some code patterns unverifiable. Putting barrier_var() + * in place will ensure that cast is performed before the barrier_var() + * invocation, because compiler has to pessimistically assume that embedded + * asm section might perform some extra operations on that variable. + * + * This is a variable-specific variant of more global barrier(). + */ +#ifndef barrier_var +#define barrier_var(var) asm volatile("" : "+r"(var)) #endif /* @@ -136,18 +171,6 @@ bpf_tail_call_static(void *ctx, const void *map, const __u32 slot) } #endif -/* - * Helper structure used by eBPF C program - * to describe BPF map attributes to libbpf loader - */ -struct bpf_map_def { - unsigned int type; - unsigned int key_size; - unsigned int value_size; - unsigned int max_entries; - unsigned int map_flags; -}; - enum libbpf_pin_type { LIBBPF_PIN_NONE, /* PIN_BY_NAME: pin maps by name (in /sys/fs/bpf by default) */ @@ -162,5 +185,231 @@ enum libbpf_tristate { #define __kconfig __attribute__((section(".kconfig"))) #define __ksym __attribute__((section(".ksyms"))) +#define __kptr_untrusted __attribute__((btf_type_tag("kptr_untrusted"))) +#define __kptr __attribute__((btf_type_tag("kptr"))) +#define __percpu_kptr __attribute__((btf_type_tag("percpu_kptr"))) + +#define bpf_ksym_exists(sym) ({ \ + _Static_assert(!__builtin_constant_p(!!sym), #sym " should be marked as __weak"); \ + !!sym; \ +}) + +#define __arg_ctx __attribute__((btf_decl_tag("arg:ctx"))) +#define __arg_nonnull __attribute((btf_decl_tag("arg:nonnull"))) +#define __arg_nullable __attribute((btf_decl_tag("arg:nullable"))) +#define __arg_trusted __attribute((btf_decl_tag("arg:trusted"))) +#define __arg_arena __attribute((btf_decl_tag("arg:arena"))) + +#ifndef ___bpf_concat +#define ___bpf_concat(a, b) a ## b +#endif +#ifndef ___bpf_apply +#define ___bpf_apply(fn, n) ___bpf_concat(fn, n) +#endif +#ifndef ___bpf_nth +#define ___bpf_nth(_, _1, _2, _3, _4, _5, _6, _7, _8, _9, _a, _b, _c, N, ...) N +#endif +#ifndef ___bpf_narg +#define ___bpf_narg(...) \ + ___bpf_nth(_, ##__VA_ARGS__, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) +#endif + +#define ___bpf_fill0(arr, p, x) do {} while (0) +#define ___bpf_fill1(arr, p, x) arr[p] = x +#define ___bpf_fill2(arr, p, x, args...) arr[p] = x; ___bpf_fill1(arr, p + 1, args) +#define ___bpf_fill3(arr, p, x, args...) arr[p] = x; ___bpf_fill2(arr, p + 1, args) +#define ___bpf_fill4(arr, p, x, args...) arr[p] = x; ___bpf_fill3(arr, p + 1, args) +#define ___bpf_fill5(arr, p, x, args...) arr[p] = x; ___bpf_fill4(arr, p + 1, args) +#define ___bpf_fill6(arr, p, x, args...) arr[p] = x; ___bpf_fill5(arr, p + 1, args) +#define ___bpf_fill7(arr, p, x, args...) arr[p] = x; ___bpf_fill6(arr, p + 1, args) +#define ___bpf_fill8(arr, p, x, args...) arr[p] = x; ___bpf_fill7(arr, p + 1, args) +#define ___bpf_fill9(arr, p, x, args...) arr[p] = x; ___bpf_fill8(arr, p + 1, args) +#define ___bpf_fill10(arr, p, x, args...) arr[p] = x; ___bpf_fill9(arr, p + 1, args) +#define ___bpf_fill11(arr, p, x, args...) arr[p] = x; ___bpf_fill10(arr, p + 1, args) +#define ___bpf_fill12(arr, p, x, args...) arr[p] = x; ___bpf_fill11(arr, p + 1, args) +#define ___bpf_fill(arr, args...) \ + ___bpf_apply(___bpf_fill, ___bpf_narg(args))(arr, 0, args) + +/* + * BPF_SEQ_PRINTF to wrap bpf_seq_printf to-be-printed values + * in a structure. + */ +#define BPF_SEQ_PRINTF(seq, fmt, args...) \ +({ \ + static const char ___fmt[] = fmt; \ + unsigned long long ___param[___bpf_narg(args)]; \ + \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wint-conversion\"") \ + ___bpf_fill(___param, args); \ + _Pragma("GCC diagnostic pop") \ + \ + bpf_seq_printf(seq, ___fmt, sizeof(___fmt), \ + ___param, sizeof(___param)); \ +}) + +/* + * BPF_SNPRINTF wraps the bpf_snprintf helper with variadic arguments instead of + * an array of u64. + */ +#define BPF_SNPRINTF(out, out_size, fmt, args...) \ +({ \ + static const char ___fmt[] = fmt; \ + unsigned long long ___param[___bpf_narg(args)]; \ + \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wint-conversion\"") \ + ___bpf_fill(___param, args); \ + _Pragma("GCC diagnostic pop") \ + \ + bpf_snprintf(out, out_size, ___fmt, \ + ___param, sizeof(___param)); \ +}) + +#ifdef BPF_NO_GLOBAL_DATA +#define BPF_PRINTK_FMT_MOD +#else +#define BPF_PRINTK_FMT_MOD static const +#endif + +#define __bpf_printk(fmt, ...) \ +({ \ + BPF_PRINTK_FMT_MOD char ____fmt[] = fmt; \ + bpf_trace_printk(____fmt, sizeof(____fmt), \ + ##__VA_ARGS__); \ +}) + +/* + * __bpf_vprintk wraps the bpf_trace_vprintk helper with variadic arguments + * instead of an array of u64. + */ +#define __bpf_vprintk(fmt, args...) \ +({ \ + static const char ___fmt[] = fmt; \ + unsigned long long ___param[___bpf_narg(args)]; \ + \ + _Pragma("GCC diagnostic push") \ + _Pragma("GCC diagnostic ignored \"-Wint-conversion\"") \ + ___bpf_fill(___param, args); \ + _Pragma("GCC diagnostic pop") \ + \ + bpf_trace_vprintk(___fmt, sizeof(___fmt), \ + ___param, sizeof(___param)); \ +}) + +/* Use __bpf_printk when bpf_printk call has 3 or fewer fmt args + * Otherwise use __bpf_vprintk + */ +#define ___bpf_pick_printk(...) \ + ___bpf_nth(_, ##__VA_ARGS__, __bpf_vprintk, __bpf_vprintk, __bpf_vprintk, \ + __bpf_vprintk, __bpf_vprintk, __bpf_vprintk, __bpf_vprintk, \ + __bpf_vprintk, __bpf_vprintk, __bpf_printk /*3*/, __bpf_printk /*2*/,\ + __bpf_printk /*1*/, __bpf_printk /*0*/) + +/* Helper macro to print out debug messages */ +#define bpf_printk(fmt, args...) ___bpf_pick_printk(args)(fmt, ##args) + +struct bpf_iter_num; + +extern int bpf_iter_num_new(struct bpf_iter_num *it, int start, int end) __weak __ksym; +extern int *bpf_iter_num_next(struct bpf_iter_num *it) __weak __ksym; +extern void bpf_iter_num_destroy(struct bpf_iter_num *it) __weak __ksym; + +#ifndef bpf_for_each +/* bpf_for_each(iter_type, cur_elem, args...) provides generic construct for + * using BPF open-coded iterators without having to write mundane explicit + * low-level loop logic. Instead, it provides for()-like generic construct + * that can be used pretty naturally. E.g., for some hypothetical cgroup + * iterator, you'd write: + * + * struct cgroup *cg, *parent_cg = <...>; + * + * bpf_for_each(cgroup, cg, parent_cg, CG_ITER_CHILDREN) { + * bpf_printk("Child cgroup id = %d", cg->cgroup_id); + * if (cg->cgroup_id == 123) + * break; + * } + * + * I.e., it looks almost like high-level for each loop in other languages, + * supports continue/break, and is verifiable by BPF verifier. + * + * For iterating integers, the difference betwen bpf_for_each(num, i, N, M) + * and bpf_for(i, N, M) is in that bpf_for() provides additional proof to + * verifier that i is in [N, M) range, and in bpf_for_each() case i is `int + * *`, not just `int`. So for integers bpf_for() is more convenient. + * + * Note: this macro relies on C99 feature of allowing to declare variables + * inside for() loop, bound to for() loop lifetime. It also utilizes GCC + * extension: __attribute__((cleanup())), supported by both GCC and + * Clang. + */ +#define bpf_for_each(type, cur, args...) for ( \ + /* initialize and define destructor */ \ + struct bpf_iter_##type ___it __attribute__((aligned(8), /* enforce, just in case */, \ + cleanup(bpf_iter_##type##_destroy))), \ + /* ___p pointer is just to call bpf_iter_##type##_new() *once* to init ___it */ \ + *___p __attribute__((unused)) = ( \ + bpf_iter_##type##_new(&___it, ##args), \ + /* this is a workaround for Clang bug: it currently doesn't emit BTF */ \ + /* for bpf_iter_##type##_destroy() when used from cleanup() attribute */ \ + (void)bpf_iter_##type##_destroy, (void *)0); \ + /* iteration and termination check */ \ + (((cur) = bpf_iter_##type##_next(&___it))); \ +) +#endif /* bpf_for_each */ + +#ifndef bpf_for +/* bpf_for(i, start, end) implements a for()-like looping construct that sets + * provided integer variable *i* to values starting from *start* through, + * but not including, *end*. It also proves to BPF verifier that *i* belongs + * to range [start, end), so this can be used for accessing arrays without + * extra checks. + * + * Note: *start* and *end* are assumed to be expressions with no side effects + * and whose values do not change throughout bpf_for() loop execution. They do + * not have to be statically known or constant, though. + * + * Note: similarly to bpf_for_each(), it relies on C99 feature of declaring for() + * loop bound variables and cleanup attribute, supported by GCC and Clang. + */ +#define bpf_for(i, start, end) for ( \ + /* initialize and define destructor */ \ + struct bpf_iter_num ___it __attribute__((aligned(8), /* enforce, just in case */ \ + cleanup(bpf_iter_num_destroy))), \ + /* ___p pointer is necessary to call bpf_iter_num_new() *once* to init ___it */ \ + *___p __attribute__((unused)) = ( \ + bpf_iter_num_new(&___it, (start), (end)), \ + /* this is a workaround for Clang bug: it currently doesn't emit BTF */ \ + /* for bpf_iter_num_destroy() when used from cleanup() attribute */ \ + (void)bpf_iter_num_destroy, (void *)0); \ + ({ \ + /* iteration step */ \ + int *___t = bpf_iter_num_next(&___it); \ + /* termination and bounds check */ \ + (___t && ((i) = *___t, (i) >= (start) && (i) < (end))); \ + }); \ +) +#endif /* bpf_for */ + +#ifndef bpf_repeat +/* bpf_repeat(N) performs N iterations without exposing iteration number + * + * Note: similarly to bpf_for_each(), it relies on C99 feature of declaring for() + * loop bound variables and cleanup attribute, supported by GCC and Clang. + */ +#define bpf_repeat(N) for ( \ + /* initialize and define destructor */ \ + struct bpf_iter_num ___it __attribute__((aligned(8), /* enforce, just in case */ \ + cleanup(bpf_iter_num_destroy))), \ + /* ___p pointer is necessary to call bpf_iter_num_new() *once* to init ___it */ \ + *___p __attribute__((unused)) = ( \ + bpf_iter_num_new(&___it, 0, (N)), \ + /* this is a workaround for Clang bug: it currently doesn't emit BTF */ \ + /* for bpf_iter_num_destroy() when used from cleanup() attribute */ \ + (void)bpf_iter_num_destroy, (void *)0); \ + bpf_iter_num_next(&___it); \ + /* nothing here */ \ +) +#endif /* bpf_repeat */ #endif diff --git a/bpf/handler-bpfeb.o b/bpf/handler-bpfeb.o index 3c1fb6e669b369d78ddf3f2bec5252fecd616973..72e48f0fabf6f378fd95afadf03143e14585c0b7 100644 GIT binary patch literal 74640 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
lyH;7g<>h-H>ILxQi7V1{s4hqGev4bl#6 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 z z6KvHWG3xGC}dh6Jfhs3m-KD$kQDL7#5+LLyzuw4{&Z8<dF7da!_P8y_w4kDX1jVXo z>QM-Utm|2@3W}x6bv;d>4<)pOB$d2qZIwP)lqzwtv#A0?MJsAhb;qK#%dSt_EuntR zvr$c}%v_!OU!{49i=?st)uU{L?VH9YpF=OQ75a(~nU zwnb@3%{4moQ3tkwmj5WB1vRR%RW74fvUTfd*m!=Caqe(&xsGyfs#V`MX6GwOYE$$u%UJ>p$2qy7WFb@wJZI~%O{&!T6h6>fZ+<| zU2|xH8hu0|gUJLG_Hb+KTz+M)g6BpdzwttvV=_}61Cc9=$4BQ!QNBenQ$_va;CP@& zYIcH~gt_!qcTw1-+^8Q$dlVHSqX|+AQAFdl(OXh9L%o8ZX^TaauiL|u8Xhdw3kxe| zL@PNBT-TL6WKXW)l7ejygd4;*nEg%-Pact3BCVE5hWyX9e#hl|u6NS(_;6YI++^J} zs-eqgZFzD|I(^obXXc!bxT2&`{9~LYC>GBtW8W}wt~gpXMNRX|Xbe6B$MD+AL%f(P zMC{gEk5)1)qgR$IK%yq4#=gvrN@^=yZ4roDh!c*+E_SNhQ_#(}I-%Q`sQ2RiTq0bb zU!_=>_7Yso6r&C>}$JZU> zHl>9N)mEevOXejslSS=CO|*3sUKVxIJGDUek8%$iZQApPYfZRmj7+4F9fTQSTAM2w zRCZ?;VWPCboD-J~#<9hbrKWh2*iwnguvC=?H*%Lrx-i%{9E#;JY_HQnfVb5@F`FtlsKY%CWF69MVsyNv`?q1m0p=-?t8E@GojtKylv zV7stcsSUJu5N)cX6`ysV=5CQY*iBzqv^uGMl|C&rCR#%?N2>82tTQMh8smj?+5LxQ zN(sCAKhuz|wCScdX>n7hDpsNHS$}GZ4m>}N!LQ7Y)mFK;b6K}bbGKt19cC8qsijd} z{|q}vx!O`~qQ10JC$s|c9x4zDZL|4H%dc0BU69$U)L3K? z`c+s@$y6I%o6b&iS!3L%Kv`K4lffbSCM2m#GjIYBDoy8Y%VjL-{l6Wqoa{f9yJ66 zqO%M`HT{9;Y~&Lzbz!C`z?3$D=;KmMBYO9@Sb66ullA{o&-8?RG4I*~uw#h}YI;VD;jO zT(@)QVPy#aRw|nd%Z15OeAPFqwvh)0#TyNH?Qm=K!MZdVbtVkt3U^O)O-lseSRp9C z+?2A>I@@sPSnjL@%!BbNA)05Av%GKCIMfu^HNcHZHltHhx)&Meo9&e45-PW}oLNBZ z#g`OLmO~WLxQhNshsj!CiCwDD_xy}JR z8%>qQ8@Z-xeGUd@V@<{Y(cbXvd`>Z7SVnz9e4AL9R`KiB8pzZRT_wX{$Qr!FstAWs zS%d>3C`$&AG1del1-d7M0PomA+)HeB%skN2bLSJ)iJpp2W#bkWMHF0ZoD^%y61=XHr%luh)NFC8^ zj*OlG0NriC!@2;T#_4!2jfo8|uQF%Bl*;tzq8!->-nu{B(b6G#ZyEOjjjG&vp{^U` z>V#yJJLziWu{e#|X7dNjF~Sn_QGrMyGOv%m*6H#kWsi#g`e;Dj7pU2f$RG04l1Tzn z%*3GCcX3)Vq5%Fs_TD=_it>Bd-c9cbC540}OK2fL2oQP;2udd)AXR#k-a`?vAtF_f zE(B4e35cK|h(Re40VyH~0s%olEQk$6;XU`1WbRA9zvuV<^ZfCAzWX7&d(AmBbLPys z&pG$(vSYrnUc_apU~0#rTxgd|HPl7HES|u%MH!9yHJSu4JJcw!hp~WSDwVH{MknQW;^4lvMdKYI%`6 zJjp~z=JSpnn`lO`89T-)H)eOEddV-{%gxOdD8D(-07I$QD7mMdLu;h{UNW3<(a3zs zzg(qm24sv{X??`PQ8LFe2EG~vgGNoTNuR`x527l%QXU{ zaLcRt>+aIQo8^0`+*wHOk7ZvClDjv{iIA2^r9-o-tDK^4iXnGklu5ogP2I&#?s04m zA7hbB{AKblXG?~fn#HTBp7BP3Jx8~M6IF`IKf&rEuan1Gu{KyHYJSaGyG+x~yJyI#Qo*P0QYS;OKwfY%^Uu;K<1CsJcr$xg zAt^^>{0g?Zyezp)Cf_nwR^6nk_Hxq2PvdQG^)Y3pF^?s>9LuAgaZuM== z>&;oAaqcZeE3WeuEtXEhx|%QVtYuQM3Z#;Y&8|rzun5JTxed)86d$RfBnqM$C3wBO_tNCS|{_mq>M;)rqux(S=Zqg>mZH$ zX_nQ+n?u&R3Tf4`F>)IKsf=<7Rj!XolOTz(zf5@g%0-a@ z)@%RKM#C_`e6g+?^;X45CgNkIJoFt^-M*OAcT^4eCH^XEDl9j1li%<*?g(I9k(R+A z`CX1!dUg4s^L|6e4pA9EU2q<2-Zr;~XuJB$m36t{h6I~gXytBcWS*o+&BOiAGW}1Ovxgdv$Ew-k)iX zLtyXK6qxD3d~b}>;lrdka~b)R2Rp{3s2`CcWPkuJH_ zmzup;3++z{Y*g0*@@4j5wo`_jd$|>4UzsNv$z5je1t9mkA0`*1oQvev05X(&jg_l@ z>dKyqFu4XQ7trKNv(;RPTr4G3rPG4=v_eAe+wf?QCLQI*4c48u8aHVuw~^=4CY|KI5C2@+u3a0sn>m%$ zJ;eX9uvu$$V;yOS{volJOY-kE#AxAqsYb+T{2b;QAtzH3b$>Z1~A zL)0a$!E%rJ-ZFPlp9-4+q=Hp?QTd3*y7{HtF;Q-_Jwk3NFD;UN)l6>S+uOPkL~jXu zm1xZ4G)|56epJ5!qfLif3nUpy2WMFCRFV1AC}WTmxY82Kl@H}}nFTv`UB%F~H>r}4 zLn!ymHVu&oQdhYxGR~rTjlnMI78UGM4#=1i3^uR(89nA$^S$(Ja`noHLF2$xw`Qps ztC(6=D`)CeQ8%9|2xF<&>i(g|^(ZS5%VDcayKATyJ`OoXKs zRd?1h-pLhC^Nj?e@j;hd<0^P-9=lcSjFsfBF(NiD?91-t9xujjM^&!o8dW)6{;JAf z6-ipI-dXalvizmFM%8kSs_Bxet9|4KLvnd`kQ5TL%Bp2@0b9CKbE8sEO>5*kA;w-z zYmFwr6v*!6!#z0^xjFT?tZJ2IPMF`}_m|2bsZdUx^kV(hk-Pe5885~~F!OB>Ia%gl zkl~)M-DkYyF!>uJfBhwf`ioiphYy!Ob$wl?MsmoqF~=JH)fvp{Gg>~_QP1XQK3P&F zOkMdz#3ebw9(i&v^6~juUEVu4B%cbaNwzdKax3-W!v`Bzbkuhvth?Thk}rrD?XbE> zk6aJvC!2O!GN@|J8dkHYa*kZDk~x{-1oI=FEc3nDKf1E|%hyHZgW}PyEOn)%NAGd2 zwAz)^YRR{ns;7J8;~4o8lPXhv)Ympt@lP%@Y;*;WiuK|BlZTBiSHV+8O^Pbkw?4Zs zSH~4NsJ|y!RyDpH6{yyh@EbN}aB`9~j6?c*Sd^WN-Hnwij3S>PMQ#Pmt*sr8|vQ8A~O2xf>&L~`fiDc(`u)? z0{`{cWZRCzGe{lbu+bIk|I2RGvHq`*&)ArDbb*GWN|<|*FOnI1u)72)9+Ifd21eR5 z^--(Yn~UdUfEyy?18$idN#RkKjO3Gg)sM(`nBu8UahNJh46kV+@;~{|Sk0pvuHnNx@=twx!uWod#EIq2L3X$V%Hw|sH*=ovF}L`C z+?29V4kJ|^tEXN)2~y)$rC*NF8id+^kM!fotqgT(YocM9QL(;# zn(_l?V!u(t)xa@cnQ7EQkIWd92aL0;XO@CN`JZ>F!a>`a)Q17%>^++BA9t%%|Nrk& zMXt6>dvC@ta1P!4<5R2XJCaY7J#zh5ZVG3eSmzgO)pcT#$aia9fyP-g61OPI@Kav~ ztm82r^1WMG;2AX9GiG2v@u7Su<&m&8K7|TYJFwLMWe+0hp|<4Qg=vdrRQ>w0DdVfX zYO%EoHFvQ0V1MOTMS*l^>RXu=hxQsUs82;nHNEBfUb%eRWs_opxnaw6^_^k0_}^_W zIPp%eC@1CznsyQ_AE{;K{&5lt%C&4PzgqwEj1=tD5p6~#k};KR?ZOV!{PU0H5(<(* z3dVu5#;OvYx-u5kH?7TrnOw$DR3X@PPLj@q`>25ciHPxh2BlnhJ$<7TDT%0FgNS0?7~!#ZSZvFy#*o^vPpN2(Pv zqgzsI{cF)H*lM5h3ld|+`m#-P9X0ms z1Sy|l$`v>ByjfXLv!);{47=yaLBxW_QYW9CwA-1d+et9+kaK8=v&=-?j4*CNftAs6KA7B9bvl32x; z18`eg3PC(0Ed_33G{j?OZ;wm2cMA3!D=a z^SwlfNY!N&^Bafuw-oa~RyVF2S^b#x4OsL0phmx&e+>G^O)hnB=D}*>XMVj=?({xT zU0*jp^EH+m*QVuSm~ETUH|K9oT4k4-=GktP{|8}A7#(wS^O~x;*uKzY9EhPPHB`Q+ zXiD>^&(?I>P%zJesh~a+l?!z8oi~^I@}F3#CdfvAqwZzeUwv0dzAP(&FkIF(8avgr z%7q1)XBn3loL~MlPo8|c!?*}-eV0}~;WECYYo9y$Tv9%5$^Tr^{0_103;7U2eYe&+ zYsSYp#@7Z+lMFW9XHF&Zy=I)blmE{ zT&l+$`CH*~d*sDfU-3SdyOjDbiplb)*nXtR8{yK6UG6mb-+``7i%+`T>3;Hlpv4zm z?wabq+TAs|%y{|VvH`MBwQtAv)X%3W&X?QUm+fWB_S_kke6RekRN0>UIM%;m$^Ue@ z7s~dH{{g7Br&#_+k(bAmmzDL`1qwH{_*a*Elalu|Iaz-7YO9a%I+Nwucz7qvi)=5s zh0FcCul(=9X%;VXxpU;d$a~LoupFEBRtL-Wz14qLRqO9@xv$DO@wV(w{@CT7EdOKF z`-Ul(XXD|0TV9mDCHIkSDlRAXO$(6!nrQpWI$obNQ*IxxPo~NC@%m(0Y#p!943m>B z`+b%;SoY;(+pFYazfZ0ux9!O@S)PrDk7d7YudmqXwAa_N->^?)zR9NCw%50*$+o?| zBP_P;^_^z2ZLjY<2g|m7w>ntt_06%^ve);l$?|MGeDmbR;a?T9PJ8_<`)zyuJf_^X z*Du3l+g`tc7F+iES^l=|^_yYJ4HkR-);U=0^|SqL+3R=Ql*_a6@U!f<{p)vE7CYiW zHes-BuYZh#Md)ACWZPc}pucVlQ_>k=fc}%wL4Qgt!Wp9w> zZ`Llp(7k}u{U&@#g@IHOH7t$ z;}M!IFKT^To@25d522R*w!NWwrrfqSOi-x3 z+uxQwVe?G6JR6TN%YNJ5u${74_HWx8mSeJQZ`fG}tL@)4*|s;_W3gp#xaDu#-tY`l zZrdB))4{U6aNFOOz2P%VxjY+>aLaz%-teum*kNzDWxs82_;FKi`#1cy$+o@5?cS8X zEqf!9O}TAvL`?@r$geDPaWW$Tj7* zy%9G|w(Tt>HW=|?*;~kCvTbjnGzW`rp-cyhy@h&OY}s2V%Vc>r9)+gKi`Zw|TPWLP zJ01#I_S^Or$}#1(y@m2jw(Tt(V6kOy;TV%`dkZH!SnMs_)WKqJVcXx9y@f}Za(Ol$ zg)RGSdkZg-#SZ@#&NkV$xA0B}tL>jP*|t~x3X0ReMZ_krAWTlU6e zm~weG9x;~vw!OyBTs!QIvFx|)jhP{W?%xwop$WKzq zU%tP^-eMk$EqjaAG+CaFN3jffk^S5D7VBxU9lyl}nrz!!Y?_1B_Ong4?JbsTv1MBq$+sRztwl}t?$+o@5Z4Mm%ja_2O zZF^&LEVk^8J#MmXZ)~1}#ojnUr+?#Ye_Qq%w;yoW8<%G3+wx44ZF}P^`)zyUMwoIt z9^&SiY}*^R(_+isILqI*y>Vwvxxo=)?_CFre~a7xw(KeHG3D}XJc=jFiz6P2H#OO| zx431$ZEx{`rrfr-_zaV6dy8+i*s`~Hj>)#Y#g98!>@9xV!D4T`pwpiC7?agv^@#V# zlf&Nl43lkp<1PDbd*geWa@*ecX(rqD#;>#3vNzuHw{35Ht|_(X^=*3-GEBDZP3Yuc*?vNn$+o=-*%n*&CRqNq?M=ur<+i;Ec@9?F zv;A$^Yup{oVXyHsz7GE;rkU&8_9j~P+x8}AnsVE}i6cz5?M+-_v1MxN+uxSG9uceaZ$CT%Cfok?B%5s8>#^*&?e#P@<+i<^fhODbdgfVd+3U$R z*|yiS)xi-im*=>H#a>UI#kRe7O_pclQ9?aC{9D3fvTbh(%YNJ55*eo4wzou2lWluT z%&^$9w}j3kce(FI$@?^uQ=(n& zzf==j)4@uf;ows8zNv%D%KL#1Ru>JkEbiv=DylBBSaznYba}-nx#j1Sw_RSvy$h~m zr(AM*rOS15x3#^}CtY4O)pc%bd*zc|UUijzp1J+)0NXE2O!+o|j+A^G>t4v&(CtTxa*T_FrMX%WHz(P4%TMTe_q2GA>{{tt z$6rCQoDc6A4!P2wXL7|zm)9(%pY32Jx9qLh%H_2rKsd*gtK(ZC$LD?A(x2_}%9i8v z>1pxDF0Vapga%j>Efug^LMOB~wQ%~PAWy#5kBC-(bASp0&^yPL@U zYFhk;%WJ>*&!yzbN4>1~G4h$ve0i@PvTb*B=@Cbp=oKK`R(jZ7CaZI+ehxHwr^UIZ zJXwBrQayZRUrv3WdAhz&j;^nK;nerV_I+hPN^Wo8FIm_3niQv>x_-zsT|eZut{>V|*ALCo^+Rvy`e7Nme%J_IKP*qz53i}~hY!^C!_Vsa5ox-9 zL{D8m;<&C~C|TDp)JfMbl&k9(_UQVBGj;vKIl6w47+t?eQ(eEvPF=rfgsxvSL)S05 zRo9OU(Dfs0>iUuEbbVF+obeEqrt3##L;tR>ADyi0M=#O!qi^f_F&-xoAx_c z@j1GF{B2!7p{K5&uv6Dpw|sKux5Q4me&SYLKQT|&_hjn&o^`su=d7+@qN%Q5B3svY z$s^DTdEF!=6(0{b4;qviv1xg7sAKr&tZr{>DCH%bKpX%`q z@$)|7YVPaT!q59%L2p0rW3E&`?`=~93i}55d7pB5{Jh_unksKnef|9E`FU?LwNAS{ zzAiuSjZ*_WO7EJhuAldE5&6s8RO4NspZ9la>7uF4ef|BsZ>cT4DjGh1-rvi{WaWiZ z=lS~jd0%$j@$+6ab)|2xpZ9IqY=mE`uYYr2x1V>Qtn%X2RNo*!?@Ma+)ndpc+5GCM zb=6MuT%OYZ+r4Vr_MRtp{CA`O^{E|FDxB*5Hif zsb;}X{U4HaU9-)Q?nSj3|C=oJ-;Js!>i>10)>TQ`%UgPAy$}9N`rxRb623(``$qYB zd`o$J%X++@nd{k-o?F*@eCf@O|K zfT|W*7JqLpepM}QU9k9DbMbOnEY0t=DRotgd(NHf8}9vBs&8Nw--ueip(T9-D~dUF zeM4oDU!rfQY&5{Hq_1kdzcM$lPBzdcpsXzRc%P81`1yHnbxU`AT*Tpi-n-n=K8xs( zV5pz>N1`2AN$oLbifqz5M>yE8k_e`Fy!R=gUuj=|+4?Tgm)<;AZEEL~T;DL68Hl*3 z_mKX+iDHnKvAI~0Zk7#s`FWpFn(M^?nKZoPPW6fs58IQB|M=?m@^L-<`QOCqn(IH8 zyI+%K_HvmP+7I`pg5}0nqAh`Yykoh{qwI(Kvx4QuSCTD(`-)?EmaQ$*tn`BAUNSwj zAL_E6ZI9PFd#UL6Dp>9v<5<4iu{^h6xm=Jn{yCQz@0Abba;x@`nV@@-EK!#o)nkPD zqMqGy3DsV1T%xu_Zlz=CyECkX^5TA@V7Yfd!E)DR$9`ph>Y-kYJGa@}$x}`xAM!mplDArC_3=>%-_4g{x6U}6jt$Q z+2@A8-720P+jCb3w*_|>R^!3m-cyi|13wE^x!t+HW8fR$pTNKC?4_>TI=1JP0`34F z3I+6g)Q?{ysVpTU3Y>>UU$23EE^?DtmZ%E_r{weq*_$>G$_$nCj>3tXS2Ra-5gX8@9$j8pk z^J)B7FsEFNZ6~W-=w!sZPa5PH&pve_Zv<`%ZVg8K_#l3a{>5ouf2=Dk{5p6Ycr$oA_ycebSk+^vKaPM^{&vdqz~6$u2j2lB{(KOBzCOCXZxA>F z90f+c^;Nbz>^J@^pp%imeAA&{8=L`t6xi~b_%EIPyubnAFmO?DEZ74s1FitB z0C80-~5r^ z{L$a}-^KPG=p2B4KLGKezDDMZuK>hHKsm^(fNO&5gOQ&Cke>n&9|4Gu0K`WC@{{pj zwUcC@*8DvH`6*xm?0FtM6Fd*R2)qJ}cnMes`DXAg@W@GF3+!Wjz+#cKo+!Nd%JOn%noCTf&Mmz-~o{ax`pCs#8 z@fnDC3S5otZ2)ftzX#p}Mmz-`h5Rh|BKRhl@q+rK!o`_Cf>57=P@jULp|5=7@J~=O zI2D`@ZUAl$&IES^cLSsT1R)-R5D!7mVf{Jah2T|SoNwc&4V?bi4Sm#?Ak>$jlhD5a zMt%rFeh9+(4pP_a9QFjO6YgZ>hu|p4kspH9y3X}+zJqbTgKI&*5g7R)xHaVM!N?E6 zJt0Sa2u6MgMmz)~9)b}M!LzXaSHMfaE5UDo5ih|zAm0n#4?YY&4n7aQ3jPj!8~i)? zFP%gD!HAy_#7~I2mhOm`kQ8tlxDL26xH&izjQkLyKJReu|0(bY@FehbFybKu@eqP| z2thoAARa0Nc zn~3er1TO<4KEpnM{5bd=_&WGkox|N=_#-?Ha@3pfYLKJ8gtvhl{X+O4$j5 zL%tb|{9g$1ROl@9k-rOJ{1x`n^$SOU6Trwvg=<6J6xLe~Hh4YwJuv$1Xym78YFZ-bG)W6)p59ELvn%b2T>BYt8Y=<;IdFV%mub^5PZX>b*A18_@lXE5?n zF^soj)1W^aybSyn82&4^5AtK+^WY!AnD53SzsE-E`mr8xSup$;i+GDgevj>r^-&LF z$3y-+cs_U~82Ks|`6(9P4~#|p#3BF0mC(0u{IrxKKgD6Z#UXy;Q19Y!{Bamxag(sW znc$`1b>R2G2f@hCaTs55@K13sef{FdKgB(eR|3}u!ym;lo{XQea`?A6;-UD9*xoB( zPeMsOQD6LH?`G@!sIV;4?lrLK@_Cz^G3Nh>wJU&`1BAfa@O#INk)rhw)Qgj`&DG zd?b91{UJUQeuDf@ofA>N6B8guKV$rqm&2aK$DogXCK3H!;uz>J1n&l;{w96_`DO5r z;QKmz0>G#z9(8Pv{d?ihRd=_{a81*{oJ;?WiPlEHn7>`NFza@io{gUX1OCp|1rbE9G zI1~IN81<;+M961=7lASUN^XNZ2Yd|tHTXO5U7bt$fs2AWfst=ZA)k~&J}CwJOQF7$ zg8ik=V}F0>T-pch0i(Ytjrv-;FZ4%(r-EmL5znRHf_yu89~j458pm7u2J~^h$^_{0 zGKl9g$&l9sHwAY9W4xCc4mtc&W-jEbz+1pL|7AXh{1W&l@I#%;hJzEqmB0}@ehx56 z)=~2Wc_bf@CnqDnC!?QE{!`a4hxjj767n=Kj;|d0>2f&Ua$~UmGvGPk<=}PT9pI0_ zpM!D!%iVRk%@&6K^^ zANtLd3y`DUrJ#P4NBt;YSYN-q2b>DV_$l8Ua>P@4#8dfap+66d@l<{jX%(Sg8;tRhhW;(=7$AghSE7yP==eu%S$cKO@fTx2Of)VeP_dtFajN`9-2Xge^ zRS@r05bssW>g!i&1a1TF1|ANc1jcx;vI_Edz`MbypH)sneg*s!_%EHS27;r&$d6Ui zAg>2*4t@gM7mV>z72~Dq%g{$YsET@0bsO|Q0v`c?1^yQNi_WTCI{Vl3P%z>t9r2Wo zdYg{^HN7>qhx(F^`jS2#`lv7Ih_`gqmvoG`bkvu0)R%PlD;@bJ{Wsm7YRIqE3PGL- zM!v0<0eLHM7w`b^SnzY;`CyF4>T$ZfdJ-7%Sp8kdbHK-Ru2C1<1dMuGqX*;@!7qYe z1!KI_z<8;F@lxX`*8dXx4fwXsHG{!1;L_kKV2p>Fi2s`7ppX8cCXT;mHuRBiYkmOv zA@C(I`iYu||60fowUA$HA-~o_ey#P0zQ0;6!HDl#&q6*IyaK!vjQUaQZ(UwH2pkQ@ z{GxVM$Z)W15Ye|4UK{wVNN z@NDpU@Oxk!Z=F2Ie*pifb6p&7-AKrh@9I{Aygs-ExD&V^82+dWf7G1?{iWcwVC3Jr zIglft)jbFKb?~n`*Mq;*PqaDvfqDtx^5B|aVLg#tdIV( z9{S6AUqT=Gz8>;@J>-k}$QSjIFY1@lw_m?981Ypf@l_x3RUh$HAMsTm@l_x3RUh$H zAMsTm@l}5x?EM^k0gQZ8|DG;y5CukkXaN5-XaN0IVC2^ZsGkkSLw_L{{bB?3iw!=6 z{%2s+#|Eg68D6@6MmRVgjPaCF3-ZUn9l(9So-gVR|g}08g_=fH+VQ0{Z_-pkZ%R=0v`mQ0_TBI&l;khH9~%Fg!2JlYs0q{xiRq)T?2Rf^tVs-kfaWQZb82)Ko7jo41 z#*ahZ4UGKU82P9%>QQ6VqsIHNz0bjjk0z+kO-k$fO{#z&1*6_H=><8)Lle}SCNrQv z7mV@H1pP{rL(tCyBcC>TsLLOX0ONc=S_bl};0!SQ@n{#w2Y|!$0sjR4OXp^R;3#lOa2mKCxCOW~81dQ+`McS3&_}#ATLt;sVEC)q zr;wikUjrkbHFxXs=HX!Ulg-ORj`(W+7~~zmeZV8ZQ^B*r7|+euL;gPa0QeO6G8pmH z{BK>}A{dPP*8=0OMGfdT0we#mKs>eR1$~Ui784+U0gU)+fqtO{{MQ2cu*E)X?w)2~R^1`b0>eM8;Gb6TPb>JR75vi*{%MWz)Vip? z|JEhI4ZtnI7(cE1Lyq&`8pqcf^{e%3SReg$Yvh~OxW3r>1lC7?-TDW}|J1pSKN$XL z1OK#1g?=4yQ*Z}xZ}4#NWbjL1%+K1af&3lt2jDNj7r>amW%}y!O!P;Y9>_61G7(Ri zs9%|xSbq}uc`%MY6UU#4bnpUjHu!BY##_5XkYoI{yA1h{;QKm19sq{_9#_Ze zINrxAf$M^sfjffxfJcCz2G0a92EPHu^^?axh8*?%an$$6QQsf`U0=VwiUWr~+M~X= zkB2-3jQ*&7W60Zrp9CY`+E0Xh1{nFRJ^a;v8}xI)$H4Gcd*t`_m=AaG)7S5Sde{N+ z)gcY~^}*;LIv}5Q7zq7wVC4S}uRxv+-VELYJ`6_w@9-_;zv|r43ygT`m;iYNaBXl? zFvefUzL1XsPXi<0cU%Ga1~A57$Agd~Uv<0!`EBq6ou3E+$AXi=)xj8VPawZP(G&W^ zz>~o%ZGonC-G##^UV zkZ%I-0wbO};rc+QJm@2yI*ZtuzdK{Rb@o7B2aNdXjC|esN$3v-KL?%#UJ6G1bV2-g z!TIe{QeVGI8n`~VB^c+c3&wvJ^m|>_VSUUWyCA;1p#FCGT3^4bp!586MSs^7$J@0L z^wIBj?F2dUU)Q0KPXzAo{1y0H@Gm;|5Oj|3 z9--h^a9MCVxFNVTSS6Gs`BQznJbDb2Cnt{uKMO{D^+0^}Kz#K;eDy$l^+3MpaS8jw zc0sJ&!_u9()sw@z={& zm-i|HM!xD*3380bUM(P34TK|pdJO<0o_akG`2sNFsn;3Ek*|CG4*3I}dm~@>M!xQi z;Qqu%48KMlMJjQ*kb4#+6DW4!d)3;Ac@v*2ssJK%>p_l3Xu7K6MD82P1d z2IQ^4UBK{HU-VynpM(B9@N3`=;P=7%!N|vb(ZBV*1%32y{g7|^71s6pC4wt}Yk?mH zKMw8*9twv4`XS!>ErkAR@MiF*;4i`Ghx+}Z%livD^JV`ya5A_$_z`d>81<@u7UVC0 zk$?MVL;g1S1Mng67vRg_A9WrO2rdP#46YAGJsQvna@3yz7%u}bUIuK!`p7Q>4nuw# zjN=`Eco^`9u0PNRTnLQuGO#S(2xuo`$>wIr8<8&mcbwMm`#HN0$!`0v7>$z!kx@!85?fw?mO{ha%q& zMZO)1^FI{%cIYMS?|bk)orn2>alFGkkmGoV;dqBNg?=Wu8+afX`DfTP$Y+6i2Mrm*MDlhoj#e-U-|53&!{vj`}`)8uZtL-vjRlBc6sM zo`xfyMg;5Yk0=U8{uq%8c^xp~XG90cdxM9Akxxdv1o0`3aN_#QnH@+sh#bsiH3M!z?v zBjkO+$R}f-h5TzU>gO2L&oK{m{jnk7V&HUeLvR~#KQQ8bEaH7E;(aXQeJtXAEb7PD z-}U{CL%%r=$2ShgH?9oU$MKFs|1_>S^t*%6ua85#j6=MPL%fVzg6+Kt-Uj{%d<6Uz z_&ONlYdrinzL2gz9{FNC`i=2*px+Gq1Q_u$ehlPKgW;d???Rpf#`qYI@i89bV?4%3 zR$+a6Ss2e*$&gnAHv(gRmxb}3h4G$+wHu!IyCj^0`!KJ{J z!S%tYpA*nuO+b817=`txf@gu3g4co(KNE5wKMFnv#(0|Wt1h4D2BTh0jEB5DxEA;^ za0f8rX(IB^MEGmsY^=W=jQ(`u`;Z?1p8{V7{{%*SO$yfKlaQ|`m4zJRZPFuO+tS<3FB?jn^+(5G-*HNr@!BFJY5s|kAmBSdxMdWpGN(D8u{kwWmtb5 z_&qS<~oRuc3p(rl^I_oP z;1qC8@T1`N;NIX7;3?o);AP--;P=4$!6(6a;2*(%>HIoDOaR?g$B!I1@9Eon(GOe%>;dC?&x`Qii>_yDKUVH=ko58!m$UiS)zV+f2=wm+mBF5K@KwW=E6u2Zf4O|b5d_Cg{$oqju zgP#G<1-}MHJk8hz`5`d;HRBt|e+EC)`K3^B9Jm~~1{nG1rN<#h{JbOPv1bhOF@%GXWkl)vNCgN#kG~}hhRlyCxZNSJ+GY3OH0sJEPRqz_{JK&GN zN5SX8H^G1C{IV|?`RL^mkXHg@yuI84@+ZOQk6uPRy*wHEFM*eXw}3I;UOou-zHoz>#28+a2|N9`gUZx{$X4Bi`mA-sU0R<{{qZA>QVppP086`@?vhmjn4RFvjb= ztB@n!=DT(I{4j7FI2l|G{0O)$81XiLDCCpCsF(8>Lk@q^Rbb?g#hBkMJ_!9&;5;z;@5MOZOEAA%QdD1mNeM8kwG{o%Qq=FIgJDk=_ysWH zX({4qDdK4<;%O=3X({4qSv7rs%Nl{vk1RudU55U5*(j_(6+8=!`mqf4V;SnlvK*|B z`myXB&5I{TtxlbY6viV^s*`#lU62 zRlx(n$TzEyZ&o4StU|t7g?zJWJGPH{v+6kHh^JNG>+hPCjr^Ov59=QWp8;P5-vQs(d369d5?mIX0Y*Q!8vWdA%E}= z6nH%NdGLJjO7KSTO)%o)^@qBA4f4mDVvtt=R|h`=&IES{j{tkeVf7e`s9QkGq;^hrLUH^?DU=JAi>5aOO!(VT7hP*#`H24|tOz>hb#@8FD zUvKP&{xR@1Fyc#X-g&*{%}{VG82RT-%!l7>2>sUJu3*%&H^)Mb{Qc%!$X9?dAAWNW zb{6)(6pVVe z7WsQ^4)l+LG2d8w9r9mwe#;FG1IK}r!N_NCHHN$$xF>iR82#j17>{qE-o1r<_0~RY z?+Y;M+gsm3{)f)%0>M#W5BLdiFEEaG9gcV1bm%VtXM^7ce*iuNhCkL_hWtnHeVx~% zA6k!kzdi~2Y2fjfJ(L5}>o5%I7Q`E}#(`udxK!9~F(z^P!=qfLm1O{hnk zP>(iYzP<_hX46a9-y-lD@K*4LV2qzlXCS`{{u%s0=eG-iW5H#?h@ZC`Lf#tO6^wlI zHtPA?&q5#l&)X{?NB{HodyszuJ`P5`dK>lXZPcsHKKlBb;lItuKby-#za|*{?q<}R z%{ZRT$FM%m|7M*3%{c#?asIbp{A`KQx4#AXV@nmt8-P)7wqU-nr9bpXgQtOKgO`Ed z0&fTJ1H*q?&O?3!{F}~OL&4GDQsBzq`rsDePT+oE)Ss=$zguTPAN}uE^uJqCkGAGu zedOn@s83swpSS+1um6r490ra9Cxfej8-d$^yMYIR$AO;%&jX`=y|V%G_rV9ir@)uN zKY{<&c^k&(wqlSYKW}Re`Qu=W$89|zp9Fp$JRiIgyb-(;4F7C92|4oDyXf!U#qqye zMqmHks^BJI^dIjcf4-Xs{U5-8>b%__oC$`%w_ENPfqJn6{@MY5?SQ{_z+XF1FLt0_>_ENP zfqJn6^-TR$eplz6i07SA zkmLOBOo#jta651>@CfiU@JrxDV8s8Ly>do#9&er5NE zkRu=LLI1V~{l%Wg_4W7k1P=p`2cy5(vkLM};9cNc@Ch)+_nupj<9I*x)#V=+27ACb ze;?xfeTaPcVJ6ncc>WOe;6udohbyuEM(|GX0q{xiC7t(%fFr?4;7Z`S;AUWq_q_ul z9}7l)+l&0R7x`^3^4nh2^Sy_${WD6X{DICN1%qpX8-iPdyMp15kKm7waDC*X zxmX|l;YaHse-DiD^AYmfN8dyLp3XUb;8bvJFybMn6XXNH?;pB;$vSE$lHN?fQNu5fTx2OfV07GgH?f6W87Q*?^s@($4-Oz796)>=sH|`AKtpg_a4+yk@H61~ z;ML%Fzgl0xApcqCTwgHiNiOP1F7i(<@=q?}Cl~RPi}=Y!{Ny5jauGkdh@afoVE+a%=3BYQ z&$%a{e-V5OjC%ZOfG+Li+)m%$Vf1H*(Vrbge|8xC+2N(w-Wu>$@P}Z`XAWaNa~SpQ z@E`j6pZSBM!KJ{J!S%r{z@5PTz=)^Mrb3SK_1QYeG2i=aH{=*^pPhvKJoui@N4&ro zZ%2@?j-Wq05{vaqgV8S@Nr${PI0M`g+yUGhJRCe3JQutSydL~H_$%A zaTNLP=r^*^DZdT=TjyiJV8rLK5|AVQj@5&_IT-#t27exdKaV|+^%sHB?;m>;@{Qnk zz^J#!_Ck(+<=7XHUk3jKM*aQVSC@ZY1dRCoyd31!!A-$!!B2n(f=7a^<#kq?ife>vVB`n|xz!02C&&ww2L%kkGC{{Z|6 z_&E3i_&YG_^9dhaexeW<{oaZ4kfWbD(HHWe;L+d-VASUmFF=m?Ix!#e#bDI;6Kfzx zy*Yt;bK)%YuYvFAd=mBJB(`@F+dGNvo#gf&>f1jR0xkwF1Fi~w6pZ?H3i3Sw z6<{3y7keQ86pZ-z0`YO$t?Qpge{(txa>VE9hLE=gKLs8SUI5MpzY9ixayk!k^c$)i zIQx+=BfuVT8aM;o13Vmz{PX2p$X9{4fDyl69)tW0_&WG6ozEaYp9zIL9*lZ+2JwBS z74*A2z{sax9fABb81eSi_mIOs=K^*4Ir!&XNyw3Z&SCtWYYzPs>Hy*I(zz#oC(zjI$f{w)~sc3#BJe0@F?91AWB#{BR+>eG4Dr}JI0 zKISXu$3p%r82SA?>h<~c(0?C{@q7N1F8}&z@O1Dj@GD@P&kM+J7pm&|7c#)Dz+J!t zz+=F$_X7NN0rQs&%d!4y@LOQS--TSrF@7&xf&3>h>gPp_--{T(7cqV>V*Fmj_`Qhn zdlBRJBF67UjNgkGzZWrnFXDV(#Q434@p}>eyX2?)<5C1T9*p_iCFJu5igfEL%th)6pZ|I={Dql>zo$^js}+kR|ccM$ZG+4CvZRTDDYG;@*he23G?&0%wAs1P=itzAoeX%H>7Se*=v1bon6U zpM$>!-vs}z^A&F}#^V)?$1BM1S88DW#^APK`0L7G$e#wU1aAN%p04bI9Qo(UXOMpZ zz6?gcf91X||0Vz&2~Gpo17kdX(;xED;Ag;dz^HHEtb=?9_+v2Q=^Mn;H;AWi5KmVT zPgfC7R}oKF5l>eUPgfC7SG(!t9DaU59_KcZWW!5QGzU>wg+PeG1)^3!z4alU`T`1xrM^uGl2c)o`m=l3@H%iEE< z{_WCWoZs6`AnyR~2ObN40sJcXP4Euz0Wi+*ZTRCh{Bir9zW&dC;38lTxFWbVxHA~} z;b-KBpOGJaMt=BtF}8>K+|Tboz8Cx%_$>Gu82RC6#Lpe%hdam*cgpD7yMys`Cj;_U zVC2_310Wv*#{A{Z9LO<$xr6@W4&v($>ct(@i#y1#cTg|xpkDmqt=scU1UMdC9$X9j z7`Ou%@%9V)kzb}lAN}Vq@YgTvq5nP@1pZs+UxUGjuV2xB{8|nA?Z7?2 zqrsEGFM$_<*MPTzKLj5Jqo4itD&#+dAL#rW{PSB3lnq zuY*y~enWox?GW^F{p2^q&u>3M|Gv(@qrUwf33(D2`TO@rAkPGM2afzz(>Gefvi#LHd8%iSljy#e57z^MOsQUC95fd0GS9Pm-_IWYWn_fK7Z z&mWuseiYmW+zmVkJPte`jC^}C7VF>B`A=_f1Q_-D&lJdOfN{O? z&$f^wKK>jGIpz<4z5w|v;8oyF;9cN@VAStF^C15LjCi?^c)4Fx*S}u^oC-!f-N$&k zkNkW8DXc#p{5%-(b$=z~8^Jrl=y&d)g!~ftdobedFF#%WR}ruWToGIw{1~`BxEFXB zcoKL9_*F3K{a>i}f9-+(r{FKa-+*s}AL#sd2sjpu`t^59$oqgtfS(4>1S3EHjrrN% z??8Vq_%kr(XMbOV{0{h`&JR$(AK>^OJOX`;uLsCS4~9U03ixI467ZYgZD8c@2S*@B z{(kVAE`R6+Mm>Lsdj1gg{2}W3L-^+*{PPg`=OOaXL*$=_$UhH}e;%%c{m4HLk$)Z{ z|2#zgd5HY;@Oy3hZkL{)-7Y;pyIqx`Umx58JODfftoJu=*Br=~gV%$1gLA>B!B@aP zf&bFk9SDvBmjtJQ>w%ktp8)p-!yj(=!@UmrJHQ`WklJ-@iU^!(!X+6Vn(;Pc=cU_HOMy}fn0cO*CoTnStk+zi|i+y^`Y z{51Gw@M~Z_f4IH%{NeW2`#raJ9@f9Fvk%6H55|X2Rp>VXw*&V8>-EO%GZFGx;AP-V z;19q@zLY z5cw}q?;qTOsE2`%>DvqJ4DJuccn-vP4x9;noWH<#AxFLo{2cNNVC4Tm#CMRtt{;Sa z7liR1gnl8Y0oKR)4(bZ|Ah6y)xr1JSd;xehcnkPL@MmC*|DfxTqaFl%>+;}2;6yOS ze{dbhQ4fOAF9i34{%A1rK`_Qg@N3ZD2;K!g1U?PMcnba*@`pNygo5M1$R8odA0Zjg zZw-dOLeO7@jD-FaF!E;z@@L4K(AVcL?vRflM|}xFe1&`q{aSY z4)W^YN5Glj?%=1u7>}VCkD=&aLziRy&EWUJ`@tu`$XB7i>hdr*81tF1VvwU>3+oJd zZ}4#NWbk6}8({QbVW_uZ$k$=W*I_vR@WT4`!!e%1_4&R#yc+Zyf!lz)fe{bk$UouJ zpg$XocnF7o!ry`ZUhrq&@4y&85h8Yup9tiih*-$suZYT!quxifguDY7@e_ggiNJV? zK)#7UzKKA-i9o)IK)#7U{}X}vO~miIy@h_{}oyQ zIs8)y@ly!#QwaIE&`oUbp3a2>!NtJHzlCc--VEFsJP14i{1SL6cs+O*_*3v#;G5uk zIu{897Xz0A*8(>KcLomv<9rvH2RZtgA{!t_eJO(aQUvv-$VIG=d|TwME-&f}#&{{3 z2zdoC{8RK%$R7vy1P=vI1iuJ=6}$$F{96?HrRY)Up9kLr|Dkgv{1sUQ@)BU=m&kgM zw*VuaB42uC~_V2cYsl^BacJ=6&U?pBD_a1}7>O%&=)6zWaX z(^wzlD=HiE_2Bows3%eA$D+e^{pc8QX)w-jG{!?T#zXWJtUm*celr^RAR74~`V7|3 z1OK3NOd&A(iI`51_W}bZ!wHtb-JD7H#QWEc!(_vc{;cuxDB{F zcrbVZ82LXI@e_;uAB+4S3xCBT|HmT#$0Gm7BLBzv>h{GI0ha++1!sU;gE3!;!+a$! z3;M`^aSI{G_=?*KIr_^u#8cck=p%mO{?g^e1Hr05B*~w*{JC82;w9zT$!TEZ&*C`# z;-jHI4LlpX4EzZg^{@B^$iD+49^w%X@s)J__`2X`;Ev!v;E~{|;9200!I&?^pMV_o zA|A&d{|)ppKH`6Z{5SA@ofF((e=zb-0_tr-3FspqB~*kQ<1e8WBQso`D?sF#++PumJi?!K=WiKM5NlM}AFsAMy{uf9jm*4Mx65 z42L`t90x``BqAOX5f6!oheX6fBH|$t@sNmkNJKm&A|4VE4~d9}M8rcP;vo_7kcfCl zL_8!S9ug4`iHL_p#6u$DArbMAh5)luHpWys`3jQ2?8hjpn8GIf51Nay4 zJ@7-FJ-*;za3OFsI38RQTn=0bTn$_Y+z|X2xE1(uaA$B2a6j;1@JR4@@YCSuz%PO4 zf?owM2d@Ud1%4a+E_fICBk%$6XW$dyGvEv0Z@@RfKY@P(-`BZ>8|)7b1s4Gq11Ew@ zgUf>}gKL26fgb@k1GfQp0CxrV0uKNW1&;<#08a(K0Dc)fAG{d+8h8zOJ$MUv2Y5Gl zANUaXDEJikEAS=oHSjI)&)`46f9ss&4Gsbq0;B&+LVPA+zLiuF>tlYJR0r}#V8mlm zCge|mp9J><4*?_ok|sj_3>eo>l8_&h7C|5JmW0ozk~Tsg*B6qI50i4BkN8SD2Ki|) zuFoVP|0Q95m4tXox~p%mWHPui82P6p@=eK>&_})~`7Gq{cgdBIzXQhjESU>A{8JMC zD2d}QHBVo^)Kc(T@Vnp~F!DjE^N?Q!)1C*qymT-aLDE!_a?w|5fK?HyH7j91nR481*l?1>~K;@MrP_$ftuBfV06L zfxiSJKPF?mC8NJ6hx}6x`KMe}ef#B_fN_1k+$6|f0wW)nLq0Btd|WOE>mxqOorC;3 z80SAFM3<*ve5GJ~rC@xeV0@*Zze(wd?GFW`e@S@}a*U@GjHeXT%ar|C|Afxv8-rVc zyMSSD`Eigx2hIks2fqjY1dRACkMUgod+6WOxdP5-1)R?cIG+`&Vg34GjOPj%&lUPX z{~a*;mkOsL$M~#(@mT@mvm*NaiqZP^DwYDHpR1SwInIB@o{&EU9uG$UP!aj6;_J}g z2u3}qcoA}p--;N&smR}{Vfy;16~WcPkAO45-NEojD*Tc9JoM*-(NCnpAF1$1>H(~O z5{&VYit&+(@lnZ7U%yfjum_w5&H%$-mEf;R@K+`Hs}lTG3I3`Ce^r9ND#2fAINxbF z-)T7CX|O*H_NT%AG}xa8`_mTd{z*f=PTLGQ@^>2YMH=!&+7+z-6ZkKkD+hw3z$L+z z!41I37nQq0J_rndRYtz3jC@fU{;Ir1-(D3QPnE)uCxR=0Yk?mHKMw8*9tuYNu7dhq z1@*fMj;{*hp$g)m3gV#(;-L!Sp$g)m3gV$E{8ttBSA9-DzN+)UuYo@Re*!)Zz5xCX z{D;ozzF_3{^f<_q!Km-)jUaCW?gmCYr;mdi{z`|x(&4Z44OstuF!Fu+=a7F5hX2y< z>hfyA;23Zja5@Z?Hc6R|Ed5 z3IElE|7s%MYF5&>U$ZW_8TbisPcZ6N%~_CRJl2H2YVL*pA@CRA>)_kqzjdw^1da#8 zKeaF(Yh^$mGFEv;NswN;OgL};C^7#zj~7(p8-a` zs<#Sqpo+y^*n2?F~%Ive&2J>65{Le9{d-kzkkAh6^I?KFTnX% zAT#l|G4n%#lEkZE=7$38Ujg>7z)Y@ZJ}9t`_&$6F-@uPT7mSNj;;c9i{sfo7H8K6C zAoWymFzbK9(=hu}a4qp2_z1obx=<{f1ZTpzF#A!cEb%XK8%#bF;`}P~GwbJL`f;I+ z#L1UJ`oi?%!fA*{fe0}sJt@C?j6S(N@aQ5*SFuX0uZvq?&ii7+iIYFY$e&{5Pcibp82Mj}{4YlS z7mo}-zc~G<_*=w3!X+^0Q*ruH@vm7Qg~^xV80n4d}|BhLI(ihL_YzLlbXm8!}8$hT7D zTPgCb6!}(aEcYYdO3fv{9B;z>-YxYPaq6#h>@Z%M-y@|n6Mq}$!~7m8{WXGtt|CcmU=5oy_KcEmz~Au zFUI6kS@NkY`Be6AuKx#9f8|nz@p75*dzkzxSBg0KR<058mN*KtU**`Za^zdNgaJ{Z*j;D$vg> z+z#(wF*Z(&)8jXBUR)Gc#C32p+zE5uRUAqD7rX#de-+uUiU(PL7SpdP(yuDT3)ffT z_fDmch*NKssJBY&Po?Hu-v#%_qcHuc(jwyIQ>C56kKs%Be(1`~o0XFj=lrXjoA@WV z46cc(zsl5Kg;(hoezKS1&u0p@6!hBVQd8*2XTwe&&->cBytB_w++H-wxJQR<`GcoyA zWi#<>nEj~Ad0#bKxW4K;xD>98>){rd{!{f^;v?`RJP)tHJb%>##Q(-O@srTi;$!-A zHO~KPg;-BLRimD&QBT#Vr)tzwHR`F_I6iL{UV_)-J@_xoJXxLoTs>L1zItX%Jyri7 z@zS^k{t{C^)!Cowqgg)@)32*@epTPX`akg*d?R#?2u%LeAb)DS#`e%0Xos=@hHgY&B<=T}Y6ubLUc&#RdO(~oNwBVGyD#m#YN z+z+KL3b#30wt#f!pAo_&YoX z&%{gc2D}fS!q@Sm(6!=W>aA9G;_u@kxFRN>YH_~RqW)?P;ClK~t*OKp<7iC%)jCZ4 zeCXP7a8jHR=fu=gZJxh2^;DaBs?GUcdnEVg_gC%t#8+bKsW$z&_8HdS#ZN-lp+DCl zU+U1G>%7bL1#wx-?~OW~XLWk8p69Q#lsNTL=MeEznE9{H!!Ta=W!wn2#N>C~A;f>e zGw>?B5%0&GFLgOz>T;$pZmu8--zjk*(OzZ!8qHJZ-)-|#xT z2cN)K@x#!K$*;zoPmQy&o_V8jA>!q6ZQKlZ#?)iuk;Li8jTaIppBnEVeiUEC_d%UGV@s8c)TGaWvkA zkK@bu-_T8C<5zGNoCg=cW%1|uE8G$H#XsOlcs^c*x8W0*`LQYc)9mGNeX}?4JDB}w z#_zvo^qXe%n`ZsFAN{7;c;d4$zZaWPPtEqSp8aTcg*f}sJXRQQo(yNgIWfN|XGzo%N{ApRjPhWYzTi@L=5 z`%8mX{TAZYcn9Y1S1r#Fzkxa5TJd|YRmyOEtE`y*-RcwKrEzuK7`MXR zG5Obu{A)%2wIcsot>Av^G5gnw{cH74xW07+PK>G7*8IL}{Xf>TU#;1%){R)tdDnU% z@$c~%JOlrR`Flxg=7ZM9SWkazeJhN&iHVcqjF^7a=5yjrFy~*J-o)wOZN?Ml{A;t6 z_y)WebN;n07RK9_!#q!0o~JF()0XFHJCys4#WV5mcqcxH&*FQS-|OuXgz$ z)6d%{3)i=2zG|P7IP+C|=BxIfv7YzSp8Rc3{pLaiWC(gT0oOhi#?>f;RI#GX} z*uPHfUnlmj6Z_YR{p&P}?>h-Ez-ut)N2lY&ui%HFJJX*!vmc$`Wc^3DB(8>;FFVtZ zI+H)0nI}81=YD@<=E2U7!+00YgD$Cw(@(nOBAy?Y$2Bm|+oc`xUidrwGoFrr#nG62 z=yHnqB}~0^eHMPP-*lz_c1=&5{ODSkcxhZ6H^cPbu2IC9uevf{b>;cH9_0G7nEdHV z{&XXMx}^%Q@0Ja}gA3p?nEdHR{&XXMx{*KK$e(WHPdD#grJKwi^ z@9=rL55hm=V0dH9$SeY z!RPSp&^`Hm+>`UKXJ*#t!SuhL)N{|8tmp49Jv$L6Uwd-?^_V5i<{%lxE~&Yf5G&FZ&nlMy!eKG z`3>{qH+RG9`$XcTn0)E;HgWo8pHjrDW6t|NUlZp%=|lhMGoJOFCw-O^-;Dpn)Kj0E z#Gi)ln-HhN^w+-RQ{UpOr@!`XK%CzXec7MBLs`%M^kp9E`z!0C@lMQn)0cee%lXqU zMtFU{M40{R$M5%koJalm{n@Vq_p6PY;*Piv9*)_+ezS=$#T)Qmd;(v=|AziH7EXq# z$8U2I{}`9RT@9VIgt7sNPP~ZJ_k~t1F6qJ)aM}Ta}f18 zi258veGV!gKF^@KxE1b+hvEr%K3<8p;A8k4zKNfN9vmO1#;@UbaUom^lTU*i5^sZh z;6eCDJQXj(YcTmV_$2YGp}&ib6XWzaH_nIIpYQ1J-!)-Hc5j`g2o@?mIu;=M8XFqHFZDCgBs&a0uES3^0k zhMwT_IIo6sUJYaZ8&)B_epqeH`8J@t62(9EFGAF?a_44gZ06VdkL`7m42uJu(7wzKzU4{4M-3E{UsR`rAnM zYh)Db*{_l8*GTqjB>Odz{Tj)Bjby(@vR@GSB|Fn)US8AL*|@o?<=y_4#(cc%J_h7pKHoaUT2$ zE{&_>Mz}5RiOH9r$d{kyu%3SK6aC;P^7|+H!OtHlNt|6}R@W7)5<^pmml|FQJbvC-lF zj%B~b(*MWO|HqPFmj%;L#uXsWJT~rg;$Pv8n0gxb1Mx|CK3;{l;lua> zz7u*p`7}NW@r;=I8&5usC!fYw%<3P zd=m9KiT*z+J?rWJlm17%IIfKAVfz21Uc~ADlQ=IYO=kV?n0%YGojCn%(s|;y@YB%0 zB*66hU&yCl$fsY(r(f!GKl14p-uEwmvi=OdfggvS92+w)P0mc5emyxq@nV?se{x;o z&2eY^Egpu);aQk@X)@>A_cQtwl#_oX@9(WMuyq!9gIL|+I1M%JX1ip6uW8q{t6J~#Aaz4(ao@Q3#`i8g-rvJ>O|IDQS%%uO! zr2ouZ!~M78!}vVDg~_K`3BvfSG&nnc4;RAaF!eU8332-Otlq?j;&FI3UWPYe&Z}9> zE3>G-*)hZGXD7sI@$2|~To{+fwJ^WGXLlg}4IYNsui4BevzM@*el`0b@ss!}eh_+2 zY)n6&lbJaAHHUsarxfd{&pFiR9O`op^*M+7oI`!ip+4s<=JQwLEtvUu4*52R`DhO3 z-`u3({pO~_x$uX$7_N@Lz-@69CcoxRAU+Ro#nj*2v&89F^J0YYc}eg)I3F&FtKbH> z74C-lJveVH@#*+?ya6A<qbKWhSMtm`j z#@p~Ad=B5l^zTLS!}y}q_%-}4E`*sE7BNpPBA*tKPm9=(MGLwATD%MYg*pEhQD2MW zh3gkHUoL)=IM2VhAn~%eCjJtCjiWHnzj!(EO?W>(h3|*{^%MLl<~;tjCGkG^2mA}> zd47#1&OG-k_5LgG@3*+&^}l7qZ)48i-#Bl7tHb(cxHpc*%oD%yJijqd{PqvmKMwsn z`T2VW;`IODa}xg;m%yLl`k43qdspK9@kq@3|9w93m3RyO6ElDO&iwKFqj3Ea@?#16 zwp`?0h@c>U6HnEhDV zmUs{R9UhB${-yN4rR2*}&cme_xZmB-%VJ{YgJo|LXC7U~{JyLj>%YY8$1?iKGWKH` z`>~AuShk7#^Zu8eB2K?qMn7FnzgeC+ynZ?J8Hz^5vPAFC;yjEV*L`l5z`-* zli$mEz7sP#rKg67eD>x5Ve8u{&@i+K;On+Q4m-tG&4IjZ5@xP&0#=wa&`M;9< zU&*|)vI5sP#vSlrOn$FiMEnm-eXsnR_~X#4lH-h+`C!%mh}XdUK3dg|cyCO8ubN1l z^KjJ~;#=`y%=53h7sgk|!mnZKd38SGr7-)kx(RX4x79<5bH1%6-&d3GtI7A(1!YiDyk=lj|%#Hs(a7l?DdM{~YM(+{GVpQGOi?-yMNSH!h& zTO5UF;Ki8t9leM6NqimC|Ncl2#{Wo%bKsBhr$)EgM z?9ck{Tt5hpz?1NNycBQ1d+`a(ytn?}FusBFZv*?aAv5dW#LNR5J|o^3GY@QtB2NF? zFqJs@vw?YF1O0u&!|?izFXLD6t2h_VkE#ESRf&IrTVwKN<3Qq^ha0C5Ux-)Z?f3}( z8{ZARDH12enK1L>CiZJnDb~|3H<2%!sIN`TkDJDEziF8BV-x*m(+<|NKbtr|pSRl= z|Mx>S({DDXB%T%L!JpvLxDFbFpqC3$$EZoZ)rfB`D{x!;sY@KX$$$bWdZAd!_?=NZN&e=l0}H^J>O^}2N^@#&a;ww3+b%6@G<#P#R!P5dPEw)i+Teht5i z3u5MlZOjYXnzFtN{uYnGlkhye0zYq9S)Tp#ypKQozn8G>&u9OB(PuIHwe4vb-%fsQ zPe=Ss{2?xmKf~1LcFxP~Jy<^&|BPqg-|>397t_zSUnBls=pCE~J5muRpLV=QyfChS z>tOo-4)SS7f7Xw}Q}80Z7VpHz@Fjdd^iKNy&cwviW9F}&`H5G>^rxNd&rbGd=QmtG z9FtEw=~p{{Wj*KN&f~<{pPl!@_^#)5`a*r~N`f=s9GH6BRg8Eg%zo`+zjiTC?CQt$ z^rv0F5a&GHML*xQo%KiX-}r9m-R#%yq{N@^g-*~9+q>CJl1|2<=g z^Y?;1zY|}FcVp^p5B0W(dfUr>?WNxKQg3^yx4qQcUh-)#^|qIK+spp#rQY_EUwg-g z&%2j?w3mLgH=6bI@4ZKflV5wuuf5Dq`{IY!?_+-2$9cDp`DtH4u4jJQSCcsVwXYNL zVVM2d$9%bu`rF5Rx$hA7W4_#XlQ{dcpZ(d-{_JOe_On0x*`NLF&;Hus=kITUyJCLN z?C0+b`=_#gF^z8(6&GrriL44mfBwKPoJR-F;47j3q(A+cfOs059lwVQ;W2m$re6M}e;$0c{Ke-v$oo6U z`#Z?{JIMPx$oo6U`#V^R&-)5@z~5l{!@+UHXW=DyJ>G-K|AUu_-w%B#Cg!|8l#%#b z_#<2#GtV5VN1T3fs0;CLG4*h067l(X6{f!)$rr|t6vY*B9o!86fSE6jFkc*DzBs~s zafJEe2=m1e=8GfL$5HC{Xp->z9nFAqVCIFRO^CP0%v(o?5@$b-vL8p;kE86zQTF2~ z`*D>0ILdw;V?U0uAII2_W9-MV55wm<#=LdxH{z=?`FD)-{TS!_G0ykn)a!Bj-EsQe z@wdazKb{wp@5jmaE>6Vtf=V!Rgbz(+9i)rs3-{3QE* zlKnc#ew}2$PO@Jo*{_rA*Gcy4WOKd``*)Ig>m>dAiPjOZJ1#XSImBk`P=dEhkr zb-Ehs8)5q2Y39At^uN>dxSskuy^Hu+O#YlEf6kCUXULy3tOo#xh}-Xr*or- z(|^t_B2K-X+e!QwX1+XkKa8J`g_GkvxCmxH&a)rq$(Qr=icqVH$DfqYKf*_hIVk z0`+v^X}JFH1UN0`eEOU7>F=_vryu{_lsNhFcR%9vo4>y&J`1xye^XC?vp;{69~a4w zi^;icx@i*dsV9x7{7m44*PeNZJA16%nEreD6XK;Y z`*pbi@m9DS9)Rh`mnRZmilZ^-)8(VY|HjP6S7LpME9BP|^6Sbuz7O?zh5Ec2KU{w`HGU1#zpfS}{yC<9UF|^p z8$1k;!}RN`tB7yJ`|wG86+Z}lEjDKUxt5vu+nDq1T1nznF!gwidb~zGUZWnbF)v=5 z%>5T&_V3zO;s^01d<)ahuG7!1)6cHw46nbQ7Z=49aUI+Ycfx%!=jC;N&t9Ly`em4W zyS|_JX?z1e4t;}qyup6mp#R_afa}?>8-T=7}5huN(BQ8}zRm^sgKA zuN(BQe-eeC|4%xc3x9-*&dTMU5V4rZ;d8C6)(ooco#m7FXMkh-{$G!wU-`mH+>+ht(nKARioqWWZ7w)j1ci7K6?B^Z& z`5p4>4*Pe9dEpN8!X4&?JIo7r4)XoahQ1pMQ(t%Khj;g}{xqf^-evx{$9!;)^Z(wE z@P7BkVDjbOZ^Zw=5u=eCB6e6!58rD&<~#R#s9v}gM>IOejUG$ z3*+**7XAu%z~5l{=Yw&?XW=DyJ>H8?;%k_Eco;W~Kcrtie2w^fnEiTKfjIT?ka^`{ z7uNU3^v8!&h%dtA*TbE}=?4#~r-%2$_5aZ?|4UB%Rh%1tf;pf6t4X{GCZGQ6L;QO@ z5zoUb@m72YpU2eSqZncQQDU3{zlA@><#2UOzj{Q!dPKi^M8A4Ozj{Q!dPKi^L_R&D zUp+d)_oH7uW`7a3$Ol_rl*{&ez9ti7&^S@Spe$zJZzdpU`ifqzuh8pHNRvO0%APc|yKCAzz-5FHgvqC*;c$^5sc1pHIJeLce)Jzj^XFy#8qloCUKV zPuY*B?8j5~<0<>`l>Ki*?y!2AU zOG%#n`$dQSBjTm7ULsx!>m}l)uwEiw3hO1}rMld|Iqr=6;U93=ZzEm`>nY-;u%04b z3hOE2rEva>cqy!>h?oB1^PYr`kpPGDPDG41i08%ZSB%QU>*MhEO+<|D#0TLpUm{{m zCmzo85i!;g--A!!tDz&F@x}a!2>VS$L>l66V)iGZDDjH84sM3opNPK1hv2Y3M?}mZ z&VEH~CeD6E{6+k7=*Z_AmgU($|G)ks7C$CMc-}|EWPf6g<$Crf=2GGt z@qT<7hv$7n%*SCo7Wov5`iu2C>#4U`>`yH6Cl>h=i~NZd#r@fzSkzmrHLTx)!}%v7 z)*0gLN33xEiHJ=Rqe@4V(f8tSJ@$z#$ z{U%;D;*Bx&6mJ~y$#^DaKjP7!<85dCVSFCn3LT&Pil2fw{U<*A6aQn@m%yLl`nVb{nEn)hKJitU{fd8pIQbO+I`RKPCy0aDzXVx`Q*R0WN1S>~Kz=1?$oe+82Oflf z#8dGiOui*x{}PaI3COpEypM!S!}}-X{76W>C)~<<=7~hH!g!)&nEXvd{w5-S6Oq4( z=y!>ZaQ`!y`6m(IH!OJ{C#2<%#B{hB(=fccGuW-J+ z!o2g!B(9%_SK!U~B)*96hEBmelOi$k^!Pno2J`+?@cvWq{!{S&Q}F&%@cvWG<@4xQ zDR{pr*pC!fx&A@ul(BJgoEcLeDXEW?)JMwCxxOK8gL`1|CnfVq%HyoRfNzIR^^7n6 zo=%kzr^T=1_i`0vtQ54|Hb`E&3>h3zf!Yb zsoAg8>{n{`D|Kx?uRCU*N&N%yX?Q+fiML?tDK+(!ntDp}JfX5Y`zP|*KhOU2nKYT7 z{rg2zFKOtHX^OF)c`ps~UK-}TG@ZGg{Yk_Aq?yQi`b!$}C(S0-@5iU`HT*Di+L!Sw znDZrVF5>K8+E0mB#b03NhqUBZTIR{Lqq%-2UWA#i($cTfaz3Zs$Mxh}TJkL|{W~4~ zJ01NyUFPuq>Bz@)`G}XqoNwtk-_o^WeK$N5|AeX6bc>0v#XIm3O#e?uKTH2?`HS_L zo_>~|ewLnomY#l=o_?0TCif@*(vyGb$-ngUtMuekdgk@?%rn zWH=Mfi9g0A@MpL_Zi&0%{&*xlgim4mQHF&BYq$A{_;~CBimK3|1b1woENX9 zCr&?j?Gxf32DQB2GWaNxkLd{LV?e$l>A_&mNII@dG4 zxPQ6Wzg*N~uIC&6d`6CZe&I_Ix#-uqN`xxfyF8q4dFFBd6?iiyU-FzFPQK)!pT9#te~0~g zhk5&*oZ2V;*?_+42|9pZ62uw3vC|{pUA$;rx1^dEou>#OYV> z)34sAU%meg*AK&-Z|~0{z67twd+=ZQGQJ=BgP54#Zy#hN&hNJmJ|bQmSH|^l3)~fx zZy$^%PQU+v`ut!W>vv=J>w_!Asn5JGhw;2Aa8~>dE{Mxv@+)ss;`Fn;{fIL!8dP`If&l z@y56vj>7C;{xQU7;}w|w%YT&kW&AMo|Kj1aI0w#$OXJURGu#yq!ej7kyaI2-NAYF+ zF!U$!a9W%L=fkD(=eQZ}iU;8_csAaG|HNl8=XrtnVZ1im}Jm&ce&_4=nVEtZv0$;%oLKn=4>8Aymj|&!OJ@awFdc>KJ3w9y?Egpdv z;O&_HSny65FO&pxeiY)oC{%*=pW*trCFbuHg$5F5{x39z_(HrIGrtz%{4C6QSvY-o zePP~jVcu_H-fv;vZ{hmfuPG+~3zPqa$^XI=xPAuy4gZ06;nVmsW*#fT@5drZ!}Ud| zk0R_}5%#YL`&WehD?)t~p+1UGA4RB-BGgBbNqk@Cvmz^qZ^j2O`&Z;TapsMp{9Y=W zB3xgT-%CZAXN&TCsc0##=l4?4hQ!<89+>l{DE+o5`Bs#CD@wiAxk}uaeBOC9iTl z^V+8`hw)Ee!LMS@r%xLZXMXv#EAjsL7fk>7l>YH4{o_;e!$Y%p;|lM@ln~ld#r^nYQz4D(2t6vUZF$}o?VVIC>N{*_@KDbtkux5K^g z7(4^hU(2i`z8iDCl(|IwUg)xsn0cgZ2I4vJC%6Ru4A;l>o3iwqvhBe|abQ_-LizruL#&-q({^S8nV*0VnqP7%L`ABL{@GA4g279w66SI3QT zTig@#d#2(~#HZoKcrD(6kKn)Y-O!cjra8-r|0*X7?^l`qs+^Pf$G8OM{Hff4cx&7PlV6p8 zCO!jmURPdEoc*eNk~sBNnR({3xZ(QGQsLL|d$=&Jfa%wtH78Dfeb%4&C_Du(!qneq zoM)dMV?FcCXZOQ+74oS{a^kPzJeYi{LOxX?pQ_a7`j$8f55gnxBs>qVz?(7ia+TA> znU|}OUsaixtELFAugbh!H8*kQ<*M|rs?5t(8*)AKQ`KI?zr%Ae^;ea7x$17#GcQ*q zzp64XSBngRlr8v9j^daO=8 zR!<$?zxoHbATEnP$6w(AcsV8?s*?}Z$%pDZUv=`K2Ki8fe5jE%{QMf6Up44AHOPk= zd@!BZ@frP-8UlDR?1Xk9XiB_yWEiy5=*!`1`A7LYx-Aj`{snlk==*dDhp$ zrV(KMwC#D>hD!v*X*^)?U>&$buJRW8@ew0QJ4Lwo1XP=;=H&hu88a4W|;h`Oa9a)f9g))`Z;(R-iY_% zllUqopX$+%>d}wtWe%^e_cqRlOX4cH0jB=ybtBF^QEwFS$#?-?jmfuqoS*fsv7UZZ zpMF%IepH`+R6j>}zxp5IVz?5ni}^iRzccaS_-8yF|B9pWPJ9%zU-j9q2JBY@_NzhG z@O}-L&l-G8yafIX*T*d}=Us#T#M!?FQ;5&St1$Cf1NN)IIo99APeXr^2&cl?@H@Bw zCcnP;oOl!59`_F2komSD^FzaltY`lkE+@VTa~?LlPW(~mMx6hRJ|bQmGcPrwKQ*F1 zHKIQ?qCYjFKQ*F1HKIQ?B7Yif<@+7P%u9`K5hs5dCkW$>Gvc=}_12hv-kAJpOn++J zg8Q*wjr$S*3IBrUd!-5IU6XdKC%>9dk4>n@CNsHy z5nh9t7n&R9;gx7zS9lwV;|Gug~yf$u%JL0{V^XjWp#4ljZ|E4j+ zc+;df6V8XrV)CUa_0p8{sp+>|KLXQVn*K^W8uPqO=^st$AI<0=&FCM^cpuHk=Vraa z&u{h}{uxilJWsPfi0{Vab2IX}8Ts6dd~QxYHz%K)XAeKGIr-eYF!3^&^SL?wp*j24 zoc(Lg{xxU+nzMh+*}vw|e4m||dTIVQ@jIbg#K6pVEz%L^d~Q*kczIk4e}y|^`elos zh|@1yEF-=JAI2B)zoA>k!Tero`95*-r6teblIL$pziS!A{Wwosjv>zTw_HqoE#85T zVERc*@}uSBaDA(InDe+5=W#2}<5rxM6 z^Y@(AiNot#r^j#Nk1+Mpx-#*4xCQ2UTl2iF`TIiaO@T)i% z&W}IERq+?NHSUhtpEl!&Ps7wtn`q+O@F9F2Q$KB}pSILbTk5B6qws!hTjH*`KOTvB z-))Z*zl86FZubGEe%n#M?Wo^&)Neb^$9B|nJI=>;^t*Py^L^G~=81MZZ#$m19nbr9 zWO%=?li&=P^Wp0ciI>Ko;rf{O{q-Q?Bk&|V53j(R@d11qU&sH2ZqIqyJ_YeCI5++u zE`_V%hPVyxfrn$}t@g}Y?SEzcA9x$4AGE(gocW?dtT5go8Rop~K)>ujzwAK2>_ETl zK)>wJozJ6Rb{I{Z^RolzX9v!k4(v|{_NT)+?*BA&$MpD3Tmn;19m$7|d5spC)F zk9_F(8}Tie->V&YzK)!y9XU@sr3vrXiF)Zoy>y~pI#Dm3sFzOEODFcH6Z_L?FyDvs zq|*%I2uFO|msfVt=@cHvYccY(o%SXH#0{@r5__hY|$xL@?Mp3g3S zv7hy%fA!2n{0;m8E`lrI+PEpEUV2jBJx8#9BA$!sXFb;u-;FQfTli_{Ud)HR(h+CB zda+-<_&wIE8P|V}qcHi@YYg$FI2!N7NAWd$FLV_37nOu~2F!UM^&#;>xE%f*a~?)< z9!7BF2!{asL%~bLekk;)FOY&WStXKk*5C1@n8a55M>NP|tnne|`8qeLfEF-=_rr z4A;jkaaT%)B0hxw)t^G%rF68NZE7V)C^w`P%mf)>E&2 zsn@>LYhUWMFZJ4&dhJWS_NCwTYZHE-eqHdlnDeUNbmGiI{eB}({q$$P>7OE8-=FiR z|Et7b$Go5Z?-9?3={Nm(fBkuX{pmOT={No9H~mNRd7SV4rx9oW`qPj4bN=;T!}ad( z0ph3eb^KrG0dX+>YyjuofI_S#B1TNa0mPi9)`zZ-sj+lVf?$7@hh1A{ar5N`EeP{^L^KxcsEQw zd^eW(9J~_KKfe2u_!)cyKMFmB`X7>#cxT)j55+vskeS4P$LsKJ%=|Fq67hSXhtl7M zCLzv#4&6X}FJ|5ydWAUi?l9)vVa&V3n0JRU?+#<$9abXzykVc=2AKCXtRHday=M z_}wu6eFmHzGe3S`h&c1j_n#AQg4<*2`+Ms9d+Pgp>idTZ;r)K7fg9s?xEKBo|BR>O zUvV_viI0XJQ5=`YweVM%^K1m?*@$7RABSh*gZLz-zD7__BV&i_M<&Oa@!L2bE{UsP z`q9W%#Jk}Ecod$Dnde4cBhL9hit~OH^))I-c>SmkaWPy8*TtOwqv*$@=*Oez$D^il zKhDch{Jt8so%M(Dc})Ku^)!r+PJq*3`q60m(dfRcr(cYoM|=g|j1S;5_)h2_W8g$M z9ex9UfH^;Y+)AAN{PDjq{!<*B0%yUw@&9lsTn#tGQFtI8ji=y+cs1S@`e(l1&y|VS z!!2+Z{4E}VCt>pIXY%W3^6O{vYYgvyOo8zJW6EI8w=rK5Z;hEJ#_&GI@IJ=yKE^EK zemvh8o^OoLcbe<3WAb+_?`tgQ-PjJ{^AeraDGkT{F=b|HK7pqD~D_0 zMz}5Ri3j8Hcs6E#Cj3Es7e0nB;=7?IQhyT@6Hkxn?-S|o6X_Qd>F*Qi?-Re{{-f|@ zya2DloJSM)6F-G-<42(<#SQ(-I=mep#>`*8+#>!o^knLLGWk21{GCkxPAWuBYbhUH1=;A`!|jKoAwL$=e(LmKc2?!UFJc_!!QO!9dq`8<<+o=HB> zB%fz-Ud>`2os}j0ezQKnypLJDk6B-`p68!Mzn;bO&l=11oKLfs5MPUT;3N0~z8!jY zeq0P!!u(#E{S)zNcroVt&*uBjKFa#D_#e#qH;40j4(Ih8>TeG9H-~(m^J(~bbE@Jm zaBJKhbNgZ|J%7_qoj5b2$&^zRC4@G5Iu?`DZTk&s^r8 zxy(Ov`*Z){cs!nsw_^IoT>8h{tE}fdoX396OCGMDmmTNE|HJgxdGyzL%nS3F7v>G& ze#}?%rV?kqn#X)KkNTWPe$6|>{chk#q36fNDREYu2Y-S~ra#Y*BF_HJA47Zw zrXJ_7C%y;&g)ig#p%=u&NpVK}7XAp=!i{iS+!GJR^#29){{_FYeif!37aSx`|6lM= z7+)BHTj5T)Fa91+z;p02%sjG?ezK5$vXFkVkbbg=ezJ&uvM6)-`HSAh`EW^G1vkL# z-=c2B2ZUan0+Wx6$;ZXy*D6PGwz3fz!Ne1_uF#foA7>o3SYwyL;wCVPK)XHzvm%d2(w?me@?s!?uz^1;W!%8 zpMIx5{Z4=S{U5G>9C}GSoC;^d@8GhyCjJVy#q{$f^z$Y3^Ck52C5yQq`?G}px8yME zPvCR-E`AbvX?&a-zlNFTmom>Uts1Uh#{Ms(zb?zidiv`!`s*_K>oWT5GWzQ>`s=b$ zeBNqIy)L6(mz`og^}6g~7++3)E>BDRb^JaqjLT!@kLBd+a{Afwp7Q^3lG4Y zCu=4XUx4|&wubY54fD{Ni(Jq7vi5mhzfjL>lVI{|Z4Tnh(`$&8;7ua2AIj+p)5$nUp}<5@o& zFU8Ck8}|}tzSww$_`jhy#lqC*Ci>eZ`r9VHv-VfYt3 zAFsq)@Spe$zJVWw-pqb&rk`ylzczDTZYJM1*W>==(`NE%Gx@ZceA-MtZ6=>KlTVw; zr_C4nK6gWJNr2Pf?D!L08dG0e8WC@cd*Z=(GG<=b!o0ABd11>buIIel!g;rq^KL8o zv2{pzzpc!JTc;3be%`v8_%?h9pTjrtlhE7f*V|GPe+|Ej3*xf4CjJtCjiWI8w`~mZ z8TdE+N9gS(G4;5;0r57t7v{X#PCag4%zEDE_8r8J;mi0z=pAuzDoj1@_<%V5X-7rk z^rs!Ii1)zXh2B{Jv;RA*5NH2)@_9SEv3>v^h3N-7=?6RM2RrEpyV8gE+eJO>q8@fp z54)&`UDU%a>R}i4uq%qszkoTfc5zcRgV~>b?9V>-=Rof8`UCke^Ywum#GBxI_-W`r-@x>@KZ_8ri`maV zdlDavC*j$6Dc*?ref{TY;>;HZBg6Q?Bsc@kf%*Oie%+B(H^cOc!O;O7PK{LFh^$It%rf+L*YNA5oRpS}=3%K36ME%Ddz z`?x6PJUPmIb+irZd*NZ2{Wwa!99_)%wRi`9o&YaCKl^j^K^Q+4fytL+%xlNqWPM&- z43j^{=r6}wvc4lGAC9dfz8fFMmoU$NJZ>02o)UkC>tW{U<2{IfhnW|TbKV{2d5@F- z$I1WWyx-&G|6k<)Up(JmocDiy7=GWsN?_{$udj%A!r$Uicq;xC^S=MuOZ*hRfuDpv zkr0#LC*C5S50}EsTPN6$6P%YP25>$3aAH33KQQnA#2Mn82Pfl)@sqs&lk~rn^uLqz zzmxR8lgyVV+wpn5@o+p5lm90-5Cvp` zJUq>QoF+d`|H<{|@!im8qVaZo6my=O`8SN8BOlLQ598;VN6)`Ooc?>B{(HVY>)GG) z9f|kB?BDrl;+&`FPY}O`ABDa^zqyc>cuzbK|Ac4YC76DH;b9p6J1$O*U&ncIaa<+z z#oRa_E`@92Mws_^k$!QJesPh0ad9*EJBX==i}%9#CHmzh`sJm}tbYsh{FiwCOUw_K zns7bOf2kkwk$4kkKDcy>IQepk`QS41!DZ%y%RKMp{NepC7sKSsW#0GYwydW!4_u~0*B_2+Nv*CAe0bB;xz>P8U#FbvenXj+>Oq}|- z!hCrpn)N&JQT#W)6Z$Ikb2Sn1beR5s^#kHXa0N^~U2RI7db-MaaFu!N>Ugf__sP{| z#Hqil2Z%F|T>XbQ^>-~n7{8VlvtQTp5~u#IRVH2^x5C}=AWZ#TBfqZw#`<-552pUE zT_yf7^z}G6C8i#)ze~J2u8&*duDCxQiGRWK@k+b}GrwIYf3DNNZ}7Y~-VX0~BOfk_ ztKiPKHy(<|;+diUiH#HE9GLmX^ya6;tKu(kYfL@g97udLo`M(R)p#2|gwNrdnEksIKaAf>jbFpeSGVYQx9YLJ z1?KnZt#65sz?1MiyaM0Gk3!#$i>cq+^!M9ESzi&?!PMvNsl*rIHF!Hd9Qsa9%=vw% z2=NN|dpriuz??64{vduFU&8l8-;IS6;dJ;7%=6ymdGGSPcWZNfGyFARn4j;@ zCcYGJz8h6J7@n}2+GcP}8UVgld^@s2|d=ozj{e*e% z3HA4c`g;<^^~@7b$loXA?-TO(3Hkek{C&!N`jme0l<)hL@B5VR`;_ndl=LcsNf)#thHf$e84J%nn@N7n9#HClgm8ya2wnU55p5M^Hls* z#J6MSk@)08{C~ss30}r2@oV^f%si5y3h{=x9qx^Xi3h$qgc|BoG;$PuTn0Y(lDB@G`uXr8ai%;Pj_(|wQ32}P-7S4ysk3=`$cb3UZpMx6RjN&Tm!{!=j@rD8rv^?G>!RC#f6%>10HA#vvCRJ{LG zKeC>DNcB7M4R}AkhMA92^ZOw+zaLUFAExH{Q}g_(dH&Qqe`=mTHT961`cFME{Qjxu z&9|3asUhtuF(_+$Jju8zON9dKVf0#h$(=nrY4S-%^fz~o07eov*1AFfZE z4rj+7;9{8kNL!D1E6hBZ_6OqQ@m#zT(=XBOUyTPDuKOw5a!I1e&?&i(3R&d*HbZ>E8)r~Wg| zAie}|#0T(Md@FS37&r;egvr;;1&Om?nd=az-ZOV6-XD*~)9`P2J>HK`VCIR;kHYw? z%oDG^PW)Y57+1vgadX@ilOL~=AFs}2{jYc(-ivwuSLtV2sMjpaQ(2g&vg8c!pN0L& z@)7X@xEL;t+0QK1h}Xtn;ID8O+!xb7vv8hdS$CSS5GBhK%iY)6To!WZyW%=^0A)CYfFMGn0wQBTrrv5BD{Z}6Z5+O89cpapm3kfG z&{kXhj4iFyY8$Jy4%L2pXRv$yp8DT+o+oGLciy%4IeYE(zH9B1oZBXhpW6YSfT{oI z_9Q+8kHg$gp38iA?)9|ahHt@l;fL`r@XPoJelK)a`lstj#LvdmyRPJ4*YUJxJa%O~ zcD;`FTk$vXo%qL?eC$d-b|oLXl8@cU$8O|fH}bLDu<-r6@%M*rR}f!_Z@}9z_s`wP zuWpaf{we$l=K6R0ER1(Q9-oeT;i32;XAtj?M`7;odlV7p z{=Ns}wa3l0XT8?rLE_|VkKYpK{Cc(v<2}EO&%p!nNX&fEa|ZEwxE$YzcjEuT^heLT zh~JCpub!+gdeVPApJji>dr#_LPv(bSM~D0O;`^drU5GRP_8Lu`@!yMj(CaeV&&0)e zK3K9{HX}zUPtedE|Q@`JP9<=S}4O zrs5(@|K!m>dGt>n{gX$&=RM5v$>%)QFL`g${)5ncj>6n8^!Xa`ewhC1!~IsDLfS9E zYccDWKJ-T)@~6+E?Ef@=6~B%D8M^Or_;lPGpN}VC>QUcC#F-!Zt|HEO>ARlzX3YIY z-@U|d!Qa7m;QR4U@Ig%d>iazLSMi_m$Dvcl;Lf-kCZAIm5GP+#%-1QdN9sEEr+-u5 zCVmg5zNMZf{x+tbr#=ni`E4=%lb=KUG~5%XG4pMH332LK{tDu2F#VT*BXR0q{x^u< zj_Kcg`Zu5c&HpX?zlA>v-LC^a1$V^*@EAM=&&A7dCEkI*h403XV)C!wYs49U{XPlf z{g1_8#oh5BJQiPu8DIUE6Tcqs#MQV4KY(!H4L%98 zej7NFIQ=oOnD|wg^~ylbci=ACGhYt;0rAK2A^c1HyU>GLW9ru+@^w%b+7HJUV%86X z=$}FK#~|`^&^I~W0emN>o(=jD@h36)JcxQfi262&@iVwxc)Y>%*Wg^@d3Y$M{|3{4 zgXzD)OW1!6-h}ty@8BO|>fd1M)ezQ~L(UENAJQLRf@k6^UX3^6n{hR!o)7ss@n^ve-AyB`Z4rG;-}*tnDzJ2(Zn;DdOP$=;#cGKnEE-C`ETf5w0{WGe?wm&{(9*1 zXn!90cAoA3!v3FzKL0p;8s>iF{1=J8ivNT^2tADZhhaIy&%izLAUp;$zYd#2ocUwe zI^yK_F!FmC`8|yM9!7o-`vu4U75+VLz+A84$A6T;i-xMvNdn0bh>G@N!&6Rx{2EDqjU>NDl3%09uTkXJ zDDrF6#PIWvnvP5GGEBW5wT1Y8{9Sw>ejGoIU%`LG?}Z*6F?oME`UFh99!rAN(Aq{*3+;an=W8+J^BlIrt3xdrW?h`814Q za2#g6bHRheYw$_pJ!}$+7HCcPh%$#XMP%6Mx6RHwvssW(^%%G z3;T!dFQoomNd3Ez`gh?x_RnJS{lXiG@5Z;`d+;Op5dJ0p9p-*zTog{``#A1b#+^w# z57S@c$nSAi(0(Cah3TJh%opRRhvQgJjQbhKdl@sIjw9bLIy!8B5&dz|>BM_t#?wV< z;>;fx(LWbe(0(m`9kU*~=%X-xG3$YgsoxiOr9Id4Vy@@Ki)p_S-+-&|t@uv-3;Y7+ z{4f42jE`@RJK?i&A58rje;M(acs?fo$8-J0Z>Ie%_`mU^_~)4Z8BhO=f1CD%UL;c3Y{UpGG8T5 z{mn3cWYV-}{>U(YWT;0O=9A3z9FO{(`4(~VEAue%L-<$tFs8raa*-TAlTW~>)C1K*R(OTr`}AX-b|z3Osio3Tkv=BefV+w z3jQ7bYv}2m@AQtuJL7XP^<+BzF?|Z{nXjfVCw>Foi&^hYf0X!hnDd{`^`60eJ>#@+ z{~4@DW{f006?1)OTtj>tW<1ZhoA_h+8B9LSc!&6>p)WrkpMmr6Fgy{@#*6VGHSro;i|cSbZU|izF?l~!l!J3|3a4=f7vU_f#8tQ&*Wg-Q zhwE`e=;DaU^DoZ9xj2Pc&lFD}PCm?~zRg_{wx7EeZ^hpXJ#PR`<4Jf9F2}t8Jl2!* zn1AN&VE;YX&wCqj?sw)rL7aL#kNP(6McTiDxgVVO2jYLm?_%ovyidb;Nn3mjJ`tac zPs3;9Za5G3$3yT4d;w-YDT%)zIVbvw&ntQ^nI1hSJsU5?+>ezoeoA)H{yX??%>79T z>z5MNFD0yBN?5;?GC!BHeknaKeE-r5@ibhDIsa15zm)SYB_B#_I3DY_Qs%qT*J#gt zSNcg9FJrzdW4#f0zL!x#^mq9i-}*3ufeQ07ygX+3;2!DS00B? z!Cmn{JQ8PcA!hw>WhHUy&6Nj;{|Fz#T(2vsFIRpRw!ez?(^c`cOkB^a$fv8QCs)m& zJ@*e+T}ymBuEzJ_gZNkY2>v+qBChYEGl{c4Tr`UKR9uEv;m!CKd=IY0jMqhniGL7! zaR+=VCf^nhC(d|XJeN505a7Ci@%E>!OV|KUnl-< z=xl3Dz0LL@&is&_NSykbWq! z`8hZrQy-Rdzp#8N?Tay=XZaf9KgIOda{6oeyJ7o^Hn=11jQe5orGk1;F_ZSxgNhZz z*JJ8o#jV7t{}m4sKZu{l{}(slkMO@juQ&?Re=ANRPW@TIdUeIuXkUPbVe)ka^>+pN zx?&moufzWgy^`}=Nj+J47VR1DE13^hvc6t9pZ!;3=8KizAkO@_@&V%igI~nVk5@H`u(u| zHOJtSaTiQ~Tr-OJWL$)oV)FkQ>g6@h(VlvF%{#=YA8V+GYfcT@uVMYQW-##!@ibhD z$)`2s(;D(=4f(W&d|E?3ts$S*kWXvKr!}91pYK|(@3m(WC;zS;LHrUt8!y6Z@McUs zz4i{`4`S-+wZ9~O7{3>KZ5zz|xHgwK^>r=zzn1)8Oa8AV|JRcLYsvq$ zd_Tu8;osxGg?AM5gIKN6Gw>xzjl!`I=R_%?hmegZ#_-@xyN{(5VC597b$BPf4d08Oz|Z41@VlWaTjP`P**G7M#FKF`UWTs=ecfVAy}a&L;y=KT z;HU5__z3<-=t zBl)ng8~f*B)=L|Q5WgRP68grYF`w^7)@L^|U)*>f`#*u}@ay<5nEu^#d>G%<8Ph+T z1`@vjv!36?_}z3R?X!3#z7}u7H)F=*xtRHMOC|9g_}iHC-NNZk%Eohz4a#AbG}=DNSyWaR@Tp3Ip3|!H{05T$J<8z+s65B zqyBB9{%xDe@#f)jd;?~DZ=;@VyMy-k;0N%-xE6CiwvBqY?FHJujG5239VY%3rk-y5 zfcQT{Z|C}KXMAoyf%cv7sW=x?uebLm-VYDPtmn3mA$~E=VDe*o8SzD!@w0su@pYJd z+Rpge&iLBS_}b3++Rpge&iLA1%lk8)w*Q*=AMxKq?`Vg)zB|q$-Uo9%c3eSxA*LSf zp#JXo7VW7=JAOj^8T=~#GyXVq)v@?w+yxK8oPX66;&U{z*uNUzg~^AVzaUQi-1#PP>fx@QVSLvB%=O(x zzVF&i``bg`yaY4;Z{9?FKlXU{5$As8<~risuiX3|amK^$c42%s`LR2P_*d{CJPJ?7 zMR+M*hsl@Sw-Tqnc0Wb@m-r8n+cf_~cfq^qpWSi)#5J&O^bgS$#yd~q*(>-y0Nyb_K?HNaWLgeJ`F{6DPJW)pi9bjDwaCXcw~70cdc7yk*W~+CzxN&$#`hi*Ir08`~2M>76l5G-$(!Ni~B!u{C)i+C$8VVxPOyz>c_rf;s@FP zY5X!ij2kfLx4%Oe-yfe};`8p$#l3NyzsdHT&;HrOuf$j5^>`=#R^SNHqfPTq{Cj*p zNyqgp>G*mjor}BU6dsJzIPQ<+@#B0+dIm1S3vd>%!j*UvuEP6qHNFGa;D>N6K7{M= z%eWpN!43Gs(5)jT`?qxmoP#^#T-+U}@L-(A<8TJgz(sfg&f-r_@1PB|5kB5jZdP*@&569wm3t)2xoC6uEN#02G`;` zT#p+v2Qqqa!BI|L7c?i&Hp_Gq?z6aV4(8)wl-N;yPT98$!poOUd(ZpM!I83a4=f7vU_f z#8tQ&*Wg-QhwE`e=y>^&JpT?kI2WgI8fS13&f-d3g{yH5uElk@9yf%JzphB0|1mi@ z7pHIQ~Ra28kMDqM|ga4oLG^|&GQi4l|Me_{^K#VMS|8C-<3xDr?4YFvYBaUHJ54WV-) zCeJ@7ej#x`kdup3IE^#72xoC6uEN#02G`;`T#p+v2Qq_|GTF^Y4^{b8!l%aRwLREUv^=xEj~sT3mu^182z^S#b5&U83&K+=P+#L_b>AHg4nKD7hxjJxB(cpRRA7vNQRcjUx+^V9?Q0eld@gb(BQL!TDs zZQ}h->x8@D0z3v!#U;1`ugAOb0sH_yh+o2o@%y1qZ-+bKF1P@X!BcSwuE6W@ZhQbg zfDhuA@L~LZ=rh{kPPhv$z+>=KT!Jg`db}GSzz^Vq_$7Q8zaRR{cDNJnf(!5%JQbJV z3cMcg#s}~N_#l1>AI9&8KC2z>guCDZJO)q2CAb2w$Gh< zF2G~(R9u29@Or#EbgNF0-Z;r^p1X#@l@n^{nZk0`8>_;IIAVz zwa4*aI=Nf-R%HtpRg{(&W*3$$SzfrXWL2wcO3RlP7MIUo*{V-T>D(3b3ybH@Eia8! zQM#(4RiEB`b270a6svAk8E#l_hcH65_2dDCIai;1ixw^kTvlGZICx>v(s`{G6fY@RR9fC=UaLOQhpH%^ z8*NuFZrqkHEh(-jZaQLg&aEbl8kJu-B;KT&Hu;75jm$3`)bwiOCcm&>^ESWv<$+DR z_G{h_XlmTJi4M`c?N`v$D!+N#zo}K@CTi8pe$9;yJbEd9^k`|<_(gitYmLt>?IW~4J$`DAwd83td&K!2J=V8t+J63=aO)SN zS6lXv{~tK}^k_Z5Y5VzeOZ#{`A#Ttd;q%|KsrhxsOUrr1;eSLwE&De&Z`s`Q zP}6TG#n(9bNVb133Vc!j*EjDJZ{z-NY1i`pasMa#FJkiX`0tw3_It@!qu-P7zX2zj z{;cWz+wOll@nZaIa{uchw|uU!S^HtNjW4u)q%PXVpFhr(_>uhl^CBmY*Vv%(soku& zUPq5MnWpXM&&l@j|7ic`_doWds-`{K6-C?l{Tu(F5p9$2zbtag@lw(6|9-TabD$Az z23`8^7aME>RxlR_Jb>%erp?lj(DGQoBa9vcm97oZ0FSg diff --git a/bpf/handler-bpfel.o b/bpf/handler-bpfel.o index a636cfb431283982b6f527b3823ac8a3d7eed149..6d7a8efcd8d2e7180325c6e2b9626014674a35e6 100644 GIT binary patch literal 74640 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

b7KqG(BIx7(}+$#b_fwAbD9T99m^GGynS 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%0Di}(;AJ4wNpA-z&t%dHN#dA$ zCO1l22xeBA-z1!d9S!V`Yh-OYVM*&^MwQiZS%or=_o;j!LbU;&}MI!~Vu_c=RTQX8hFqbh^NS|Mhj18WSNB)S~D1%S$HPHYnm)Po52F5h4mSQW`%_f z8Kq_waG?b3xr~4r97(>oJfAVe$rK;8Muvt(;UxmL z8Fv+4&d7;v5)b~D;h`D-Uq zg*_SPn*%KTkWpt2wD4ob1$x%tHYuV%WlT56A<|zG4i?7bIqYV=1 zGR#ySw2b^tvR!H64^m3D{B@NI^JfNiS9G+*(k@7h6ZM!Lb`UBh{vFdX^B%=>qAxs+ zr=;N-JVtloa>#8Aq=)af@>ad#MQkxO8o2iC{}u1%)k$molh6(trSakFqzlBN5Yt2~WU8O}{}dm;Dek=W+`x`*!eK0&b)VFa-Q^~oayFUKwF-Vb7mTs;7pSseUfv9 z;~jy8Xd^a#?%#2p|Cu39{KH=TYcbXK{a?1{*8`ddd*h7jr3dw1i(>H&Vqbh-=>C(N z-Wl{Sr9CxT*~`%7AyhQ!91llR%V)fisZVB(slh!WEevIeJp144Rv%J;xXVOwXUcLe+mXA%=wPu_+RYLeXg@0u$ z-^Kwn(^^_1It~BaB{;sSl@0Dlv}`=k%63)@54QHxg;JF~)LLzN9hj^=t6P~-wXQwf zT4U}3bin#Z>lhudYNoAetu?EV$ak0AM_VVE$AAyT)3vQlu|FhgPqeP*JlPYi=4?dT zL_FEb_XmnaX=AJ7BHY+&wj$JnIGc#zy8!9U{R^!gXTNIEe5JKoG+${oUm(=_^eURE z`z~K=4LSRrEt+q%&JxWxT21!;$)tW0&F`_M(cIRWWgHS#eR~TJ!agW>8dg7SUGIj2 zkhUftwbGo+v1GOOajS=neGwm`m*P~G`*k8lD*T2Rc|Q}`Mr0B9yH@io4_b1*$8)(Y zO{2btU}nl4S(?ujms0$VF2~Cn_sBIy_T5#`9k`>`IA%Pi`XX}F8jrRj8sekZc+ELT zG@EPIa5JcdW7d?K1%Te=dhD8zIgb8AC$EoN6ElmDsME)<8O|2XsnTwLnPUohxJTl? zGlwWFlhBA!t^3=`wEf?C{V&H|1#Xv$&){M{f{8|SDg53Wkla=rcMX`W-cH# zBl6G6G1Le2Lhg;d(`)B9_2vM@jO2^Z&AmP5Zbs$(#P;0YJ~J1n6`0qXu4y1oz8I

$FL2P7};UVG+S_cV|au^Y3wYWgB@|iopFU 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

tu~iKMB8gkCiMfrDiAVXd&I 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 diff --git a/bpf/handler.c b/bpf/handler.c index 6b6516e..db04e02 100644 --- a/bpf/handler.c +++ b/bpf/handler.c @@ -1,14 +1,21 @@ #include "vmlinux.h" #include "bpf_core_read.h" #include "bpf_helpers.h" +#include "vmlinux_core.h" // This license needs to be GPL-compatible because the BTF verifier won't let us // use many BPF helpers (including `bpf_probe_read_*`). u8 __license[] SEC("license") = "Dual MIT/GPL"; // NOLINT +// Adds some extra log entries that are usually spam when deployed in the real +// world. +//#define DEBUG + // These constants must be kept in sync with Go. -#define ARGLEN 32 // maximum amount of args in argv we'll copy -#define ARGSIZE 1024 // maximum byte length of each arg in argv we'll copy +#define ARGLEN 32 // maximum amount of args in argv we'll copy +#define ARGSIZE 1024 // maximum byte length of each arg in argv we'll copy +#define LOGFMTSIZE 1024 // maximum length of log fmt str sent back to userspace +#define LOGARGLEN 3 // maximum amount of fmt arguments to a log entry // Maximum levels of PID namespace nesting. PID namespaces have a hierarchy // limit of 32 since kernel 3.7. @@ -44,6 +51,36 @@ struct event_t { u8 comm[ARGSIZE]; }; +static struct event_t zero_event SEC(".rodata") = { + .filename = {0}, + .argv = {}, + .argc = 0, + .uid = 0, + .gid = 0, + .pid = 0, + .comm = {0}, +}; + +// Log entry from eBPF to userspace. This struct must be kept in sync with the +// Golang counterpart. +struct log_entry_t { + u32 uid; + u32 gid; + u32 pid; + // fmt contains a format string that only contains "%d" and "%u" directives. + // In userspace we will replace these with the arguments in `args`. + u8 fmt[LOGFMTSIZE]; + // These are communicated back to userspace as unsigned 32-bit integers, but + // depending on the format string, they could be treated as signed or + // unsigned. + u32 args[LOGARGLEN]; +}; + +static struct log_entry_t zero_log SEC(".rodata") = { + .fmt = {0}, + .args = {}, +}; + // This is the ring buffer we'll output events data to. The Go program reads // from this ring buffer and reads the data into a Go struct for easy usage. struct { @@ -51,6 +88,12 @@ struct { __uint(max_entries, 1 << 24); } events SEC(".maps"); +// The ring buffer we will output log entries to. +struct { + __uint(type, BPF_MAP_TYPE_RINGBUF); + __uint(max_entries, 1 << 24); +} logs SEC(".maps"); + // The map we'll use to retrieve the configuration about the given filters. struct { __uint(type, BPF_MAP_TYPE_ARRAY); @@ -62,54 +105,109 @@ struct { // Indexes in the `filters` map for each configuration option. static u32 filter_pidns_idx SEC(".rodata") = 0; -// Zero values of any char[ARGSIZE] or char[ARGLEN][ARGSIZE] arrays. -static char zero[ARGSIZE] SEC(".rodata") = {0}; -static char zero_argv[ARGLEN][ARGSIZE] SEC(".rodata") = {0}; +// LOG[N] writes the fmt and args to bpf_printk and also sends them to userspace +// via send_log(). `N` is the amount of fmt args you want to use. +#define LOG0(fmt) { \ + bpf_printk(fmt); \ + send_log(fmt, 0, 0, 0); \ +} +#define LOG1(fmt, arg0) { \ + bpf_printk(fmt, arg0); \ + send_log(fmt, arg0, 0, 0); \ +} +#define LOG2(fmt, arg0, arg1) { \ + bpf_printk(fmt, arg0, arg1); \ + send_log(fmt, arg0, arg1, 0); \ +} +#define LOG3(fmt, arg0, arg1, arg2) { \ + bpf_printk(fmt, arg0, arg1, arg2); \ + send_log(fmt, arg0, arg1, arg2); \ +} + +// send_log writes the given fmt string and args to the logs ringbuf. Call +// LOG[N]() instead of calling this directly. +static void send_log(const char *fmt, u32 arg0, u32 arg1, u32 arg2) { + if (!fmt) { + return; + } + + struct log_entry_t *log; + log = bpf_ringbuf_reserve(&logs, sizeof(struct log_entry_t), 0); + if (!log) { + bpf_printk("could not reserve logs ringbuf memory"); + return; + } + + // Zero out the log for safety. If we don't do this, we risk sending random + // kernel memory back to userspace. + s32 ret = bpf_probe_read_kernel(log, sizeof(struct log_entry_t), &zero_log); + if (ret) { + bpf_printk("zero out log: %d", ret); + bpf_ringbuf_discard(log, 0); + return; + } + + // Copy the fmt string into the log. + ret = bpf_probe_read_kernel_str(&log->fmt, sizeof(log->fmt), fmt); + if (ret < 0) { + bpf_printk("could not read fmt into log struct: %d", ret); + bpf_ringbuf_discard(log, 0); + return; + } + + log->uid = bpf_get_current_uid_gid(); + log->gid = bpf_get_current_uid_gid() >> 32; // NOLINT(readability-magic-numbers) + log->pid = bpf_get_current_pid_tgid(); + log->args[0] = arg0; + log->args[1] = arg1; + log->args[2] = arg2; + + bpf_ringbuf_submit(log, 0); +} // filter_pidns checks if the current task is in a PID namespace equal to or // under the given target_pidns. Returns a 0 if successful, or a negative error // on failure. s32 filter_pidns(u32 target_pidns) { - struct task_struct *task = (void *)bpf_get_current_task(); // NOLINT(performance-no-int-to-ptr) - - struct nsproxy *ns; - s64 ret = bpf_core_read(&ns, sizeof(ns), &task->nsproxy); - if (ret) { - bpf_printk("could not read current task nsproxy: %d", ret); - return ret; - } + struct task_struct___exectrace *task = (void *)bpf_get_current_task(); // NOLINT(performance-no-int-to-ptr) - struct pid_namespace *pidns; - ret = bpf_core_read(&pidns, sizeof(pidns), &ns->pid_ns_for_children); + struct pid_namespace___exectrace *pidns; + s32 ret = BPF_CORE_READ_INTO(&pidns, task, nsproxy, pid_ns_for_children); if (ret) { - bpf_printk("could not read current task pidns: %d", ret); + LOG1("could not read current task pidns: %d", ret); return ret; } // Iterate up the PID NS tree until we either find the net namespace we're // filtering for, or until there are no more parent namespaces. - struct ns_common nsc; - #pragma unroll - for (s32 i = 0; i < MAX_PIDNS_HIERARCHY; i++) { + u32 inum; + u32 i = 0; + for (; i < MAX_PIDNS_HIERARCHY; i++) { if (i != 0) { - ret = bpf_core_read(&pidns, sizeof(pidns), &pidns->parent); + ret = BPF_CORE_READ_INTO(&pidns, pidns, parent); if (ret) { - bpf_printk("could not read parent pidns on iteration %d: %d", i, ret); + LOG2("could not read parent pidns on iteration %u: %d", i, ret); return ret; } } if (!pidns) { - // No more PID namespaces. + #ifdef DEBUG + LOG1("no more pidns after %u iterations", i); + #endif return -1; } - ret = bpf_core_read(&nsc, sizeof(nsc), &pidns->ns); + ret = BPF_CORE_READ_INTO(&inum, pidns, ns.inum); if (ret) { - bpf_printk("could not read pidns common on iteration %d: %d", i, ret); + LOG2("could not read pidns common on iteration %u: %d", i, ret); return ret; } - if (nsc.inum == target_pidns) { + #ifdef DEBUG + LOG3("got pidns on iteration %u: %u (target=%u)", i, inum, target_pidns); + #endif + + if (inum == target_pidns) { // One of the parent PID namespaces was the target PID namespace. return 0; } @@ -117,6 +215,9 @@ s32 filter_pidns(u32 target_pidns) { // Iterated through all 32 parent PID namespaces and couldn't find what we // were looking for. + #ifdef DEBUG + LOG1("does not match pidns filter after %u iterations", i); + #endif return -1; } @@ -132,56 +233,38 @@ s32 enter_execve(struct exec_info *ctx) { struct event_t *event; event = bpf_ringbuf_reserve(&events, sizeof(struct event_t), 0); if (!event) { - bpf_printk("could not reserve ringbuf memory"); + LOG0("could not reserve events ringbuf memory"); return 1; } - // Zero out the filename, argv and comm arrays on the event for safety. If - // we don't do this, we risk sending random kernel memory back to userspace. - s64 ret = bpf_probe_read_kernel(&event->filename, sizeof(zero), &zero); + // Zero out the event for safety. If we don't do this, we risk sending + // random kernel memory back to userspace. + s32 ret = bpf_probe_read_kernel(event, sizeof(event), &zero_event); if (ret) { - bpf_printk("zero out filename: %d", ret); - bpf_ringbuf_discard(event, 0); - return 1; - } - ret = bpf_probe_read_kernel(&event->argv, sizeof(zero_argv), &zero_argv); - if (ret) { - bpf_printk("zero out argv: %d", ret); - bpf_ringbuf_discard(event, 0); - return 1; - } - ret = bpf_probe_read_kernel(&event->comm, sizeof(zero), &zero); - if (ret) { - bpf_printk("zero out comm: %d", ret); + LOG1("zero out event: %d", ret); bpf_ringbuf_discard(event, 0); return 1; } // Store process/calling process details. - u64 uidgid = bpf_get_current_uid_gid(); - u64 pidtgid = bpf_get_current_pid_tgid(); - event->uid = uidgid; // uid is the first 32 bits - event->gid = uidgid >> 32; // gid is the last 32 bits NOLINT(readability-magic-numbers) - event->pid = pidtgid; // pid is the first 32 bits + event->uid = bpf_get_current_uid_gid(); + event->gid = bpf_get_current_uid_gid() >> 32; // NOLINT(readability-magic-numbers) + event->pid = bpf_get_current_pid_tgid(); ret = bpf_get_current_comm(&event->comm, sizeof(event->comm)); if (ret) { - bpf_printk("could not get current comm: %d", ret); - bpf_ringbuf_discard(event, 0); - return 1; + LOG1("could not get current comm: %d", ret); } // Write the filename in addition to argv[0] because the filename contains // the full path to the file which could be more useful in some situations. - ret = bpf_probe_read_user_str(event->filename, sizeof(event->filename), ctx->filename); + ret = BPF_PROBE_READ_STR_INTO(&event->filename, ctx, filename); if (ret < 0) { - bpf_printk("could not read filename into event struct: %d", ret); - bpf_ringbuf_discard(event, 0); - return 1; + LOG1("could not read filename into event struct: %d", ret); } // Copy everything from ctx->argv to event->argv, incrementing event->argc // as we go. - for (s32 i = 0; i < ARGLEN; i++) { + for (u32 i = 0; i < ARGLEN; i++) { if (!(&ctx->argv[i])) { goto out; } @@ -197,7 +280,7 @@ s32 enter_execve(struct exec_info *ctx) { // Copy argp to event->argv[i]. ret = bpf_probe_read_user_str(event->argv[i], sizeof(event->argv[i]), argp); if (ret < 0) { - bpf_printk("read argv %d: %d", i, ret); + LOG2("read argv %u: %d", i, ret); goto out; } diff --git a/bpf/update_bpf.sh b/bpf/update_bpf.sh index 3783fde..746beb7 100755 --- a/bpf/update_bpf.sh +++ b/bpf/update_bpf.sh @@ -6,7 +6,7 @@ set -euo pipefail cd "$(dirname "$0")" # Version of libbpf to fetch headers from. -LIBBPF_VERSION="${LIBBPF_VERSION:-0.4.0}" +LIBBPF_VERSION="${LIBBPF_VERSION:-0.8.2}" # The headers we want to download from the repo. These files are found in the # src/ directory in the repo. @@ -31,4 +31,7 @@ EOF # Remove extra trailing newlines. sed -i -e :a -e '/^\n*$/{$d;N;};/\n$/ba' "$f" + + # Change any <...> includes to "..." and remove bpf/ prefix. + sed -i -E -e 's/#include <(.*)>/#include "\1"/g' -e 's/#include "bpf\//#include "/g' "$f" done diff --git a/bpf/vmlinux_core.h b/bpf/vmlinux_core.h new file mode 100644 index 0000000..21ccc51 --- /dev/null +++ b/bpf/vmlinux_core.h @@ -0,0 +1,26 @@ +// This is file is based on the Linux Kernel headers and is licensed under +// GPL-2.0. +// +// Contains CO-RE structs that are adapted and shrunk down from vmlinux.h. + +#ifndef __VMLINUX_CORE_H__ +#define __VMLINUX_CORE_H__ + +struct task_struct___exectrace { + struct nsproxy___exectrace *nsproxy; +} __attribute__((preserve_access_index)); + +struct nsproxy___exectrace { + struct pid_namespace___exectrace *pid_ns_for_children; +} __attribute__((preserve_access_index)); + +struct ns_common___exectrace { + __u32 inum; +} __attribute__((preserve_access_index)); + +struct pid_namespace___exectrace { + struct pid_namespace___exectrace *parent; + struct ns_common___exectrace ns; +} __attribute__((preserve_access_index)); + +#endif /* __VMLINUX_CORE_H__ */ diff --git a/ci/scripts/build_handler.sh b/ci/scripts/build_handler.sh index 3a1f3e1..deeb3d5 100755 --- a/ci/scripts/build_handler.sh +++ b/ci/scripts/build_handler.sh @@ -25,7 +25,7 @@ fi # compiling on. This isn't appropriate for ahead of time compiled code so # force the most compatible version. # -g: -# We always want BTF to be generates, so enforce debug symbols. +# We always want BTF to be generated, so enforce debug symbols. # -Wall -Wextra -Werror: # Enable lots of warnings, and treat all warnings as fatal build errors. # -fno-ident: diff --git a/cmd/exectrace/main.go b/cmd/exectrace/main.go index a0dc154..0aa3336 100644 --- a/cmd/exectrace/main.go +++ b/cmd/exectrace/main.go @@ -33,7 +33,7 @@ func rootCmd() *cobra.Command { var cmd = &cobra.Command{ Use: "exectrace", Short: "exectrace logs all exec calls on the system.", - Run: func(cmd *cobra.Command, args []string) { + Run: func(_ *cobra.Command, _ []string) { if outputFormat != "text" && outputFormat != "json" { //nolint:revive log.Fatalf(`output format must be "text" or "json", got %q`, outputFormat) @@ -56,6 +56,7 @@ func rootCmd() *cobra.Command { func run(pidNS uint32, outputFormat string) error { t, err := exectrace.New(&exectrace.TracerOpts{ PidNS: pidNS, + // We use the default LogFn since it logs all the details to stderr. }) if err != nil { return xerrors.Errorf("start tracer: %w", err) diff --git a/enterprise/go.mod b/enterprise/go.mod index 163745e..aa035f4 100644 --- a/enterprise/go.mod +++ b/enterprise/go.mod @@ -1,32 +1,36 @@ module github.com/coder/exectrace/enterprise -go 1.19 +go 1.21.0 + +toolchain go1.22.2 replace github.com/coder/exectrace => ../ require ( cdr.dev/slog v1.4.1 - github.com/coder/exectrace v0.1.0 + github.com/coder/exectrace v0.2.4 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.9.0 github.com/urfave/cli/v2 v2.23.7 - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 - k8s.io/utils v0.0.0-20230115233650-391b47cb4029 + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 + k8s.io/utils v0.0.0-20240310230437-4693a0247e57 ) require ( - github.com/cilium/ebpf v0.10.0 // indirect + github.com/cilium/ebpf v0.14.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect go.opencensus.io v0.24.0 // indirect - golang.org/x/sys v0.4.0 // indirect + golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8 // indirect + golang.org/x/sys v0.19.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/klog/v2 v2.80.1 // indirect + k8s.io/klog/v2 v2.120.1 // indirect ) diff --git a/enterprise/go.sum b/enterprise/go.sum index a7f2e1c..c7f8e12 100644 --- a/enterprise/go.sum +++ b/enterprise/go.sum @@ -30,7 +30,6 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -49,32 +48,18 @@ github.com/alecthomas/chroma v0.9.1/go.mod h1:eMuEnpA18XbG/WhOWtCzJHS7WqEtDAI+Hx github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721/go.mod h1:QO9JBoKquHd+jz9nshCh40fOfO+JzsoXy8qTHF68zU0= github.com/alecthomas/kong v0.2.4/go.mod h1:kQOmtJgV+Lb4aj+I2LEn40cbtawdWJ9Y8QLq+lElKxE= github.com/alecthomas/repr v0.0.0-20180818092828-117648cd9897/go.mod h1:xTS7Pm1pD1mvyM075QCDSRqH6qRLXylzS24ZTpRiSzQ= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/cilium/ebpf v0.10.0 h1:nk5HPMeoBXtOzbkZBWym+ZWq1GIiHUsBFXxwewXAHLQ= -github.com/cilium/ebpf v0.10.0/go.mod h1:DPiVdY/kT534dgc9ERmvP8mWA+9gvwgKfRvk4nNWnoE= +github.com/cilium/ebpf v0.14.0 h1:0PsxAjO6EjI1rcT+rkp6WcCnE0ZvfkXBYiMedJtrSUs= +github.com/cilium/ebpf v0.14.0/go.mod h1:DHp1WyrLeiBh19Cf/tfiSMhqheEiK8fXFZ4No0P1Hso= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/coder/exectrace v0.1.0 h1:8qezBl6vNAHIYxaLvFeV2VBkfTNnuSoitCKNCiAtsOU= -github.com/coder/exectrace v0.1.0/go.mod h1:9SQNoa6pcjdCncpvVZiS61EMo86DnpQ60OEgnBx5T+E= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 h1:y5HC9v93H5EPKqaS1UYVg1uYah5Xf51mBfIoWehClUQ= github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964/go.mod h1:Xd9hchkHSWYkEqJwUGisez3G1QY8Ryz0sdWrLPMGjLk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -89,23 +74,15 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -152,10 +129,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -176,102 +152,43 @@ github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm4 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -280,12 +197,11 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= +github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/urfave/cli/v2 v2.23.7 h1:YHDQ46s3VghFHFf1DdF+Sh7H4RqhcM+t0TmZRJx4oJY= github.com/urfave/cli/v2 v2.23.7/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= @@ -295,9 +211,6 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -307,14 +220,9 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -328,6 +236,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8 h1:ESSUROHIBHg7USnszlcdmjBEwdMj9VUvU+OPk4yl2mc= +golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -355,8 +265,6 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -402,7 +310,6 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -415,9 +322,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -427,7 +332,6 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -456,14 +360,11 @@ golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -483,7 +384,6 @@ golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -493,7 +393,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -516,7 +415,6 @@ golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -525,7 +423,6 @@ golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= @@ -533,8 +430,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -556,7 +453,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -588,7 +484,6 @@ google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= @@ -621,7 +516,6 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= @@ -649,13 +543,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -665,12 +554,10 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4= -k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y= -k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -k8s.io/utils v0.0.0-20230115233650-391b47cb4029 h1:L8zDtT4jrxj+TaQYD0k8KNlr556WaVQylDXswKmX+dE= -k8s.io/utils v0.0.0-20230115233650-391b47cb4029/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= +k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= +k8s.io/utils v0.0.0-20240310230437-4693a0247e57 h1:gbqbevonBh57eILzModw6mrkbwM0gQBEuevE/AaBsHY= +k8s.io/utils v0.0.0-20240310230437-4693a0247e57/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/go.mod b/go.mod index b8d99bd..ac55784 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,21 @@ module github.com/coder/exectrace -go 1.16 +go 1.21.0 + +toolchain go1.22.2 require ( - github.com/cilium/ebpf v0.10.0 - github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/cilium/ebpf v0.14.0 github.com/hashicorp/go-multierror v1.1.1 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 github.com/spf13/cobra v1.2.1 - golang.org/x/sys v0.4.0 - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 + golang.org/x/sys v0.19.0 + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 +) + +require ( + github.com/hashicorp/errwrap v1.1.0 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8 // indirect ) diff --git a/go.sum b/go.sum index 4e6290e..6ed5632 100644 --- a/go.sum +++ b/go.sum @@ -49,8 +49,8 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.10.0 h1:nk5HPMeoBXtOzbkZBWym+ZWq1GIiHUsBFXxwewXAHLQ= -github.com/cilium/ebpf v0.10.0/go.mod h1:DPiVdY/kT534dgc9ERmvP8mWA+9gvwgKfRvk4nNWnoE= +github.com/cilium/ebpf v0.14.0 h1:0PsxAjO6EjI1rcT+rkp6WcCnE0ZvfkXBYiMedJtrSUs= +github.com/cilium/ebpf v0.14.0/go.mod h1:DHp1WyrLeiBh19Cf/tfiSMhqheEiK8fXFZ4No0P1Hso= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -58,7 +58,6 @@ github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnht github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -69,13 +68,13 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= +github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -204,7 +203,6 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -212,8 +210,8 @@ github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndr github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= @@ -271,6 +269,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8 h1:ESSUROHIBHg7USnszlcdmjBEwdMj9VUvU+OPk4yl2mc= +golang.org/x/exp v0.0.0-20240409090435-93d18d7e34b8/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -396,9 +396,8 @@ golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -465,8 +464,8 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= +golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= diff --git a/go.work b/go.work index 2e6348a..87f3fc5 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,6 @@ -go 1.19 +go 1.21.0 + +toolchain go1.22.2 use ( ./ diff --git a/go.work.sum b/go.work.sum index 05247de..1793b02 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,53 +1,239 @@ +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= +cloud.google.com/go v0.110.4/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= +cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= +cloud.google.com/go/aiplatform v1.45.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/analytics v0.21.2/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= +cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= +cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= +cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= +cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= +cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= +cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= +cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= +cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= +cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= +cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= +cloud.google.com/go/bigquery v1.52.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= +cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= +cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= +cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= +cloud.google.com/go/cloudbuild v1.10.1/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= +cloud.google.com/go/cloudtasks v1.11.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/contactcenterinsights v1.9.1/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/container v1.22.1/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= +cloud.google.com/go/datacatalog v1.14.0/go.mod h1:h0PrGtlihoutNMp/uvwhawLQ9+c63Kz65UFqh49Yo+E= +cloud.google.com/go/datacatalog v1.14.1/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= +cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= +cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= +cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= +cloud.google.com/go/dataplex v1.8.1/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= +cloud.google.com/go/datastore v1.12.1/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastream v1.9.1/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/deploy v1.11.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/dialogflow v1.38.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= +cloud.google.com/go/documentai v1.20.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= +cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= +cloud.google.com/go/eventarc v1.12.1/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= cloud.google.com/go/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= +cloud.google.com/go/firestore v1.11.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= +cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= +cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= +cloud.google.com/go/gkemulticloud v0.6.1/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= +cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.1.0/go.mod h1:nxdHjaKfCr7fNYx/HJMM8LgiMugmveWlkatear5gVyk= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= +cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= +cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= +cloud.google.com/go/kms v1.11.0/go.mod h1:hwdiYC0xjnWsKQQCQQmIQnS9asjYVSK6jtXm+zFqXLM= +cloud.google.com/go/kms v1.12.1/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= +cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/longrunning v0.4.2/go.mod h1:OHrnaYyLUV6oqwh0xiS7e5sLQhP1m0QU9R+WhGDMgIQ= +cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= +cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= +cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= +cloud.google.com/go/maps v1.3.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= +cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= +cloud.google.com/go/metastore v1.11.1/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= +cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= +cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= +cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= +cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= +cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= +cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= +cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= +cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= +cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= +cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= +cloud.google.com/go/policytroubleshooter v1.7.1/go.mod h1:0NaT5v3Ag1M7U5r0GfDCpUFkWd9YqpubBWsQlhanRv0= +cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= +cloud.google.com/go/pubsub v1.32.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= +cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= +cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= +cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= +cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= +cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= +cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= +cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= +cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= +cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= +cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= +cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicedirectory v1.10.1/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= +cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= +cloud.google.com/go/speech v1.17.1/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= +cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= +cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= +cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= +cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= +cloud.google.com/go/translate v1.8.1/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/video v1.17.1/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= +cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= +cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= +cloud.google.com/go/vmwareengine v0.4.1/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= +cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= +cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= +cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/alecthomas/assert v0.0.0-20170929043011-405dbfeb8e38 h1:smF2tmSOzy2Mm+0dGI2AIUHY+w0BUc+4tn40djz7+6U= github.com/alecthomas/colour v0.0.0-20160524082231-60882d9e2721 h1:JHZL0hZKJ1VENNfmXvHbgYlbUOvpzYzvy2aZU5gXVeo= github.com/alecthomas/kong v0.2.4 h1:Y0ZBCHAvHhTHw7FFJ2FzCAAG4pkbTgA45nc7BpMhDNk= github.com/alecthomas/repr v0.0.0-20180818092828-117648cd9897 h1:p9Sln00KOTlrYkxI1zYWl1QLnEqAqEARBEYa8FQnQcY= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= +github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bketelsen/crypt v0.0.4 h1:w/jqZtC9YD4DS/Vp9GhWfWcCpuAL58oTnLoI8vE9YHU= github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d h1:QyzYnTnPE15SQyUeqU6qLbWxMkwyAyu+vGksa0b7j00= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.4 h1:9349emZab16e7zQvpmsbtjc18ykshndd8y2PG3sgJbA= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/mock v1.5.0 h1:jlYHihg//f7RRwuPfptm04yp4s7O6Kw8EZiVYIGcH0g= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.3 h1:fHPg5GQYlCeLIPB9BZqMVR5nR9A+IM5zcgeTdjMYmLA= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22 h1:ub2sxhs2A0HRa2dWHavvmWxiVGXNfE9wI+gcTMwED8A= github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.10.0/go.mod h1:4UOEnMCrxsSqQ940WnTiD6qJ63le2ev3xfyagutxiPw= +github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA= github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY= github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= @@ -64,18 +250,27 @@ github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= @@ -84,53 +279,180 @@ github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWe github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.etcd.io/etcd/api/v3 v3.5.0 h1:GsV3S+OfZEOCNXdtNkBSR7kgLobAa/SO6tCxRa0GAYw= go.etcd.io/etcd/client/pkg/v3 v3.5.0 h1:2aQv6F436YnN7I4VbI8PPYrBhu+SmrTaADcf8Mi/6PU= go.etcd.io/etcd/client/v2 v2.305.0 h1:ftQ0nOOHMcbMS3KIaDQ0g5Qcd6bhaBrQT6b89DfwLTs= +go.opentelemetry.io/otel v1.25.0/go.mod h1:Wa2ds5NOXEMkCmUou1WA7ZBfLTHWIsp034OVD7AO+Vg= +go.opentelemetry.io/otel/metric v1.25.0/go.mod h1:rkDLUSd2lC5lq2dFNrX9LGAbINP5B7WBkC78RXCpH5s= +go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= +go.opentelemetry.io/otel/trace v1.25.0/go.mod h1:hCCs70XM/ljO+BeQkyFnbK28SBIJ/Emuha+ccrCRT7I= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= +golang.org/x/exp v0.0.0-20230224173230-c95f2b4c22f2/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= -golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 h1:v+OssWQX+hTHEmOBgwxdZxK4zHq3yOs8F9J7mk0PY8E= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.20.0/go.mod h1:WvitBU7JJf6A4jOdg4S1tviW9bhUxkgeCui/0JHctQg= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= google.golang.org/api v0.47.0 h1:sQLWZQvP6jPGIP4JGPkJu4zHswrv81iobiyszr3b/0I= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230629202037-9506855d4529/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= +google.golang.org/genproto v0.0.0-20230726155614-23370e0ffb3e/go.mod h1:0ggbjUrZYpy1q+ANUS30SEoGZ53cdfwtbuG7Ptgy108= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/api v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:mPBs5jNgx2GuQGvFwUvVKqtn6HsUw9nP64BedgvqEsQ= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:ylj+BE99M198VPbBh6A8d9n3w8fChvyLK3wwBOjXBFA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230629202037-9506855d4529/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230706204954-ccb25ca9f130/go.mod h1:8mL13HKkDa+IuJ8yruA3ci0q+0vsUz4m//+ottjwS5o= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0 h1:M1YKkFIboKNieVO5DLUEVzQfGwJD30Nv2jfUgzb5UcE= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.40.0/go.mod h1:/bTg4dnWkSXowUO6ssQKnOV0yMVxDYNIsIrzqTFDGH0= +modernc.org/ccgo/v3 v3.16.13/go.mod h1:2Quk+5YgpImhPjv2Qsob1DnZ/4som1lJTodubIcoUkY= +modernc.org/libc v1.22.2/go.mod h1:uvQavJ1pZ0hIoC/jfqNoMLURIMhKzINIWypNM17puug= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.5.0/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.2/go.mod h1:kvrTLEWgxUcHa2GfHBQtanR1H9ht3hTJNtKpzH9k1u0= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= diff --git a/tracer.go b/tracer.go index 036a727..d6e83fb 100644 --- a/tracer.go +++ b/tracer.go @@ -15,6 +15,13 @@ type TracerOpts struct { // // This filter runs in the kernel for high performance. PidNS uint32 + + // LogFn is called for each log line that is read from the kernel. All logs + // are considered error logs unless running a debug version of the eBPF + // program. + // + // If unspecified, a default log function is used that logs to stderr. + LogFn func(uid, gid, pid uint32, logLine string) } // Tracer allows consumers to read exec events from the kernel via an eBPF @@ -23,6 +30,7 @@ type TracerOpts struct { type Tracer interface { io.Closer + // Read blocks until an exec event is available, then returns it. Read() (*Event, error) } diff --git a/tracer_linux.go b/tracer_linux.go index 7047aef..c570404 100644 --- a/tracer_linux.go +++ b/tracer_linux.go @@ -7,6 +7,7 @@ import ( "bytes" "encoding/binary" "errors" + "fmt" "io" "log" "runtime" @@ -25,8 +26,10 @@ import ( // These constants are defined in `bpf/handler.c` and must be kept in sync. const ( - arglen = 32 - argsize = 1024 + arglen = 32 + argsize = 1024 + logfmtsize = 1024 + logarglen = 3 ) var errTracerClosed = xerrors.New("tracer is closed") @@ -47,12 +50,26 @@ type event struct { Comm [argsize]byte } +// logEntry contains each kernel log entry from the logs ringbuf. This type must +// be kept in sync with `log_entry_t` in `bpf/handler.c`. +type logEntry struct { + UID uint32 + GID uint32 + PID uint32 + Fmt [logfmtsize]byte + // Args are uint32s but depending on the format string, they may be + // interpreted as int32s instead. + Arg [logarglen]uint32 +} + type tracer struct { opts *TracerOpts objs *bpfObjects tp link.Link - rb *ringbuf.Reader + + rbEvents *ringbuf.Reader + rbLogs *ringbuf.Reader closeLock sync.Mutex closed chan struct{} @@ -64,12 +81,16 @@ var _ Tracer = &tracer{} // tracing, and returns the created Tracer. After calling this successfully, the // caller should immediately attach a for loop running `h.Read()`. // -// The returned Tracer MUST be closed when not needed anymore otherwise kernel -// resources may be leaked. +// The returned Tracer MUST be closed to avoid leaking kernel resources. func New(opts *TracerOpts) (Tracer, error) { if opts == nil { opts = &TracerOpts{} } + if opts.LogFn == nil { + opts.LogFn = func(uid, gid, pid uint32, logLine string) { + log.Printf("error log from exectrace tracer (uid=%v, gid=%v, pid=%v): %s", uid, gid, pid, logLine) + } + } objs, err := loadBPFObjects() if err != nil { @@ -77,10 +98,11 @@ func New(opts *TracerOpts) (Tracer, error) { } t := &tracer{ - opts: opts, - objs: objs, - tp: nil, - rb: nil, + opts: opts, + objs: objs, + tp: nil, + rbEvents: nil, + rbLogs: nil, closeLock: sync.Mutex{}, closed: make(chan struct{}), @@ -111,9 +133,6 @@ func New(opts *TracerOpts) (Tracer, error) { return t, nil } -// start loads the eBPF programs and maps into the kernel and starts them. -// You should immediately attach a for loop running `h.Read()` after calling -// this successfully. func (t *tracer) start() error { // If we don't startup successfully, we need to make sure all of the // stuff is cleaned up properly or we'll be leaking kernel resources. @@ -148,11 +167,20 @@ func (t *tracer) start() error { } // Create the reader for the event ringbuf. - t.rb, err = ringbuf.NewReader(t.objs.EventsMap) + t.rbEvents, err = ringbuf.NewReader(t.objs.EventsMap) + if err != nil { + return xerrors.Errorf("open events ringbuf reader: %w", err) + } + + // Create the reader for the log ringbuf. + t.rbLogs, err = ringbuf.NewReader(t.objs.LogsMap) if err != nil { - return xerrors.Errorf("open ringbuf reader: %w", err) + return xerrors.Errorf("open logs ringbuf reader: %w", err) } + // Start slurping up logs. + go t.readLogs(t.rbLogs, t.opts.LogFn) + ok = true return nil } @@ -161,9 +189,9 @@ func (t *tracer) start() error { // returns it. If the *tracer is closed during the blocked call, and error that // wraps io.EOF will be returned. func (t *tracer) Read() (*Event, error) { - rb := t.rb + rb := t.rbEvents if rb == nil { - return nil, xerrors.New("ringbuf reader is not initialized, tracer may not be open or may have been closed") + return nil, xerrors.Errorf("events ringbuf reader is not initialized: %w", io.EOF) } record, err := rb.Read() @@ -208,6 +236,60 @@ func (t *tracer) Read() (*Event, error) { return ev, nil } +func (t *tracer) readLogs(rbLogs *ringbuf.Reader, logFn func(uid, gid, pid uint32, logLine string)) { + defer func() { + if r := recover(); r != nil { + logFn(0, 0, 0, fmt.Sprintf("panic in (*tracer).readLogs() goroutine: %v", r)) + _ = t.Close() + } + }() + + for { + record, err := rbLogs.Read() + if err != nil { + if errors.Is(err, ringbuf.ErrClosed) { + return + } + + logFn(0, 0, 0, fmt.Sprintf("read from logs ringbuf: %+v", err)) + continue + } + + var logEntry logEntry + err = binary.Read(bytes.NewBuffer(record.RawSample), NativeEndian, &logEntry) + if err != nil { + logFn(0, 0, 0, fmt.Sprintf("parse raw ringbuf entry into logEntry struct: %+v", err)) + continue + } + + // Format the log line. + // 1. Find all %u and %d directives in the string (this is all we + // support). + // 2. For each: + // 1. If it's a %u, replace it with the next uint32 in the args. + // 2. If it's a %d, cast the next uint32 to an int32 and replace. + logLine := unix.ByteSliceToString(logEntry.Fmt[:]) + for i := 0; i < logarglen; i++ { + arg := logEntry.Arg[i] + + // Find the next %u or %d in the log line. + uIndex := strings.Index(logLine, `%u`) + dIndex := strings.Index(logLine, `%d`) + if uIndex == -1 && dIndex == -1 { + break + } + if uIndex < dIndex || dIndex == -1 { + logLine = strings.Replace(logLine, `%u`, fmt.Sprint(arg), 1) + } + if dIndex < uIndex || uIndex == -1 { + logLine = strings.Replace(logLine, `%d`, fmt.Sprint(int32(arg)), 1) + } + } + + logFn(logEntry.UID, logEntry.GID, logEntry.PID, logLine) + } +} + // Close gracefully closes and frees all resources associated with the eBPF // tracepoints, maps and other resources. Any blocked `Read()` operations will // return an error that wraps `io.EOF`. @@ -224,10 +306,16 @@ func (t *tracer) Close() error { // Close everything started in h.Start() in reverse order. var merr error - if t.rb != nil { - err := t.rb.Close() + if t.rbLogs != nil { + err := t.rbLogs.Close() + if err != nil { + merr = multierror.Append(merr, xerrors.Errorf("close logs ringbuf reader: %w", err)) + } + } + if t.rbEvents != nil { + err := t.rbEvents.Close() if err != nil { - merr = multierror.Append(merr, xerrors.Errorf("close ringbuf reader: %w", err)) + merr = multierror.Append(merr, xerrors.Errorf("close events ringbuf reader: %w", err)) } } if t.tp != nil {