common.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef DF_BPF_COMMON_H
  2. #define DF_BPF_COMMON_H
  3. // 消息类型
  4. enum message_type {
  5. MSG_UNKNOWN,
  6. // L7协议推断数据类型是请求
  7. MSG_REQUEST,
  8. // L7协议推断数据类型是回应
  9. MSG_RESPONSE,
  10. // HTTP2 request message end marker
  11. MSG_REQUEST_END,
  12. // HTTP2 response message end marker
  13. MSG_RESPONSE_END,
  14. // 无法推断协议类型,先在map中存储等下一次的数据
  15. // 获取后两者合并,再进行判断。主要场景用于MySQL,Kafka
  16. // 读数据的行为先读取4字节数据后再读取剩下的数据,要想进行
  17. // 正确的协议判断需要合并这两部分数据才可以。
  18. MSG_PRESTORE,
  19. // 对于l7的协议推断需要再确认逻辑。
  20. MSG_RECONFIRM,
  21. // 用于信息相关清理,一般用于socket信息清除
  22. MSG_CLEAR
  23. };
  24. // 数据流方向
  25. enum traffic_direction {
  26. T_EGRESS,
  27. T_INGRESS,
  28. };
  29. // 数据协议
  30. enum traffic_protocol {
  31. PROTO_UNKNOWN = 0,
  32. PROTO_ORTHER = 1,
  33. PROTO_HTTP1 = 20,
  34. PROTO_HTTP2 = 21,
  35. PROTO_TLS_HTTP1 = 22,
  36. PROTO_TLS_HTTP2 = 23,
  37. PROTO_DUBBO = 40,
  38. PROTO_SOFARPC = 43,
  39. PROTO_MYSQL = 60,
  40. PROTO_POSTGRESQL = 61,
  41. PROTO_REDIS = 80,
  42. PROTO_KAFKA = 100,
  43. PROTO_MQTT = 101,
  44. PROTO_DNS = 120,
  45. PROTO_NUM = 130
  46. };
  47. struct protocol_message_t {
  48. enum traffic_protocol protocol;
  49. enum message_type type;
  50. };
  51. //deepclash
  52. //enum {
  53. // TASK_COMM_LEN = 16,
  54. //};
  55. enum code_type {
  56. CodeTypeUnknown = -1,
  57. CodeTypeWaitCheck = 0,
  58. CodeTypePHP = 1001,
  59. CodeTypeJava = 1002,
  60. CodeTypeJavaAot = 1102,
  61. CodeTypePython = 1003,
  62. CodeTypeDotNet = 1004,
  63. CodeTypeNode = 1005,
  64. CodeTypeGo = 1006,
  65. CodeTypeC = 1007,
  66. CodeTypeNetCore = 1008,
  67. CodeTypeNetCoreAot = 1108,
  68. CodeTypeLua = 1009,
  69. CodeTypeJavaC = 1010,
  70. CodeTypeRuby = 1012
  71. };
  72. #endif /* DF_BPF_COMMON_H */