|
|
@@ -449,42 +449,42 @@ int uprobe_http2Server_operateHeader(struct pt_regs *ctx) {
|
|
|
bpf_probe_read(&header_fields, sizeof(header_fields), (void *)(frame_ptr + frame_fields_pos));
|
|
|
char key[W3C_KEY_LENGTH] = "traceparent";
|
|
|
|
|
|
- for (s32 i = 0; i < MAX_HEADERS; i++) {
|
|
|
- if (i >= header_fields.len) {
|
|
|
- break;
|
|
|
- }
|
|
|
- struct hpack_header_field hf = {};
|
|
|
- long res =
|
|
|
- bpf_probe_read(&hf, sizeof(hf), (void *)(header_fields.ptr + (i * sizeof(hf))));
|
|
|
- if (hf.name.len == W3C_KEY_LENGTH && hf.value.len == W3C_VAL_LENGTH) {
|
|
|
- char current_key[W3C_KEY_LENGTH];
|
|
|
- bpf_probe_read(current_key, sizeof(current_key), hf.name.str);
|
|
|
- if (bpf_memcmp(key, current_key, sizeof(key))) {
|
|
|
- char val[W3C_VAL_LENGTH];
|
|
|
- bpf_probe_read(val, W3C_VAL_LENGTH, hf.value.str);
|
|
|
-
|
|
|
- // Get stream id
|
|
|
- void *headers_frame = NULL;
|
|
|
- bpf_probe_read(&headers_frame, sizeof(headers_frame), frame_ptr);
|
|
|
- u32 stream_id = 0;
|
|
|
- bpf_probe_read(
|
|
|
- &stream_id, sizeof(stream_id), (void *)(headers_frame + frame_stream_id_pod));
|
|
|
+ // for (s32 i = 0; i < MAX_HEADERS; i++) {
|
|
|
+ // if (i >= header_fields.len) {
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // struct hpack_header_field hf = {};
|
|
|
+ // long res =
|
|
|
+ // bpf_probe_read(&hf, sizeof(hf), (void *)(header_fields.ptr + (i * sizeof(hf))));
|
|
|
+ // if (hf.name.len == W3C_KEY_LENGTH && hf.value.len == W3C_VAL_LENGTH) {
|
|
|
+ // char current_key[W3C_KEY_LENGTH];
|
|
|
+ // bpf_probe_read(current_key, sizeof(current_key), hf.name.str);
|
|
|
+ // if (bpf_memcmp(key, current_key, sizeof(key))) {
|
|
|
+ // char val[W3C_VAL_LENGTH];
|
|
|
+ // bpf_probe_read(val, W3C_VAL_LENGTH, hf.value.str);
|
|
|
+
|
|
|
+ // // Get stream id
|
|
|
+ // void *headers_frame = NULL;
|
|
|
+ // bpf_probe_read(&headers_frame, sizeof(headers_frame), frame_ptr);
|
|
|
+ // u32 stream_id = 0;
|
|
|
+ // bpf_probe_read(
|
|
|
+ // &stream_id, sizeof(stream_id), (void *)(headers_frame + frame_stream_id_pod));
|
|
|
|
|
|
- // 使用 per-cpu array map 存储大变量,避免栈空间超限
|
|
|
- u32 zero = 0;
|
|
|
- struct grpc_request_t *grpcReq = bpf_map_lookup_elem(&operate_header_storage, &zero);
|
|
|
- if (grpcReq == NULL) {
|
|
|
- bpf_printk("grpc:server:operateHeader: failed to get storage");
|
|
|
- return -1;
|
|
|
- }
|
|
|
+ // // 使用 per-cpu array map 存储大变量,避免栈空间超限
|
|
|
+ // u32 zero = 0;
|
|
|
+ // struct grpc_request_t *grpcReq = bpf_map_lookup_elem(&operate_header_storage, &zero);
|
|
|
+ // if (grpcReq == NULL) {
|
|
|
+ // bpf_printk("grpc:server:operateHeader: failed to get storage");
|
|
|
+ // return -1;
|
|
|
+ // }
|
|
|
|
|
|
- // 清零并初始化
|
|
|
- __builtin_memset(grpcReq, 0, sizeof(struct grpc_request_t));
|
|
|
- // w3c_string_to_span_context(val, &grpcReq->psc);
|
|
|
- bpf_map_update_elem(&streamid_to_grpc_events, &stream_id, grpcReq, 0);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ // // 清零并初始化
|
|
|
+ // __builtin_memset(grpcReq, 0, sizeof(struct grpc_request_t));
|
|
|
+ // // w3c_string_to_span_context(val, &grpcReq->psc);
|
|
|
+ // bpf_map_update_elem(&streamid_to_grpc_events, &stream_id, grpcReq, 0);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
|
|
|
return 0;
|
|
|
}
|