diff --git a/.gitignore b/.gitignore index 3569a3ea1..4ad8f9db2 100644 --- a/.gitignore +++ b/.gitignore @@ -86,3 +86,1118 @@ test/integration/components/pythonserver/lib/ test/integration/components/pythonserver/lib64 test/integration/components/pythonserver/pyvenv.cfg test/integration/components/gosql/qosql +test/integration/components/testserver_1.17/vendor/modules.txt +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/.golangci.yml +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/.goreleaser.yml +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/.mailmap +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/env_tomap_windows.go +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/env_tomap.go +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/env.go +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/error.go +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/LICENSE.md +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/Makefile +test/integration/components/testserver_1.17/vendor/github.com/caarlos0/env/v9/README.md +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/.gitattributes +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/CODE_OF_CONDUCT.md +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/CONTRIBUTING.md +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/mime.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/mimetype.gif +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/mimetype.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/README.md +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/supported_mimes.md +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/tree.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/charset/charset.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/json/json.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/archive.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/audio.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/binary.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/database.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/document.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/font.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/ftyp.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/geo.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/image.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/magic.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/ms_office.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/ogg.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/text_csv.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/text.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/video.go +test/integration/components/testserver_1.17/vendor/github.com/gabriel-vasile/mimetype/internal/magic/zip.go +test/integration/components/testserver_1.17/vendor/github.com/gin-contrib/sse/.travis.yml +test/integration/components/testserver_1.17/vendor/github.com/gin-contrib/sse/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/gin-contrib/sse/README.md +test/integration/components/testserver_1.17/vendor/github.com/gin-contrib/sse/sse-decoder.go +test/integration/components/testserver_1.17/vendor/github.com/gin-contrib/sse/sse-encoder.go +test/integration/components/testserver_1.17/vendor/github.com/gin-contrib/sse/writer.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/.travis.yml +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/auth.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/AUTHORS.md +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/BENCHMARKS.md +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/CHANGELOG.md +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/CODE_OF_CONDUCT.md +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/codecov.yml +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/context_appengine.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/context.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/CONTRIBUTING.md +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/debug.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/deprecated.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/doc.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/errors.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/fs.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/gin.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/logger.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/Makefile +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/mode.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/path.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/README.md +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/recovery.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/response_writer.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/routergroup.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/test_helpers.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/tree.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/utils.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/version.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/binding_nomsgpack.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/binding.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/default_validator.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/form_mapping.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/form.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/header.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/json.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/msgpack.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/multipart_form_mapping.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/protobuf.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/query.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/uri.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/xml.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/binding/yaml.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/internal/bytesconv/bytesconv.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/internal/json/json.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/internal/json/jsoniter.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/data.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/html.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/json.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/msgpack.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/protobuf.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/reader.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/redirect.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/render.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/text.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/xml.go +test/integration/components/testserver_1.17/vendor/github.com/gin-gonic/gin/render/yaml.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/locales/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/go-playground/locales/.travis.yml +test/integration/components/testserver_1.17/vendor/github.com/go-playground/locales/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/go-playground/locales/logo.png +test/integration/components/testserver_1.17/vendor/github.com/go-playground/locales/README.md +test/integration/components/testserver_1.17/vendor/github.com/go-playground/locales/rules.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/locales/currency/currency.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/.travis.yml +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/errors.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/import_export.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/logo.png +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/Makefile +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/README.md +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/translator.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/universal-translator/universal_translator.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/baked_in.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/cache.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/country_codes.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/currency_codes.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/doc.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/errors.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/field_level.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/logo.png +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/MAINTAINERS.md +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/Makefile +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/postcode_regexes.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/README.md +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/regexes.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/struct_level.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/translations.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/util.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/validator_instance.go +test/integration/components/testserver_1.17/vendor/github.com/go-playground/validator/v10/validator.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/AUTHORS +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/CONTRIBUTORS +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/buffer.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/defaults.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/deprecated.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/discard.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/extensions.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/properties.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/proto.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/registry.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/text_decode.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/text_encode.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/wire.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/proto/wrappers.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/ptypes/any.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/ptypes/doc.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/ptypes/duration.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/ptypes/timestamp.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/ptypes/any/any.pb.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go +test/integration/components/testserver_1.17/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/AUTHORS +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/doc.go +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/middleware.go +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/mux.go +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/README.md +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/regexp.go +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/route.go +test/integration/components/testserver_1.17/vendor/github.com/gorilla/mux/test_helpers.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/.codecov.yml +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/.travis.yml +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/adapter.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_array.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_bool.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_float.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_int32.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_int64.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_invalid.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_nil.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_number.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_object.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_str.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_uint32.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any_uint64.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/any.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/build.sh +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/config.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/Gopkg.lock +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/Gopkg.toml +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_array.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_float.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_int.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_object.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_skip_sloppy.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_skip_strict.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_skip.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter_str.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/iter.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/jsoniter.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/pool.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/README.md +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_array.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_dynamic.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_extension.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_json_number.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_json_raw_message.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_map.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_marshaler.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_native.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_optional.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_slice.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_struct_decoder.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect_struct_encoder.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/reflect.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/stream_float.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/stream_int.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/stream_str.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/stream.go +test/integration/components/testserver_1.17/vendor/github.com/json-iterator/go/test.sh +test/integration/components/testserver_1.17/vendor/github.com/leodido/go-urn/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/leodido/go-urn/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/leodido/go-urn/machine.go +test/integration/components/testserver_1.17/vendor/github.com/leodido/go-urn/machine.go.rl +test/integration/components/testserver_1.17/vendor/github.com/leodido/go-urn/makefile +test/integration/components/testserver_1.17/vendor/github.com/leodido/go-urn/README.md +test/integration/components/testserver_1.17/vendor/github.com/leodido/go-urn/urn.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/doc.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/go.test.sh +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/isatty_bsd.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/isatty_others.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/isatty_plan9.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/isatty_solaris.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/isatty_tcgets.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/isatty_windows.go +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/mattn/go-isatty/README.md +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/.travis.yml +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/executor.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/go_above_19.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/go_below_19.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/log.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/README.md +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/test.sh +test/integration/components/testserver_1.17/vendor/github.com/modern-go/concurrent/unbounded_executor.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/.gitignore +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/.travis.yml +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/go_above_19.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/go_above_118.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/go_below_118.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/Gopkg.lock +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/Gopkg.toml +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/README.md +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/reflect2_amd64.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/reflect2_kind.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/reflect2.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_386.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_amd64p32.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_arm.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_arm64.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_mips64x.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_mipsx.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_ppc64x.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/relfect2_s390x.s +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/safe_field.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/safe_map.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/safe_slice.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/safe_struct.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/safe_type.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/type_map.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_array.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_eface.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_field.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_iface.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_link.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_map.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_ptr.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_slice.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_struct.go +test/integration/components/testserver_1.17/vendor/github.com/modern-go/reflect2/unsafe_type.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/0_importpath.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/binc.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/build.sh +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/cbor.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/codecgen.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/decimal.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/decode.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/doc.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/encode.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/fast-path.generated.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/fast-path.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/fast-path.not.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/gen-dec-array.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/gen-dec-map.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/gen-enc-chan.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/gen-helper.generated.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/gen-helper.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/gen.generated.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/gen.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_arrayof_gte_go15.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_arrayof_lt_go15.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_fmt_time_gte_go15.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_fmt_time_lt_go15.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_gte_go120.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_growslice_unsafe_lt_go120.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_makemap_lt_go110.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_makemap_not_unsafe_gte_go110.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_makemap_unsafe_gte_go110.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_maprange_gte_go112.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_maprange_lt_go112.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_gte_go110.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_unexportedembeddedptr_lt_go110.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_unsupported_lt_go14.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go15.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_vendor_eq_go16.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_vendor_gte_go17.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/goversion_vendor_lt_go15.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper_internal.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper_not_unsafe_not_gc.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper_not_unsafe.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_gc.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper_unsafe_compiler_not_gc.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper_unsafe.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/helper.s +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/json.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/LICENSE +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/mammoth-test.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/mammoth2-test.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/msgpack.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/reader.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/README.md +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/register_ext.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/rpc.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/simple.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/sort-slice.generated.go +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/sort-slice.go.tmpl +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/test-cbor-goldens.json +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/test.py +test/integration/components/testserver_1.17/vendor/github.com/ugorji/go/codec/writer.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/LICENSE +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/PATENTS +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/doc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/hashes_generic.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/hashes.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/keccakf_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/keccakf_amd64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/keccakf.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/register.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/sha3_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/sha3_s390x.s +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/sha3.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/shake_generic.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/shake.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/xor_generic.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/xor_unaligned.go +test/integration/components/testserver_1.17/vendor/golang.org/x/crypto/sha3/xor.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/LICENSE +test/integration/components/testserver_1.17/vendor/golang.org/x/net/PATENTS +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/const.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/doc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/doctype.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/entity.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/escape.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/foreign.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/node.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/parse.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/render.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/token.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/atom/atom.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/html/atom/table.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http/httpguts/guts.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http/httpguts/httplex.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/.gitignore +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/ascii.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/ciphers.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/client_conn_pool.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/databuffer.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/Dockerfile +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/errors.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/flow.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/frame.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/go111.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/go115.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/go118.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/gotrack.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/headermap.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/http2.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/Makefile +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/not_go111.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/not_go115.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/not_go118.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/pipe.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/server.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/transport.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/write.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/writesched_priority.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/writesched_random.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/writesched_roundrobin.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/writesched.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/hpack/encode.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/hpack/hpack.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/hpack/huffman.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/hpack/static_table.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/http2/hpack/tables.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/go118.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/idna9.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/idna10.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/pre_go118.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/punycode.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/tables9.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/tables10.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/tables11.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/tables12.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/tables13.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/tables15.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/trie.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/trie12.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/trie13.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/idna/trieval.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/internal/timeseries/timeseries.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/trace/events.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/trace/histogram.go +test/integration/components/testserver_1.17/vendor/golang.org/x/net/trace/trace.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/LICENSE +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/PATENTS +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/byteorder.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_aix.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_arm64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_loong64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_mips64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_mipsx.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_other_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_s390x.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_wasm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_x86.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_x86.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu_zos.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/cpu.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/endian_big.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/endian_little.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/hwcap_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/parse.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/runtime_auxv.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/.gitignore +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/affinity_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/aliases.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_bsd_386.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_bsd_arm.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_386.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_amd64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_arm.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_arm64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_loong64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_linux_s390x.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/asm_zos_s390x.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/bluetooth_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/cap_freebsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/constants.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_darwin.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_dragonfly.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_freebsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_netbsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_openbsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dev_zos.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/dirent.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/endian_big.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/endian_little.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/env_unix.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/epoll_zos.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/fcntl_darwin.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/fcntl.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/fdset.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/fstatfs_zos.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/gccgo_c.c +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/gccgo.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ifreq_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ioctl_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ioctl_signed.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ioctl_unsigned.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ioctl_zos.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/mkall.sh +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/mkerrors.sh +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/mmap_nomremap.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/mremap.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/pagesize_unix.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/pledge_openbsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ptrace_darwin.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ptrace_ios.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/race.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/race0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/readdirent_getdents.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/README.md +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/sockcmsg_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_aix.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_bsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_darwin.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_freebsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_hurd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_hurd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_illumos.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_netbsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_openbsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_solaris.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_unix.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/syscall.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/sysvshm_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/sysvshm_unix.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/timestruct.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/unveil_openbsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/xattr_bsd.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_linux.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +test/integration/components/testserver_1.17/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/LICENSE +test/integration/components/testserver_1.17/vendor/golang.org/x/text/PATENTS +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/common.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/compact.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/compose.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/coverage.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/language.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/lookup.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/match.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/parse.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/tables.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/tags.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/compact/compact.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/compact/language.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/compact/parents.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/compact/tables.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/language/compact/tags.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/internal/tag/tag.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/language/coverage.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/language/doc.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/language/language.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/language/match.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/language/parse.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/language/tables.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/language/tags.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/secure/bidirule/bidirule.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/transform/transform.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/bidi.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/bracket.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/core.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/prop.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/bidi/trieval.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/composition.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/forminfo.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/input.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/iter.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/normalize.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/readwriter.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/transform.go +test/integration/components/testserver_1.17/vendor/golang.org/x/text/unicode/norm/trie.go +test/integration/components/testserver_1.17/vendor/google.golang.org/genproto/googleapis/rpc/LICENSE +test/integration/components/testserver_1.17/vendor/google.golang.org/genproto/googleapis/rpc/status/status.pb.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/AUTHORS +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/backoff.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/balancer_conn_wrappers.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/call.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/clientconn.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/CODE-OF-CONDUCT.md +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/codec.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/codegen.sh +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/CONTRIBUTING.md +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/dialoptions.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/doc.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/GOVERNANCE.md +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/install_gae.sh +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/interceptor.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/LICENSE +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/MAINTAINERS.md +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/Makefile +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/picker_wrapper.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/pickfirst.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/preloader.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/README.md +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/regenerate.sh +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/resolver_conn_wrapper.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/rpc_util.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/SECURITY.md +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/server.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/service_config.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/stream.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/trace.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/version.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/vet.sh +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/attributes/attributes.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/backoff/backoff.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/balancer/balancer.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/balancer/base/balancer.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/balancer/base/base.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/balancer/grpclb/state/state.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/codes/code_string.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/codes/codes.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/connectivity/connectivity.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/credentials/credentials.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/credentials/go12.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/credentials/tls.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/credentials/insecure/insecure.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/encoding/encoding.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/encoding/proto/proto.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/grpclog/component.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/grpclog/grpclog.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/grpclog/logger.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/grpclog/loggerv2.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/internal.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/xds_handshake_cluster.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/backoff/backoff.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/balancerload/load.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/binarylog/binarylog.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/binarylog/env_config.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/binarylog/method_logger.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/binarylog/sink.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/buffer/unbounded.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/channelz/funcs.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/channelz/logging.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/channelz/types_linux.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/channelz/types.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/channelz/util_linux.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/credentials/credentials.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/credentials/spiffe.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/credentials/syscallconn.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/credentials/util.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/envconfig/envconfig.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpclog/grpclog.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpclog/prefixLogger.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpcsync/event.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpcutil/encode_duration.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpcutil/metadata.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpcutil/method.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/grpcutil/target.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/metadata/metadata.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/resolver/config_selector.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/resolver/dns/dns_resolver.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/resolver/dns/go113.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/resolver/passthrough/passthrough.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/resolver/unix/unix.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/serviceconfig/serviceconfig.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/status/status.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/bdp_estimator.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/controlbuf.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/defaults.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/flowcontrol.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/handler_server.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/http_util.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/http2_client.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/http2_server.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/proxy.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/transport.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/internal/transport/networktype/networktype.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/keepalive/keepalive.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/metadata/metadata.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/peer/peer.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/resolver/resolver.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/serviceconfig/serviceconfig.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/stats/handlers.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/stats/stats.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/status/status.go +test/integration/components/testserver_1.17/vendor/google.golang.org/grpc/tap/tap.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/LICENSE +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/PATENTS +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/descopts/options.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/detrand/rand.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/errors/errors.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filedesc/build.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/filetype/build.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/flags/flags.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/doc.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/goname.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/api_export.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/convert.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/decode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/encode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/enum.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/extension.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/merge.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/message.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/validate.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/impl/weak.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/order/order.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/order/range.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/set/ints.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/strs/strings.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/internal/version/version.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/checkinit.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/decode_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/decode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/doc.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/encode_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/encode.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/equal.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/extension.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/merge.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/messageset.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/proto_methods.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/proto_reflect.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/proto.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/reset.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/size_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/size.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/proto/wrappers.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/types/known/anypb/any.pb.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/types/known/durationpb/duration.pb.go +test/integration/components/testserver_1.17/vendor/google.golang.org/protobuf/types/known/timestamppb/timestamp.pb.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/.travis.yml +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/apic.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/decode.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/emitterc.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/encode.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/LICENSE +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/LICENSE.libyaml +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/NOTICE +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/parserc.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/readerc.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/README.md +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/resolve.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/scannerc.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/sorter.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/writerc.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/yaml.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/yamlh.go +test/integration/components/testserver_1.17/vendor/gopkg.in/yaml.v2/yamlprivateh.go diff --git a/bpf/go_common.h b/bpf/go_common.h index 53da030da..2331746b2 100644 --- a/bpf/go_common.h +++ b/bpf/go_common.h @@ -21,11 +21,12 @@ #include "tracing.h" #include "trace_util.h" #include "go_offsets.h" -#include "go_traceparent.h" #include "pin_internal.h" char __license[] SEC("license") = "Dual MIT/GPL"; +enum { W3C_KEY_LENGTH = 11, W3C_VAL_LENGTH = 55 }; + // Temporary information about a function invocation. It stores the invocation time of a function // as well as the value of registers at the invocation time. This way we can retrieve them at the // return uprobes so we can know the values of the function arguments (which are passed as registers @@ -78,8 +79,9 @@ struct { } ongoing_grpc_operate_headers SEC(".maps"); typedef struct grpc_transports { - u8 type; connection_info_t conn; + tp_info_t tp; + u8 type; } grpc_transports_t; // TODO: use go_addr_key_t as key @@ -105,6 +107,30 @@ struct { __uint(max_entries, MAX_CONCURRENT_REQUESTS); } ongoing_sql_queries SEC(".maps"); +typedef struct grpc_header_field { + u8 *key_ptr; + u64 key_len; + u8 *val_ptr; + u64 val_len; + u64 sensitive; +} grpc_header_field_t; + +// assumes s2 is all lowercase +static __always_inline int bpf_memicmp(const char *s1, const char *s2, s32 size) { + for (int i = 0; i < size; i++) { + if (s1[i] != s2[i] && s1[i] != (s2[i] - 32)) // compare with each uppercase character + { + return i + 1; + } + } + + return 0; +} + +static __always_inline u8 valid_trace(const unsigned char *trace_id) { + return *((u64 *)trace_id) != 0 || *((u64 *)(trace_id + 8)) != 0; +} + static __always_inline void go_addr_key_from_id(go_addr_key_t *current, void *addr) { u64 pid_tid = bpf_get_current_pid_tgid(); u32 pid = pid_from_pid_tgid(pid_tid); @@ -178,24 +204,14 @@ static __always_inline void tp_clone(tp_info_t *dest, tp_info_t *src) { } static __always_inline void -server_trace_parent(void *goroutine_addr, tp_info_t *tp, void *req_header) { +server_trace_parent(void *goroutine_addr, tp_info_t *tp, tp_info_t *found_tp) { // May get overriden when decoding existing traceparent, but otherwise we set sample ON tp->flags = 1; - // Get traceparent from the Request.Header - void *traceparent_ptr = extract_traceparent_from_req_headers(req_header); go_addr_key_t g_key = {}; go_addr_key_from_id(&g_key, goroutine_addr); - if (traceparent_ptr != NULL) { - unsigned char buf[TP_MAX_VAL_LENGTH]; - long res = bpf_probe_read(buf, sizeof(buf), traceparent_ptr); - if (res < 0) { - bpf_dbg_printk("can't copy traceparent header"); - urand_bytes(tp->trace_id, TRACE_ID_SIZE_BYTES); - *((u64 *)tp->parent_id) = 0; - } else { - bpf_dbg_printk("Decoding traceparent from headers %s", buf); - decode_go_traceparent(buf, tp->trace_id, tp->parent_id, &tp->flags); - } + if (found_tp) { + bpf_dbg_printk("Decoded from existing traceparent"); + __builtin_memcpy(tp, found_tp, sizeof(tp_info_t)); } else { connection_info_t *info = bpf_map_lookup_elem(&ongoing_server_connections, &g_key); u8 found_info = 0; @@ -242,29 +258,12 @@ server_trace_parent(void *goroutine_addr, tp_info_t *tp, void *req_header) { bpf_dbg_printk("tp: %s", tp_buf); } -static __always_inline u8 client_trace_parent(void *goroutine_addr, - tp_info_t *tp_i, - void *req_header) { - // Get traceparent from the Request.Header +static __always_inline u8 client_trace_parent(void *goroutine_addr, tp_info_t *tp_i) { u8 found_trace_id = 0; // May get overriden when decoding existing traceparent or finding a server span, but otherwise we set sample ON tp_i->flags = 1; - if (req_header) { - void *traceparent_ptr = extract_traceparent_from_req_headers(req_header); - if (traceparent_ptr != NULL) { - unsigned char buf[TP_MAX_VAL_LENGTH]; - long res = bpf_probe_read(buf, sizeof(buf), traceparent_ptr); - if (res < 0) { - bpf_dbg_printk("can't copy traceparent header"); - } else { - found_trace_id = 1; - decode_go_traceparent(buf, tp_i->trace_id, tp_i->span_id, &tp_i->flags); - } - } - } - go_addr_key_t g_key = {}; go_addr_key_from_id(&g_key, goroutine_addr); @@ -401,4 +400,43 @@ static __always_inline void *unwrap_tls_conn_info(void *conn_ptr, void *tls_stat return conn_ptr; } +static __always_inline void process_meta_frame_headers(void *frame, tp_info_t *tp) { + if (!frame) { + return; + } + + off_table_t *ot = get_offsets_table(); + + void *fields = 0; + u64 fields_off = go_offset_of(ot, (go_offset){.v = _meta_headers_frame_fields_ptr_pos}); + bpf_probe_read(&fields, sizeof(fields), (void *)(frame + fields_off)); + u64 fields_len = 0; + bpf_probe_read(&fields_len, sizeof(fields_len), (void *)(frame + fields_off + 8)); + bpf_dbg_printk("fields ptr %llx, len %d", fields, fields_len); + if (fields && fields_len > 0) { + for (u8 i = 0; i < 16; i++) { + if (i >= fields_len) { + break; + } + void *field_ptr = fields + (i * sizeof(grpc_header_field_t)); + //bpf_dbg_printk("field_ptr %llx", field_ptr); + grpc_header_field_t field = {}; + bpf_probe_read(&field, sizeof(grpc_header_field_t), field_ptr); + //bpf_dbg_printk("grpc header %s:%s", field.key_ptr, field.val_ptr); + //bpf_dbg_printk("grpc sizes %d:%d", field.key_len, field.val_len); + if (field.key_len == W3C_KEY_LENGTH && field.val_len == W3C_VAL_LENGTH) { + u8 temp[W3C_VAL_LENGTH]; + + bpf_probe_read(&temp, W3C_KEY_LENGTH, field.key_ptr); + if (!bpf_memicmp((const char *)temp, "traceparent", W3C_KEY_LENGTH)) { + //bpf_dbg_printk("found grpc traceparent header"); + bpf_probe_read(&temp, W3C_VAL_LENGTH, field.val_ptr); + decode_go_traceparent(temp, tp->trace_id, tp->parent_id, &tp->flags); + break; + } + } + } + } +} + #endif // GO_COMMON_H diff --git a/bpf/go_grpc.h b/bpf/go_grpc.h index c407dbfdb..14a53d4ec 100644 --- a/bpf/go_grpc.h +++ b/bpf/go_grpc.h @@ -16,7 +16,6 @@ #include "go_byte_arr.h" #include "bpf_dbg.h" #include "go_common.h" -#include "go_traceparent.h" #include "hpack.h" #include "ringbuf.h" @@ -97,21 +96,29 @@ int uprobe_server_handleStream(struct pt_regs *ctx) { }; if (stream_ptr) { - void *ctx_ptr = 0; - // Read the embedded context object ptr - bpf_probe_read(&ctx_ptr, - sizeof(ctx_ptr), + void *st_ptr = 0; + void *tp_ptr = 0; + // Read the embedded object ptr + bpf_probe_read(&st_ptr, + sizeof(st_ptr), (void *)(stream_ptr + - go_offset_of(ot, (go_offset){.v = _grpc_stream_ctx_ptr_pos}) + + go_offset_of(ot, (go_offset){.v = _grpc_stream_st_ptr_pos}) + sizeof(void *))); - if (ctx_ptr) { - server_trace_parent( - goroutine_addr, - &invocation.tp, - (void *)(ctx_ptr + go_offset_of(ot, (go_offset){.v = _value_context_val_ptr_pos}) + - sizeof(void *))); + bpf_dbg_printk("st_ptr %llx", st_ptr); + if (st_ptr) { + grpc_transports_t *t = bpf_map_lookup_elem(&ongoing_grpc_transports, &st_ptr); + + bpf_dbg_printk("found t %llx", t); + if (t) { + bpf_dbg_printk("reading the traceparent from frame headers"); + if (valid_trace(t->tp.trace_id)) { + tp_ptr = &t->tp; + } + } } + + server_trace_parent(goroutine_addr, &invocation.tp, tp_ptr); } if (bpf_map_update_elem(&ongoing_grpc_server_requests, &g_key, &invocation, BPF_ANY)) { @@ -126,16 +133,32 @@ SEC("uprobe/http2Server_operateHeaders") int uprobe_http2Server_operateHeaders(struct pt_regs *ctx) { void *goroutine_addr = GOROUTINE_PTR(ctx); void *tr = GO_PARAM1(ctx); - bpf_dbg_printk( - "=== uprobe/http2Server_operateHeaders tr %llx goroutine %lx === ", tr, goroutine_addr); + void *frame = GO_PARAM2(ctx); + off_table_t *ot = get_offsets_table(); + + u64 new_offset_version = go_offset_of(ot, (go_offset){.v = _operate_headers_new}); + + // After grpc version 1.60, they added extra context argument to the + // function call, which adds two extra arguments. + if (new_offset_version) { + frame = GO_PARAM4(ctx); + } + + bpf_dbg_printk("=== uprobe/GRPC http2Server_operateHeaders tr %llx goroutine %lx, new %d === ", + tr, + goroutine_addr, + new_offset_version); go_addr_key_t g_key = {}; go_addr_key_from_id(&g_key, goroutine_addr); grpc_transports_t t = { .type = TRANSPORT_HTTP2, .conn = {0}, + .tp = {0}, }; + process_meta_frame_headers(frame, &t.tp); + bpf_map_update_elem(&ongoing_grpc_operate_headers, &g_key, &tr, BPF_ANY); bpf_map_update_elem(&ongoing_grpc_transports, &tr, &t, BPF_ANY); @@ -337,7 +360,7 @@ static __always_inline void clientConnStart( go_offset_of(ot, (go_offset){.v = _value_context_val_ptr_pos}) + sizeof(void *))); - invocation.flags = client_trace_parent(goroutine_addr, &invocation.tp, val_ptr); + invocation.flags = client_trace_parent(goroutine_addr, &invocation.tp); } else { // it's OK sending empty tp for a client, the userspace id generator will make random trace_id, span_id bpf_dbg_printk("No ctx_ptr %llx", ctx_ptr); diff --git a/bpf/go_kafka_go.h b/bpf/go_kafka_go.h index 37c087fa6..aeb8a372a 100644 --- a/bpf/go_kafka_go.h +++ b/bpf/go_kafka_go.h @@ -72,8 +72,7 @@ int uprobe_writer_write_messages(struct pt_regs *ctx) { tp_info_t tp = {}; - // We don't look up in the headers, no http/grpc request, therefore 0 as last argument - client_trace_parent(goroutine_addr, &tp, 0); + client_trace_parent(goroutine_addr, &tp); go_addr_key_t p_key = {}; go_addr_key_from_id(&p_key, w_ptr); diff --git a/bpf/go_nethttp.h b/bpf/go_nethttp.h index a798b1aab..963ca52de 100644 --- a/bpf/go_nethttp.h +++ b/bpf/go_nethttp.h @@ -19,7 +19,6 @@ #include "go_byte_arr.h" #include "bpf_dbg.h" #include "go_common.h" -#include "go_traceparent.h" #include "http_types.h" #include "tracing.h" #include "hpack.h" @@ -40,6 +39,13 @@ struct { __uint(max_entries, MAX_CONCURRENT_REQUESTS); } ongoing_http_client_requests_data SEC(".maps"); +struct { + __uint(type, BPF_MAP_TYPE_LRU_HASH); + __type(key, go_addr_key_t); // key: pointer to the request goroutine + __type(value, tp_info_t); + __uint(max_entries, MAX_CONCURRENT_REQUESTS); +} http2_server_requests_tp SEC(".maps"); + typedef struct server_http_func_invocation { u64 start_monotime_ns; tp_info_t tp; @@ -74,6 +80,14 @@ int uprobe_ServeHTTP(struct pt_regs *ctx) { off_table_t *ot = get_offsets_table(); + // Lookup any traceparent information setup for us by readContinuedLineSlice + server_http_func_invocation_t *tp_inv = + bpf_map_lookup_elem(&ongoing_http_server_requests, &g_key); + tp_info_t *decoded_tp = 0; + if (tp_inv && valid_trace(tp_inv->tp.trace_id)) { + decoded_tp = &tp_inv->tp; + } + server_http_func_invocation_t invocation = { .start_monotime_ns = bpf_ktime_get_ns(), .tp = {0}, @@ -85,10 +99,7 @@ int uprobe_ServeHTTP(struct pt_regs *ctx) { invocation.path[0] = 0; if (req) { - server_trace_parent( - goroutine_addr, - &invocation.tp, - (void *)(req + go_offset_of(ot, (go_offset){.v = _req_header_ptr_pos}))); + server_trace_parent(goroutine_addr, &invocation.tp, decoded_tp); // TODO: if context propagation is supported, overwrite the header value in the map with the // new span context and the same thread id. @@ -214,6 +225,57 @@ int uprobe_readRequestReturns(struct pt_regs *ctx) { return 0; } +// Handles finding the connection information for http2 servers in grpc +SEC("uprobe/http2Server_processHeaders") +int uprobe_http2Server_processHeaders(struct pt_regs *ctx) { + void *sc_ptr = GO_PARAM1(ctx); + void *frame = GO_PARAM2(ctx); + bpf_dbg_printk("=== uprobe/http2Server_processHeaders sc %lx === ", sc_ptr); + go_addr_key_t g_key = {}; + go_addr_key_from_id(&g_key, sc_ptr); + + tp_info_t tp = {0}; + + process_meta_frame_headers(frame, &tp); + + if (valid_trace(tp.trace_id)) { + bpf_dbg_printk("found valid traceparent in http2 headers"); + bpf_map_update_elem(&http2_server_requests_tp, &g_key, &tp, BPF_ANY); + } + + return 0; +} + +SEC("uprobe/readContinuedLineSlice") +int uprobe_readContinuedLineSliceReturns(struct pt_regs *ctx) { + bpf_dbg_printk("=== uprobe/proc readContinuedLineSlice returns === "); + + void *goroutine_addr = GOROUTINE_PTR(ctx); + u64 len = (u64)GO_PARAM2(ctx); + u8 *buf = (u8 *)GO_PARAM1(ctx); + + if (len >= (W3C_KEY_LENGTH + W3C_VAL_LENGTH + 2)) { + u8 temp[W3C_KEY_LENGTH + W3C_VAL_LENGTH + 2]; + bpf_probe_read(temp, sizeof(temp), buf); + bpf_dbg_printk("goroutine_addr %lx", goroutine_addr); + go_addr_key_t g_key = {}; + go_addr_key_from_id(&g_key, goroutine_addr); + + connection_info_t *existing = bpf_map_lookup_elem(&ongoing_server_connections, &g_key); + if (existing) { + if (!bpf_memicmp((const char *)temp, "traceparent: ", W3C_KEY_LENGTH + 2)) { + server_http_func_invocation_t inv = {}; + decode_go_traceparent( + temp + W3C_KEY_LENGTH + 2, inv.tp.trace_id, inv.tp.parent_id, &inv.tp.flags); + bpf_dbg_printk("Found traceparent in header %s", temp); + bpf_map_update_elem(&ongoing_http_server_requests, &g_key, &inv, BPF_ANY); + } + } + } + + return 0; +} + SEC("uprobe/ServeHTTP_ret") int uprobe_ServeHTTPReturns(struct pt_regs *ctx) { bpf_dbg_printk("=== uprobe/ServeHTTP returns === "); @@ -324,10 +386,7 @@ static __always_inline void roundTripStartHelper(struct pt_regs *ctx) { http_func_invocation_t invocation = {.start_monotime_ns = bpf_ktime_get_ns(), .tp = {0}}; - __attribute__((__unused__)) u8 existing_tp = client_trace_parent( - goroutine_addr, - &invocation.tp, - (void *)(req + go_offset_of(ot, (go_offset){.v = _req_header_ptr_pos}))); + client_trace_parent(goroutine_addr, &invocation.tp); http_client_data_t trace = {0}; @@ -370,7 +429,6 @@ static __always_inline void roundTripStartHelper(struct pt_regs *ctx) { bpf_map_update_elem(&ongoing_http_client_requests_data, &g_key, &trace, BPF_ANY); #ifndef NO_HEADER_PROPAGATION - //if (!existing_tp) { void *headers_ptr = 0; bpf_probe_read(&headers_ptr, sizeof(headers_ptr), @@ -381,7 +439,6 @@ static __always_inline void roundTripStartHelper(struct pt_regs *ctx) { if (headers_ptr) { bpf_map_update_elem(&header_req_map, &headers_ptr, &goroutine_addr, BPF_ANY); } - //} #endif } @@ -633,6 +690,20 @@ int uprobe_http2serverConn_runHandler(struct pt_regs *ctx) { bpf_map_update_elem(&ongoing_server_connections, &g_key, &conn, BPF_ANY); } } + + go_addr_key_t sc_key = {}; + go_addr_key_from_id(&sc_key, sc); + + tp_info_t *tp = bpf_map_lookup_elem(&http2_server_requests_tp, &sc_key); + bpf_dbg_printk("looked up tp %llx", tp); + + if (tp) { + server_http_func_invocation_t inv = {}; + __builtin_memcpy(&inv.tp, tp, sizeof(tp_info_t)); + bpf_dbg_printk("Found traceparent in HTTP2 headers"); + bpf_map_update_elem(&ongoing_http_server_requests, &g_key, &inv, BPF_ANY); + bpf_map_delete_elem(&http2_server_requests_tp, &sc_key); + } } return 0; diff --git a/bpf/go_offsets.h b/bpf/go_offsets.h index 347c481a4..5baa576f0 100644 --- a/bpf/go_offsets.h +++ b/bpf/go_offsets.h @@ -37,7 +37,7 @@ typedef enum { _grpc_stream_method_ptr_pos, _grpc_status_s_pos, _grpc_status_code_ptr_pos, - _grpc_stream_ctx_ptr_pos, + _meta_headers_frame_fields_ptr_pos, _value_context_val_ptr_pos, _grpc_st_conn_pos, _grpc_t_conn_pos, @@ -56,6 +56,8 @@ typedef enum { _sarama_response_corr_id_pos, _sarama_broker_conn_pos, _sarama_bufconn_conn_pos, + // grpc versioning + _operate_headers_new, _last_go_offset, } go_offset_const; diff --git a/bpf/go_redis.h b/bpf/go_redis.h index ee165674e..a912bbbc6 100644 --- a/bpf/go_redis.h +++ b/bpf/go_redis.h @@ -37,8 +37,7 @@ static __always_inline void setup_request(void *goroutine_addr) { go_addr_key_t g_key = {}; go_addr_key_from_id(&g_key, goroutine_addr); - // We don't look up in the headers, no http/grpc request, therefore 0 as last argument - client_trace_parent(goroutine_addr, &req.tp, 0); + client_trace_parent(goroutine_addr, &req.tp); bpf_map_update_elem(&ongoing_redis_requests, &g_key, &req, BPF_ANY); } diff --git a/bpf/go_sql.h b/bpf/go_sql.h index 7b451d4fc..e3917a66a 100644 --- a/bpf/go_sql.h +++ b/bpf/go_sql.h @@ -33,8 +33,7 @@ static __always_inline void set_sql_info(void *goroutine_addr, void *sql_param, .conn = {0}, .tp = {0}}; - // We don't look up in the headers, no http/grpc request, therefore 0 as last argument - client_trace_parent(goroutine_addr, &invocation.tp, 0); + client_trace_parent(goroutine_addr, &invocation.tp); go_addr_key_t g_key = {}; go_addr_key_from_id(&g_key, goroutine_addr); diff --git a/bpf/go_traceparent.h b/bpf/go_traceparent.h deleted file mode 100644 index 43d04cdeb..000000000 --- a/bpf/go_traceparent.h +++ /dev/null @@ -1,166 +0,0 @@ -// Copyright The OpenTelemetry Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -#ifndef GO_TRACEPARENT_H -#define GO_TRACEPARENT_H - -#include "utils.h" -#include "stdbool.h" -#include "bpf_dbg.h" -#include "bpf_helpers.h" - -#define MAX_BUCKETS 8 -#define W3C_KEY_LENGTH 11 -#define W3C_VAL_LENGTH 55 - -#define MAX_REALLOCATION 400 -#define MAX_DATA_SIZE 400 - -#define OFFSET_OF_GO_RUNTIME_HMAP_FIELD_B 9 -#define OFFSET_OF_GO_RUNTIME_HMAP_FIELD_BUCKETS 16 - -struct go_string { - char *str; - s64 len; -}; - -struct go_slice { - void *array; - s64 len; - s64 cap; -}; - -struct go_slice_user_ptr { - void *array; - void *len; - void *cap; -}; - -struct go_iface { - void *tab; - void *data; -}; - -struct map_bucket { - char tophash[8]; - struct go_string keys[8]; - struct go_slice values[8]; - void *overflow; -}; - -struct { - __uint(type, BPF_MAP_TYPE_PERCPU_ARRAY); - __uint(key_size, sizeof(u32)); - __uint(value_size, sizeof(struct map_bucket)); - __uint(max_entries, 1); -} golang_mapbucket_storage_map SEC(".maps"); - -// assumes s2 is all lowercase -static __always_inline int bpf_memicmp(const char *s1, const char *s2, s32 size) { - for (int i = 0; i < size; i++) { - if (s1[i] != s2[i] && s1[i] != (s2[i] - 32)) // compare with each uppercase character - { - return i + 1; - } - } - - return 0; -} - -static __always_inline void *extract_traceparent_from_req_headers(void *headers_ptr_ptr) { - void *headers_ptr; - long res; - res = bpf_probe_read(&headers_ptr, sizeof(headers_ptr), headers_ptr_ptr); - if (res < 0) { - return NULL; - } - u64 headers_count = 0; - res = bpf_probe_read(&headers_count, sizeof(headers_count), headers_ptr); - if (res < 0) { - return NULL; - } - if (headers_count == 0) { - return NULL; - } - unsigned char log_2_bucket_count; - res = bpf_probe_read(&log_2_bucket_count, - sizeof(log_2_bucket_count), - headers_ptr + OFFSET_OF_GO_RUNTIME_HMAP_FIELD_B); - if (res < 0) { - return NULL; - } - u64 bucket_count = 1 << log_2_bucket_count; - void *header_buckets; - res = bpf_probe_read(&header_buckets, - sizeof(header_buckets), - headers_ptr + OFFSET_OF_GO_RUNTIME_HMAP_FIELD_BUCKETS); - if (res < 0) { - return NULL; - } - u32 map_id = 0; - struct map_bucket *map_value = - (struct map_bucket *)bpf_map_lookup_elem(&golang_mapbucket_storage_map, &map_id); - if (!map_value) { - return NULL; - } - - for (u64 j = 0; j < MAX_BUCKETS; j++) { - if (j >= bucket_count) { - break; - } - res = bpf_probe_read( - map_value, sizeof(struct map_bucket), header_buckets + (j * sizeof(struct map_bucket))); - if (res < 0) { - continue; - } - for (u64 i = 0; i < 8; i++) { - // break the bucket iteration when tophash is zero - // since "there are no more non-empty cells at higher indexes or overflows" - // ref: https://github.com/golang/go/blob/9050ce9b334419066c364e747499a2faf4425dad/src/runtime/map.go#L86 - if (map_value->tophash[i] == 0) { - break; - } - // skip the cell if tophash is empty - // ref: https://github.com/golang/go/blob/9050ce9b334419066c364e747499a2faf4425dad/src/runtime/map.go#L87 - if (map_value->tophash[i] == 1) { - continue; - } - if (map_value->keys[i].len != W3C_KEY_LENGTH) { - continue; - } - char current_header_key[W3C_KEY_LENGTH]; - bpf_probe_read(current_header_key, sizeof(current_header_key), map_value->keys[i].str); - if (bpf_memicmp(current_header_key, - "traceparent", - W3C_KEY_LENGTH)) // grpc headers don't get normalized - { - continue; - } - void *traceparent_header_value_ptr = map_value->values[i].array; - struct go_string traceparent_header_value_go_str; - res = bpf_probe_read(&traceparent_header_value_go_str, - sizeof(traceparent_header_value_go_str), - traceparent_header_value_ptr); - if (res < 0) { - return NULL; - } - if (traceparent_header_value_go_str.len != W3C_VAL_LENGTH) { - continue; - } - return traceparent_header_value_go_str.str; - } - } - return NULL; -} - -#endif diff --git a/bpf/trace_common.h b/bpf/trace_common.h index 580e56504..58eafd693 100644 --- a/bpf/trace_common.h +++ b/bpf/trace_common.h @@ -186,7 +186,7 @@ static __always_inline u8 valid_span(const unsigned char *span_id) { } static __always_inline u8 valid_trace(const unsigned char *trace_id) { - return *((u64 *)trace_id) != 0 && *((u64 *)(trace_id + 8)) != 0; + return *((u64 *)trace_id) != 0 || *((u64 *)(trace_id + 8)) != 0; } static __always_inline void server_or_client_trace(http_connection_metadata_t *meta, diff --git a/configs/offsets/tracker_input.json b/configs/offsets/tracker_input.json index 7e59a86f0..c6caeeb0d 100644 --- a/configs/offsets/tracker_input.json +++ b/configs/offsets/tracker_input.json @@ -65,6 +65,9 @@ ], "golang.org/x/net/http2.serverConn": [ "conn" + ], + "golang.org/x/net/http2.MetaHeadersFrame": [ + "Fields" ] } }, @@ -73,8 +76,7 @@ "fields": { "google.golang.org/grpc/internal/transport.Stream": [ "method", - "st", - "ctx" + "st" ], "google.golang.org/grpc/internal/status.Status": [ "s" diff --git a/pkg/internal/ebpf/generictracer/bpf_arm64_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_arm64_bpfel.o index 61cd5fa59..2463e8696 100644 --- a/pkg/internal/ebpf/generictracer/bpf_arm64_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49c014eb9f22392eef3eefcfe4bef3ea44c9d06c7b8de0faf3652ec07a44bc87 -size 522112 +oid sha256:901c1861fadb70c62cbde8ed18facefbe429874c0ddc65e7d5b8a733ff5c1b75 +size 522312 diff --git a/pkg/internal/ebpf/generictracer/bpf_debug_arm64_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_debug_arm64_bpfel.o index 57aa50a6e..9ffbe61da 100644 --- a/pkg/internal/ebpf/generictracer/bpf_debug_arm64_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_debug_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a80c335b7f38aa042a8b62518aade4f1efc5661734d5fb5e99b6caabc5384212 -size 852896 +oid sha256:1de3096504b0c70a83b572d58307ca29f2d80cc67f488771cc7eb7bdd47af46f +size 852968 diff --git a/pkg/internal/ebpf/generictracer/bpf_debug_x86_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_debug_x86_bpfel.o index 52edaf693..6a7c5a368 100644 --- a/pkg/internal/ebpf/generictracer/bpf_debug_x86_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_debug_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f6e6e311bd7e132fd7a94ca3078acdfeb0bff6bb23fe26ed40ecf8c108136f85 -size 852408 +oid sha256:36282e7065f566fa2ee5959b1c7d833366a58fcec31852f35b46caabb3163f58 +size 852480 diff --git a/pkg/internal/ebpf/generictracer/bpf_tp_arm64_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_tp_arm64_bpfel.o index f615871b5..2133b568d 100644 --- a/pkg/internal/ebpf/generictracer/bpf_tp_arm64_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_tp_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1eb6417fe6707d1d47b01e349bb0bcabb7e822c2d85e15b78a8945b9ce06cbeb -size 536024 +oid sha256:b864fd2d3608c18ebb35b1fba0ee54acbb79693ab1d1a0055101232646bcf9b1 +size 536088 diff --git a/pkg/internal/ebpf/generictracer/bpf_tp_debug_arm64_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_tp_debug_arm64_bpfel.o index 5abea7184..1f67802ef 100644 --- a/pkg/internal/ebpf/generictracer/bpf_tp_debug_arm64_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_tp_debug_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:49db60962870127eeeb26932d07429c57b86a4ca4433cb4aaf1fee36bd605847 -size 870336 +oid sha256:d38274bbcbc20147a6c9f8c7e32dcc75c3b6e881427095268d1f3118558b74af +size 870528 diff --git a/pkg/internal/ebpf/generictracer/bpf_tp_debug_x86_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_tp_debug_x86_bpfel.o index c0f27ef37..4727100d9 100644 --- a/pkg/internal/ebpf/generictracer/bpf_tp_debug_x86_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_tp_debug_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ed7d3ca477c03c1bfc0551645c785a2585f460398148e7c0c39f760f403916b7 -size 869856 +oid sha256:dde1fef8a69c1c1fca551d3a3d34033877b34960e886c46418576484b95b1970 +size 870048 diff --git a/pkg/internal/ebpf/generictracer/bpf_tp_x86_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_tp_x86_bpfel.o index 76972de99..7e6efca47 100644 --- a/pkg/internal/ebpf/generictracer/bpf_tp_x86_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_tp_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72b729c02cb965bb7a2cee247874dcaa177b2ca0f8d5cf931eaf95f6aa3aa5a8 -size 535424 +oid sha256:94e556cf09dbb675fccf4f1dec815d19d7f2e74d5674d472d710c92e13dfe5f6 +size 535488 diff --git a/pkg/internal/ebpf/generictracer/bpf_x86_bpfel.o b/pkg/internal/ebpf/generictracer/bpf_x86_bpfel.o index 5c7d77edd..f0f41ee74 100644 --- a/pkg/internal/ebpf/generictracer/bpf_x86_bpfel.o +++ b/pkg/internal/ebpf/generictracer/bpf_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9795a47a221ab3988b4602f78d422256c265f2dc82c62e83dde77a2ce280b72 -size 521512 +oid sha256:939822a2a053d06fdeccdf6b435831753b432e7716afaff20f9d930d7b9bddf3 +size 521712 diff --git a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go index 96b199dcc..ef639571d 100644 --- a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.go @@ -50,9 +50,11 @@ type bpfGrpcSrvFuncInvocationT struct { } type bpfGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpfConnectionInfoT + _ [4]byte + Tp bpfTpInfoT + Type uint8 + _ [7]byte } type bpfHttpClientDataT struct { @@ -106,7 +108,7 @@ type bpfKafkaGoReqT struct { type bpfNewFuncInvocationT struct{ Parent uint64 } -type bpfOffTableT struct{ Table [43]uint64 } +type bpfOffTableT struct{ Table [44]uint64 } type bpfProduceReqT struct { MsgPtr uint64 @@ -232,6 +234,7 @@ type bpfProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -242,6 +245,7 @@ type bpfProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -274,7 +278,7 @@ type bpfMapSpecs struct { FetchRequests *ebpf.MapSpec `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -327,7 +331,7 @@ type bpfMaps struct { FetchRequests *ebpf.Map `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -363,7 +367,7 @@ func (m *bpfMaps) Close() error { m.FetchRequests, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -417,6 +421,7 @@ type bpfPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -427,6 +432,7 @@ type bpfPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -472,6 +478,7 @@ func (p *bpfPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -482,6 +489,7 @@ func (p *bpfPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o index 4865dad0d..f0c083061 100644 --- a/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a3eee4ba65ec587c99b95c1d507845fb8791fcde1a5cbf818ef1406cdd0ec19a -size 406096 +oid sha256:2eddb3da6240b3f38e59d8e50bc2af0e5394a67e2e06c747ba3a525e90afe81d +size 380752 diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go index 942f87f55..4ddc9f8b5 100644 --- a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.go @@ -50,9 +50,11 @@ type bpf_debugGrpcSrvFuncInvocationT struct { } type bpf_debugGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpf_debugConnectionInfoT + _ [4]byte + Tp bpf_debugTpInfoT + Type uint8 + _ [7]byte } type bpf_debugHttpClientDataT struct { @@ -106,7 +108,7 @@ type bpf_debugKafkaGoReqT struct { type bpf_debugNewFuncInvocationT struct{ Parent uint64 } -type bpf_debugOffTableT struct{ Table [43]uint64 } +type bpf_debugOffTableT struct{ Table [44]uint64 } type bpf_debugProduceReqT struct { MsgPtr uint64 @@ -232,6 +234,7 @@ type bpf_debugProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -242,6 +245,7 @@ type bpf_debugProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -275,7 +279,7 @@ type bpf_debugMapSpecs struct { FetchRequests *ebpf.MapSpec `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -329,7 +333,7 @@ type bpf_debugMaps struct { FetchRequests *ebpf.Map `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -366,7 +370,7 @@ func (m *bpf_debugMaps) Close() error { m.FetchRequests, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -420,6 +424,7 @@ type bpf_debugPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -430,6 +435,7 @@ type bpf_debugPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -475,6 +481,7 @@ func (p *bpf_debugPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -485,6 +492,7 @@ func (p *bpf_debugPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o index 389f29076..d5ecebd8f 100644 --- a/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_debug_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:89f206e5846db6d8a576464e973b36ed0132126c7eaa502c074d7eddbb4167f2 -size 898512 +oid sha256:617e4272e192efe8fd4bd83f6ac1bab47a26a426238c16054d04a62173fa777d +size 883880 diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go index 076e3e73c..8f46eaa98 100644 --- a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.go @@ -50,9 +50,11 @@ type bpf_debugGrpcSrvFuncInvocationT struct { } type bpf_debugGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpf_debugConnectionInfoT + _ [4]byte + Tp bpf_debugTpInfoT + Type uint8 + _ [7]byte } type bpf_debugHttpClientDataT struct { @@ -106,7 +108,7 @@ type bpf_debugKafkaGoReqT struct { type bpf_debugNewFuncInvocationT struct{ Parent uint64 } -type bpf_debugOffTableT struct{ Table [43]uint64 } +type bpf_debugOffTableT struct{ Table [44]uint64 } type bpf_debugProduceReqT struct { MsgPtr uint64 @@ -232,6 +234,7 @@ type bpf_debugProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -242,6 +245,7 @@ type bpf_debugProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -275,7 +279,7 @@ type bpf_debugMapSpecs struct { FetchRequests *ebpf.MapSpec `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -329,7 +333,7 @@ type bpf_debugMaps struct { FetchRequests *ebpf.Map `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -366,7 +370,7 @@ func (m *bpf_debugMaps) Close() error { m.FetchRequests, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -420,6 +424,7 @@ type bpf_debugPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -430,6 +435,7 @@ type bpf_debugPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -475,6 +481,7 @@ func (p *bpf_debugPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -485,6 +492,7 @@ func (p *bpf_debugPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o index 69934ccb3..d93bdaf4e 100644 --- a/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_debug_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cec51f70daadce5cbbd74b95d8b3b4a0a0734893dc4eb8e825469bd2e1d99ecf -size 900344 +oid sha256:30f75b36b2ec2bfea2b668f286a87885789f6f9fd9e2af43c02c7813ab23f449 +size 885680 diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go index 2ad690f3a..0ca8e55ad 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.go @@ -62,9 +62,11 @@ type bpf_tpGrpcSrvFuncInvocationT struct { } type bpf_tpGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpf_tpConnectionInfoT + _ [4]byte + Tp bpf_tpTpInfoT + Type uint8 + _ [7]byte } type bpf_tpHttpClientDataT struct { @@ -118,7 +120,7 @@ type bpf_tpKafkaGoReqT struct { type bpf_tpNewFuncInvocationT struct{ Parent uint64 } -type bpf_tpOffTableT struct{ Table [43]uint64 } +type bpf_tpOffTableT struct{ Table [44]uint64 } type bpf_tpProduceReqT struct { MsgPtr uint64 @@ -244,6 +246,7 @@ type bpf_tpProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -254,6 +257,7 @@ type bpf_tpProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -287,10 +291,10 @@ type bpf_tpMapSpecs struct { FramerInvocationMap *ebpf.MapSpec `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.MapSpec `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.MapSpec `ebpf:"header_req_map"` Http2ReqMap *ebpf.MapSpec `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -344,10 +348,10 @@ type bpf_tpMaps struct { FramerInvocationMap *ebpf.Map `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.Map `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.Map `ebpf:"header_req_map"` Http2ReqMap *ebpf.Map `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -384,10 +388,10 @@ func (m *bpf_tpMaps) Close() error { m.FramerInvocationMap, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, m.GrpcFramerInvocationMap, m.HeaderReqMap, m.Http2ReqMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -441,6 +445,7 @@ type bpf_tpPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -451,6 +456,7 @@ type bpf_tpPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -496,6 +502,7 @@ func (p *bpf_tpPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -506,6 +513,7 @@ func (p *bpf_tpPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o index c7682ee2b..93e2b2d79 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_tp_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a4325fb501da3e08dbebbf9117013b5f0ee8434f2c6e6b9a668391201a6c7625 -size 453424 +oid sha256:2767655e494656042bb6a0f5b335d82ebd1fb08c62d61e53c002f4fcece2867b +size 427872 diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go index 210f6e100..f477747aa 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.go @@ -62,9 +62,11 @@ type bpf_tp_debugGrpcSrvFuncInvocationT struct { } type bpf_tp_debugGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpf_tp_debugConnectionInfoT + _ [4]byte + Tp bpf_tp_debugTpInfoT + Type uint8 + _ [7]byte } type bpf_tp_debugHttpClientDataT struct { @@ -118,7 +120,7 @@ type bpf_tp_debugKafkaGoReqT struct { type bpf_tp_debugNewFuncInvocationT struct{ Parent uint64 } -type bpf_tp_debugOffTableT struct{ Table [43]uint64 } +type bpf_tp_debugOffTableT struct{ Table [44]uint64 } type bpf_tp_debugProduceReqT struct { MsgPtr uint64 @@ -244,6 +246,7 @@ type bpf_tp_debugProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -254,6 +257,7 @@ type bpf_tp_debugProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -288,10 +292,10 @@ type bpf_tp_debugMapSpecs struct { FramerInvocationMap *ebpf.MapSpec `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.MapSpec `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.MapSpec `ebpf:"header_req_map"` Http2ReqMap *ebpf.MapSpec `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -346,10 +350,10 @@ type bpf_tp_debugMaps struct { FramerInvocationMap *ebpf.Map `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.Map `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.Map `ebpf:"header_req_map"` Http2ReqMap *ebpf.Map `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -387,10 +391,10 @@ func (m *bpf_tp_debugMaps) Close() error { m.FramerInvocationMap, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, m.GrpcFramerInvocationMap, m.HeaderReqMap, m.Http2ReqMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -444,6 +448,7 @@ type bpf_tp_debugPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -454,6 +459,7 @@ type bpf_tp_debugPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -499,6 +505,7 @@ func (p *bpf_tp_debugPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -509,6 +516,7 @@ func (p *bpf_tp_debugPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o index fe1537170..bba6c6e1f 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_tp_debug_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c1b188dea080271979f747a2f2e3cb141ada724324d2f5a4f03b3bb7a8507f7 -size 998824 +oid sha256:9a8fdee2799b08cdb3def4d811cd3281efb963a64a97efab45c783bba6b3116c +size 984248 diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go index a10e2b1c2..9d2d99cec 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.go @@ -62,9 +62,11 @@ type bpf_tp_debugGrpcSrvFuncInvocationT struct { } type bpf_tp_debugGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpf_tp_debugConnectionInfoT + _ [4]byte + Tp bpf_tp_debugTpInfoT + Type uint8 + _ [7]byte } type bpf_tp_debugHttpClientDataT struct { @@ -118,7 +120,7 @@ type bpf_tp_debugKafkaGoReqT struct { type bpf_tp_debugNewFuncInvocationT struct{ Parent uint64 } -type bpf_tp_debugOffTableT struct{ Table [43]uint64 } +type bpf_tp_debugOffTableT struct{ Table [44]uint64 } type bpf_tp_debugProduceReqT struct { MsgPtr uint64 @@ -244,6 +246,7 @@ type bpf_tp_debugProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -254,6 +257,7 @@ type bpf_tp_debugProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -288,10 +292,10 @@ type bpf_tp_debugMapSpecs struct { FramerInvocationMap *ebpf.MapSpec `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.MapSpec `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.MapSpec `ebpf:"header_req_map"` Http2ReqMap *ebpf.MapSpec `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -346,10 +350,10 @@ type bpf_tp_debugMaps struct { FramerInvocationMap *ebpf.Map `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.Map `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.Map `ebpf:"header_req_map"` Http2ReqMap *ebpf.Map `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -387,10 +391,10 @@ func (m *bpf_tp_debugMaps) Close() error { m.FramerInvocationMap, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, m.GrpcFramerInvocationMap, m.HeaderReqMap, m.Http2ReqMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -444,6 +448,7 @@ type bpf_tp_debugPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -454,6 +459,7 @@ type bpf_tp_debugPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -499,6 +505,7 @@ func (p *bpf_tp_debugPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -509,6 +516,7 @@ func (p *bpf_tp_debugPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o index dd6e3f6fc..ded2ff625 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_tp_debug_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cf8ad759078f1307183e6081572e0368caf95f709eff45aeb6c408d3caccf1a8 -size 1000648 +oid sha256:5e985ed6c99acf230309893e8c5b7970c48d28acee6cfe30687393a1dd83fa43 +size 986040 diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go index f2b9911cd..e4e1443cd 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.go @@ -62,9 +62,11 @@ type bpf_tpGrpcSrvFuncInvocationT struct { } type bpf_tpGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpf_tpConnectionInfoT + _ [4]byte + Tp bpf_tpTpInfoT + Type uint8 + _ [7]byte } type bpf_tpHttpClientDataT struct { @@ -118,7 +120,7 @@ type bpf_tpKafkaGoReqT struct { type bpf_tpNewFuncInvocationT struct{ Parent uint64 } -type bpf_tpOffTableT struct{ Table [43]uint64 } +type bpf_tpOffTableT struct{ Table [44]uint64 } type bpf_tpProduceReqT struct { MsgPtr uint64 @@ -244,6 +246,7 @@ type bpf_tpProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -254,6 +257,7 @@ type bpf_tpProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -287,10 +291,10 @@ type bpf_tpMapSpecs struct { FramerInvocationMap *ebpf.MapSpec `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.MapSpec `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.MapSpec `ebpf:"header_req_map"` Http2ReqMap *ebpf.MapSpec `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -344,10 +348,10 @@ type bpf_tpMaps struct { FramerInvocationMap *ebpf.Map `ebpf:"framer_invocation_map"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` GrpcFramerInvocationMap *ebpf.Map `ebpf:"grpc_framer_invocation_map"` HeaderReqMap *ebpf.Map `ebpf:"header_req_map"` Http2ReqMap *ebpf.Map `ebpf:"http2_req_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -384,10 +388,10 @@ func (m *bpf_tpMaps) Close() error { m.FramerInvocationMap, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, m.GrpcFramerInvocationMap, m.HeaderReqMap, m.Http2ReqMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -441,6 +445,7 @@ type bpf_tpPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -451,6 +456,7 @@ type bpf_tpPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -496,6 +502,7 @@ func (p *bpf_tpPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -506,6 +513,7 @@ func (p *bpf_tpPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o index 1fae870dc..98cde2370 100644 --- a/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_tp_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5139581966f4a01968574f100ba80095f7ae63b41ef5e635398736024f77ef88 -size 455192 +oid sha256:02e3ef0adbe8a489ad236fb8e3d4b103cadd67f97ec52cd547691413aa487adc +size 429632 diff --git a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go index 31ee604d5..c26c864d4 100644 --- a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go +++ b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.go @@ -50,9 +50,11 @@ type bpfGrpcSrvFuncInvocationT struct { } type bpfGrpcTransportsT struct { - Type uint8 - _ [3]byte Conn bpfConnectionInfoT + _ [4]byte + Tp bpfTpInfoT + Type uint8 + _ [7]byte } type bpfHttpClientDataT struct { @@ -106,7 +108,7 @@ type bpfKafkaGoReqT struct { type bpfNewFuncInvocationT struct{ Parent uint64 } -type bpfOffTableT struct{ Table [43]uint64 } +type bpfOffTableT struct{ Table [44]uint64 } type bpfProduceReqT struct { MsgPtr uint64 @@ -232,6 +234,7 @@ type bpfProgramSpecs struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.ProgramSpec `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.ProgramSpec `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.ProgramSpec `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.ProgramSpec `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.ProgramSpec `ebpf:"uprobe_persistConnRoundTrip"` @@ -242,6 +245,7 @@ type bpfProgramSpecs struct { UprobeProtocolRoundtripRet *ebpf.ProgramSpec `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.ProgramSpec `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.ProgramSpec `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.ProgramSpec `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.ProgramSpec `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.ProgramSpec `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.ProgramSpec `ebpf:"uprobe_reader_read"` @@ -274,7 +278,7 @@ type bpfMapSpecs struct { FetchRequests *ebpf.MapSpec `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.MapSpec `ebpf:"go_offsets_map"` GoTraceMap *ebpf.MapSpec `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.MapSpec `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.MapSpec `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.MapSpec `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.MapSpec `ebpf:"kafka_requests"` Newproc1 *ebpf.MapSpec `ebpf:"newproc1"` @@ -327,7 +331,7 @@ type bpfMaps struct { FetchRequests *ebpf.Map `ebpf:"fetch_requests"` GoOffsetsMap *ebpf.Map `ebpf:"go_offsets_map"` GoTraceMap *ebpf.Map `ebpf:"go_trace_map"` - GolangMapbucketStorageMap *ebpf.Map `ebpf:"golang_mapbucket_storage_map"` + Http2ServerRequestsTp *ebpf.Map `ebpf:"http2_server_requests_tp"` IncomingTraceMap *ebpf.Map `ebpf:"incoming_trace_map"` KafkaRequests *ebpf.Map `ebpf:"kafka_requests"` Newproc1 *ebpf.Map `ebpf:"newproc1"` @@ -363,7 +367,7 @@ func (m *bpfMaps) Close() error { m.FetchRequests, m.GoOffsetsMap, m.GoTraceMap, - m.GolangMapbucketStorageMap, + m.Http2ServerRequestsTp, m.IncomingTraceMap, m.KafkaRequests, m.Newproc1, @@ -417,6 +421,7 @@ type bpfPrograms struct { UprobeHttp2ResponseWriterStateWriteHeader *ebpf.Program `ebpf:"uprobe_http2ResponseWriterStateWriteHeader"` UprobeHttp2RoundTrip *ebpf.Program `ebpf:"uprobe_http2RoundTrip"` UprobeHttp2ServerOperateHeaders *ebpf.Program `ebpf:"uprobe_http2Server_operateHeaders"` + UprobeHttp2ServerProcessHeaders *ebpf.Program `ebpf:"uprobe_http2Server_processHeaders"` UprobeHttp2serverConnRunHandler *ebpf.Program `ebpf:"uprobe_http2serverConn_runHandler"` UprobeNetFdRead *ebpf.Program `ebpf:"uprobe_netFdRead"` UprobePersistConnRoundTrip *ebpf.Program `ebpf:"uprobe_persistConnRoundTrip"` @@ -427,6 +432,7 @@ type bpfPrograms struct { UprobeProtocolRoundtripRet *ebpf.Program `ebpf:"uprobe_protocol_roundtrip_ret"` UprobeQueryDC *ebpf.Program `ebpf:"uprobe_queryDC"` UprobeQueryReturn *ebpf.Program `ebpf:"uprobe_queryReturn"` + UprobeReadContinuedLineSliceReturns *ebpf.Program `ebpf:"uprobe_readContinuedLineSliceReturns"` UprobeReadRequestReturns *ebpf.Program `ebpf:"uprobe_readRequestReturns"` UprobeReadRequestStart *ebpf.Program `ebpf:"uprobe_readRequestStart"` UprobeReaderRead *ebpf.Program `ebpf:"uprobe_reader_read"` @@ -472,6 +478,7 @@ func (p *bpfPrograms) Close() error { p.UprobeHttp2ResponseWriterStateWriteHeader, p.UprobeHttp2RoundTrip, p.UprobeHttp2ServerOperateHeaders, + p.UprobeHttp2ServerProcessHeaders, p.UprobeHttp2serverConnRunHandler, p.UprobeNetFdRead, p.UprobePersistConnRoundTrip, @@ -482,6 +489,7 @@ func (p *bpfPrograms) Close() error { p.UprobeProtocolRoundtripRet, p.UprobeQueryDC, p.UprobeQueryReturn, + p.UprobeReadContinuedLineSliceReturns, p.UprobeReadRequestReturns, p.UprobeReadRequestStart, p.UprobeReaderRead, diff --git a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o index 505247061..74915f551 100644 --- a/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o +++ b/pkg/internal/ebpf/gotracer/bpf_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d2f0a62fd120fe1665c4a840fcf5a4fbbccc538930c2cde5dc69f91d4fb2fbf7 -size 407920 +oid sha256:cad7a4ba19d684c65b254551d770eaaa115a465f35c5c5413cec4d011baf4291 +size 382584 diff --git a/pkg/internal/ebpf/gotracer/gotracer.go b/pkg/internal/ebpf/gotracer/gotracer.go index 39da8b239..79e1af583 100644 --- a/pkg/internal/ebpf/gotracer/gotracer.go +++ b/pkg/internal/ebpf/gotracer/gotracer.go @@ -131,7 +131,7 @@ func (p *Tracer) RegisterOffsets(fileInfo *exec.FileInfo, offsets *goexec.Offset goexec.GrpcStreamMethodPtrPos, goexec.GrpcStatusSPos, goexec.GrpcStatusCodePtrPos, - goexec.GrpcStreamCtxPtrPos, + goexec.MetaHeadersFrameFieldsPtrPos, goexec.ValueContextValPtrPos, goexec.GrpcStConnPos, goexec.GrpcTConnPos, @@ -150,6 +150,8 @@ func (p *Tracer) RegisterOffsets(fileInfo *exec.FileInfo, offsets *goexec.Offset goexec.SaramaResponseCorrIDPos, goexec.SaramaBrokerConnPos, goexec.SaramaBufconnConnPos, + // grpc versioning + goexec.OperateHeadersNew, } { if val, ok := offsets.Field[field].(uint64); ok { offTable.Table[field] = val @@ -192,6 +194,9 @@ func (p *Tracer) GoProbes() map[string][]ebpfcommon.FunctionPrograms { Start: p.bpfObjects.UprobeReadRequestStart, End: p.bpfObjects.UprobeReadRequestReturns, }}, + "net/textproto.(*Reader).readContinuedLineSlice": {{ + End: p.bpfObjects.UprobeReadContinuedLineSliceReturns, + }}, "net/http.(*Transport).roundTrip": {{ // HTTP client, works with Client.Do as well as using the RoundTripper directly Start: p.bpfObjects.UprobeRoundTrip, End: p.bpfObjects.UprobeRoundTripReturn, @@ -223,6 +228,12 @@ func (p *Tracer) GoProbes() map[string][]ebpfcommon.FunctionPrograms { "net/http.(*http2serverConn).runHandler": {{ Start: p.bpfObjects.UprobeHttp2serverConnRunHandler, // http2 server connection tracking, vendored in go }}, + "golang.org/x/net/http2.(*serverConn).processHeaders": {{ + Start: p.bpfObjects.UprobeHttp2ServerProcessHeaders, // http2 server request header parsing + }}, + "net/http.(*http2serverConn).processHeaders": {{ + Start: p.bpfObjects.UprobeHttp2ServerProcessHeaders, // http2 server request header parsing, vendored in go + }}, // tracking of tcp connections for black-box propagation "net/http.(*conn).serve": {{ // http server Start: p.bpfObjects.UprobeConnServe, diff --git a/pkg/internal/ebpf/tctracer/bpf_arm64_bpfel.o b/pkg/internal/ebpf/tctracer/bpf_arm64_bpfel.o index be184fcb8..c018e90f6 100644 --- a/pkg/internal/ebpf/tctracer/bpf_arm64_bpfel.o +++ b/pkg/internal/ebpf/tctracer/bpf_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f5747dab4356d695284625813fa95d969713644187e84f5f99d8bcb925fcca24 -size 196072 +oid sha256:3a10a0d94a52394c8f87c66d531d1d2066b67d459ce14e611f00851d0fdaf719 +size 196272 diff --git a/pkg/internal/ebpf/tctracer/bpf_debug_arm64_bpfel.o b/pkg/internal/ebpf/tctracer/bpf_debug_arm64_bpfel.o index 6ae0efd64..c97170210 100644 --- a/pkg/internal/ebpf/tctracer/bpf_debug_arm64_bpfel.o +++ b/pkg/internal/ebpf/tctracer/bpf_debug_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:997d89ed40e3c3524e84a1ed8e45086e3d2252828838b0ce80fdf48f0021958f -size 339384 +oid sha256:71f4c902cdfbff09b16230c7d727590462c20b056533176b4bfd54d87bbbe63f +size 339464 diff --git a/pkg/internal/ebpf/tctracer/bpf_debug_x86_bpfel.o b/pkg/internal/ebpf/tctracer/bpf_debug_x86_bpfel.o index e498a88dd..31ff269c4 100644 --- a/pkg/internal/ebpf/tctracer/bpf_debug_x86_bpfel.o +++ b/pkg/internal/ebpf/tctracer/bpf_debug_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d8fd88b462099505abf146e9c5a42c0ef446776c01ea37f0e6324162127188b0 -size 340688 +oid sha256:08f2a65445f7f5323e54dc62e05d9f253c326b833c2fa23fa8daa5204847dca2 +size 340768 diff --git a/pkg/internal/ebpf/tctracer/bpf_x86_bpfel.o b/pkg/internal/ebpf/tctracer/bpf_x86_bpfel.o index 948ad02ac..e23033b77 100644 --- a/pkg/internal/ebpf/tctracer/bpf_x86_bpfel.o +++ b/pkg/internal/ebpf/tctracer/bpf_x86_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a6291a056ec861690c2c54e35e14e78ddf5f27e32a0df51513d60d30b10a348 -size 197384 +oid sha256:54e45d8d38195633a89be7cd688f2f8b547c0586ec345b998cb95cf8304d31da +size 197576 diff --git a/pkg/internal/goexec/offsets.json b/pkg/internal/goexec/offsets.json index f7df0fee5..f3d784448 100755 --- a/pkg/internal/goexec/offsets.json +++ b/pkg/internal/goexec/offsets.json @@ -260,6 +260,20 @@ ] } }, + "golang.org/x/net/http2.MetaHeadersFrame": { + "Fields": { + "versions": { + "oldest": "0.12.0", + "newest": "0.31.0" + }, + "offsets": [ + { + "offset": 8, + "since": "0.12.0" + } + ] + } + }, "golang.org/x/net/http2.serverConn": { "conn": { "versions": { @@ -317,22 +331,6 @@ } }, "google.golang.org/grpc/internal/transport.Stream": { - "ctx": { - "versions": { - "oldest": "1.40.0", - "newest": "1.68.0" - }, - "offsets": [ - { - "offset": 32, - "since": "1.40.0" - }, - { - "offset": 40, - "since": "1.66.0" - } - ] - }, "method": { "versions": { "oldest": "1.40.0", diff --git a/pkg/internal/goexec/structmembers.go b/pkg/internal/goexec/structmembers.go index 224176d6d..28ef44c7a 100644 --- a/pkg/internal/goexec/structmembers.go +++ b/pkg/internal/goexec/structmembers.go @@ -9,6 +9,8 @@ import ( "log/slog" "strings" + "github.com/hashicorp/go-version" + "github.com/grafana/go-offsets-tracker/pkg/offsets" ) @@ -21,6 +23,8 @@ type GoOffset uint32 const GoOffsetsTableSize = 30 +var operateHeadersNew = version.Must(version.NewVersion("1.60.0")) + const ( // go common ConnFdPos GoOffset = iota + 1 // start at 1, must match what's in go_offsets.h @@ -51,7 +55,7 @@ const ( GrpcStreamMethodPtrPos GrpcStatusSPos GrpcStatusCodePtrPos - GrpcStreamCtxPtrPos + MetaHeadersFrameFieldsPtrPos ValueContextValPtrPos GrpcStConnPos GrpcTConnPos @@ -70,6 +74,8 @@ const ( SaramaResponseCorrIDPos SaramaBrokerConnPos SaramaBufconnConnPos + // grpc versioning + OperateHeadersNew ) //go:embed offsets.json @@ -113,7 +119,6 @@ var structMembers = map[string]structInfo{ fields: map[string]GoOffset{ "st": GrpcStreamStPtrPos, "method": GrpcStreamMethodPtrPos, - "ctx": GrpcStreamCtxPtrPos, }, }, "google.golang.org/grpc/internal/status.Status": { @@ -175,6 +180,12 @@ var structMembers = map[string]structInfo{ "w": FramerWPos, }, }, + "golang.org/x/net/http2.MetaHeadersFrame": { + lib: "golang.org/x/net", + fields: map[string]GoOffset{ + "Fields": MetaHeadersFrameFieldsPtrPos, + }, + }, "golang.org/x/net/http2.serverConn": { lib: "golang.org/x/net", fields: map[string]GoOffset{ @@ -297,6 +308,11 @@ func structMemberOffsets(elfFile *elf.File) (FieldOffsets, error) { if len(expected) > 0 { log().Debug("Fields not found in the DWARF file", "fields", expected) } else { + libVersions, err := findLibraryVersions(elfFile) + if err != nil { + return nil, fmt.Errorf("searching for library versions: %w", err) + } + offs = offsetsForLibVersions(offs, libVersions, log()) return offs, nil } } else { @@ -310,6 +326,39 @@ func structMemberOffsets(elfFile *elf.File) (FieldOffsets, error) { return structMemberPreFetchedOffsets(elfFile, offs) } +func offsetsForLibVersions(fieldOffsets FieldOffsets, libVersions map[string]string, log *slog.Logger) FieldOffsets { + for lib, ver := range libVersions { + if lib == "google.golang.org/grpc" { + ver = cleanLibVersion(ver, true, lib, log) + + if v, err := version.NewVersion(ver); err == nil { + if v.GreaterThanOrEqual(operateHeadersNew) { + fieldOffsets[OperateHeadersNew] = uint64(1) + } + } else { + log.Debug("can't parse version for", "library", lib) + } + } + } + + return fieldOffsets +} + +func cleanLibVersion(version string, found bool, lib string, log *slog.Logger) string { + if !found { + log.Debug("can't find version for library. Assuming 0.0.0", "lib", lib) + // unversioned libraries are accounted as "0.0.0" in offsets.json file + // https://github.com/grafana/go-offsets-tracker/blob/main/pkg/writer/writer.go#L108-L110 + return "0.0.0" + } + + dash := strings.Index(version, "-") + if dash > 0 { + version = version[:dash] + } + return version +} + func structMemberPreFetchedOffsets(elfFile *elf.File, fieldOffsets FieldOffsets) (FieldOffsets, error) { log := log().With("function", "structMemberPreFetchedOffsets") offs, err := offsets.Read(bytes.NewBufferString(prefetchedOffsets)) @@ -320,22 +369,12 @@ func structMemberPreFetchedOffsets(elfFile *elf.File, fieldOffsets FieldOffsets) if err != nil { return nil, fmt.Errorf("searching for library versions: %w", err) } + fieldOffsets = offsetsForLibVersions(fieldOffsets, libVersions, log) // after putting the offsets.json in a Go structure, we search all the // structMembers elements on it, to get the annotated offsets for strName, strInfo := range structMembers { version, ok := libVersions[strInfo.lib] - if !ok { - log.Debug("can't find version for library. Assuming 0.0.0", "lib", strInfo.lib) - // unversioned libraries are accounted as "0.0.0" in offsets.json file - // https://github.com/grafana/go-offsets-tracker/blob/main/pkg/writer/writer.go#L108-L110 - version = "0.0.0" - } - - dash := strings.Index(version, "-") - if dash > 0 { - version = version[:dash] - } - + version = cleanLibVersion(version, ok, strInfo.lib, log) for fieldName, constantName := range strInfo.fields { // look the version of the required field in the offsets.json memory copy offset, ok := offs.Find(strName, fieldName, version) diff --git a/pkg/internal/netolly/ebpf/net_arm64_bpfel.o b/pkg/internal/netolly/ebpf/net_arm64_bpfel.o index c26a2a9fd..29755eeae 100644 --- a/pkg/internal/netolly/ebpf/net_arm64_bpfel.o +++ b/pkg/internal/netolly/ebpf/net_arm64_bpfel.o @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b2d5bbea40924b5d2e5954cb9ee69a8ec5008777747516586225d77ae3b5fa26 +oid sha256:4f1926ab4ebb8e41fa9d2d5f9bc0bfc351cec56b6d48ba22be01beb4335d2c3e size 31232 diff --git a/test/integration/red_test_client.go b/test/integration/red_test_client.go index 926e40276..aa2f9585e 100644 --- a/test/integration/red_test_client.go +++ b/test/integration/red_test_client.go @@ -6,7 +6,6 @@ import ( "encoding/json" "fmt" "net/http" - "strings" "testing" "time" @@ -18,7 +17,7 @@ import ( "github.com/grafana/beyla/test/integration/components/prom" ) -func testClientWithMethodAndStatusCode(t *testing.T, method string, statusCode int, traces bool, traceIDLookup string) { +func testClientWithMethodAndStatusCode(t *testing.T, method string, statusCode int, traces bool) { // Eventually, Prometheus would make this query visible pq := prom.Client{HostPort: prometheusHostPort} var results []prom.Result @@ -54,7 +53,6 @@ func testClientWithMethodAndStatusCode(t *testing.T, method string, statusCode i return } - var trace jaeger.Trace test.Eventually(t, testTimeout, func(t require.TestingT) { resp, err := http.Get(jaegerQueryURL + fmt.Sprintf("?service=pingclient&operation=%s", method)) require.NoError(t, err) @@ -66,32 +64,15 @@ func testClientWithMethodAndStatusCode(t *testing.T, method string, statusCode i require.NoError(t, json.NewDecoder(resp.Body).Decode(&tq)) traces := tq.FindBySpan(jaeger.Tag{Key: "http.response.status_code", Type: "int64", Value: float64(statusCode)}) require.GreaterOrEqual(t, len(traces), 1) - trace = traces[0] }, test.Interval(100*time.Millisecond)) - - spans := trace.FindByOperationName(method) - require.Len(t, spans, 1) - span := spans[0] - - /* - The code in pingclient.go generates spans like these: - 00-000000000000038b0000000000000000-000000000000038b-01 - - The traceID and spanID increase by one in tandem and it loops forever. - We check that the traceID has that 16 character 0 suffix and then we - use the first 16 characters for looking up by Parent span. - */ - require.True(t, span.TraceID != "") - require.True(t, strings.HasSuffix(span.TraceID, traceIDLookup)) - require.True(t, strings.HasPrefix(span.SpanID, "00")) } func testREDMetricsForClientHTTPLibrary(t *testing.T) { - testClientWithMethodAndStatusCode(t, "GET", 200, true, "0000000000000000") - testClientWithMethodAndStatusCode(t, "OPTIONS", 204, true, "0000000000000001") + testClientWithMethodAndStatusCode(t, "GET", 200, true) + testClientWithMethodAndStatusCode(t, "OPTIONS", 204, true) } func testREDMetricsForClientHTTPLibraryNoTraces(t *testing.T) { - testClientWithMethodAndStatusCode(t, "GET", 200, false, "0000000000000000") - testClientWithMethodAndStatusCode(t, "OPTIONS", 204, false, "0000000000000001") + testClientWithMethodAndStatusCode(t, "GET", 200, false) + testClientWithMethodAndStatusCode(t, "OPTIONS", 204, false) }