|
|
@@ -33,15 +33,6 @@ struct grpc_header_ctx_t {
|
|
|
u32 frame_stream_id_pod_offset;
|
|
|
};
|
|
|
|
|
|
-// 用于处理头部的临时结构,减少栈使用
|
|
|
-struct grpc_header_work_t {
|
|
|
- struct hpack_header_field hf;
|
|
|
- char val[W3C_VAL_LENGTH];
|
|
|
- u32 part1;
|
|
|
- u32 part2;
|
|
|
- u32 part3;
|
|
|
-};
|
|
|
-
|
|
|
struct {
|
|
|
__uint(type, BPF_MAP_TYPE_HASH);
|
|
|
__type(key, void *);
|
|
|
@@ -79,7 +70,24 @@ struct {
|
|
|
__uint(max_entries, 1);
|
|
|
} grpc_header_ctx_storage SEC(".maps");
|
|
|
|
|
|
+struct hpack_header_field {
|
|
|
+ struct go_string_ot name;
|
|
|
+ struct go_string_ot value;
|
|
|
+ bool sensitive;
|
|
|
+};
|
|
|
+
|
|
|
+// 用于处理头部的临时结构,减少栈使用
|
|
|
+// 注意:必须在 hpack_header_field 定义之后
|
|
|
+struct grpc_header_work_t {
|
|
|
+ struct hpack_header_field hf;
|
|
|
+ char val[W3C_VAL_LENGTH];
|
|
|
+ u32 part1;
|
|
|
+ u32 part2;
|
|
|
+ u32 part3;
|
|
|
+};
|
|
|
+
|
|
|
// 工作缓冲区,避免栈空间超限
|
|
|
+// 注意:必须在 grpc_header_work_t 定义之后
|
|
|
struct {
|
|
|
__uint(type, BPF_MAP_TYPE_PERCPU_ARRAY);
|
|
|
__uint(key_size, sizeof(u32));
|
|
|
@@ -87,12 +95,6 @@ struct {
|
|
|
__uint(max_entries, 1);
|
|
|
} grpc_header_work_storage SEC(".maps");
|
|
|
|
|
|
-struct hpack_header_field {
|
|
|
- struct go_string_ot name;
|
|
|
- struct go_string_ot value;
|
|
|
- bool sensitive;
|
|
|
-};
|
|
|
-
|
|
|
// Injected in init
|
|
|
volatile const u64 stream_method_ptr_pos;
|
|
|
volatile const u64 frame_fields_pos;
|