diff options
| author | lijia <[email protected]> | 2021-08-09 17:49:02 +0800 |
|---|---|---|
| committer | lijia <[email protected]> | 2021-08-09 17:49:02 +0800 |
| commit | 12d35da1beb241ebe2edf473a1a3a6313f0df4f5 (patch) | |
| tree | 078b54f08817bf8509ebc5211079eff7cf16c07b | |
| parent | b72afadb9f8a4dabb6c4fe7a7273d575196e9be1 (diff) | |
TSG-7297, 支持插件获取当前的网络拓扑模式, 方便插件在不同模式下, 一些特殊业务的处理。v4.2.45
| -rw-r--r-- | include/private/sapp_global_val.h | 7 | ||||
| -rw-r--r-- | include/public/stream_inc/stream_control.h | 14 | ||||
| -rw-r--r-- | src/config/config_parse.cpp | 3 | ||||
| -rw-r--r-- | src/dealpkt/stream_manage.c | 4 | ||||
| -rw-r--r-- | src/inner_plug/sapp_assistant.cpp | 12 |
5 files changed, 29 insertions, 11 deletions
diff --git a/include/private/sapp_global_val.h b/include/private/sapp_global_val.h index eb345a0..13d719a 100644 --- a/include/private/sapp_global_val.h +++ b/include/private/sapp_global_val.h @@ -12,11 +12,6 @@ enum pkt_dump_mode{ PKT_DUMP_UDP_SOCKET = 2, }; -enum depolyment_mode_config{ - DEPOLYMENT_MODE_MIRROR = 1, - DEPOLYMENT_MODE_TRANSPARENT = 2, - DEPOLYMENT_MODE_INLINE = 3, -}; /* vxlan��vlan_flipping�ǿ��Թ����, @@ -252,7 +247,7 @@ typedef struct{ sapp_config_packet_io_tunnel_t packet_io_tunnel; const char *input_bpf_filter; char depolyment_mode_str[NAME_MAX]; /* [mirror, inline, transparent, dumpfile] */ - enum depolyment_mode_config depolyment_mode_bin; /* ��������ڴ���, ת����ֵ��ʽ, ��1:mirror; 2:transparent; 3:inline��, ���: enum depolyment_mode_config */ + enum sapp_deploment_mode_t depolyment_mode_bin; /* ��������ڴ���, ת����ֵ��ʽ, ��1:mirror; 2:transparent; 3:inline��, ���: enum sapp_deploment_mode_t */ sapp_config_packet_io_dev_t internal; sapp_config_packet_io_dev_t external; char pcap_dumpfile_name[NAME_MAX]; diff --git a/include/public/stream_inc/stream_control.h b/include/public/stream_inc/stream_control.h index 2916d94..4686628 100644 --- a/include/public/stream_inc/stream_control.h +++ b/include/public/stream_inc/stream_control.h @@ -5,7 +5,7 @@ extern "C" {
#endif
-#define STREAM_CONTROL_H_VERSION (20210511)
+#define STREAM_CONTROL_H_VERSION (20210806)
#define TCP_CTEAT_LINK_BYSYN 0x01 /* for MESA_stream_opt->MSO_TCP_CREATE_LINK_MODE */
#define TCP_CTEAT_LINK_BYDATA 0x02 /* for MESA_stream_opt->MSO_TCP_CREATE_LINK_MODE */
@@ -79,12 +79,10 @@ enum sapp_platform_opt{ SPO_TCP_STREAM_NEW, /* total created tcp streams from start, opt_val type must be unsigned long long */
SPO_TCP_STREAM_CLOSE, /* total closed tcp streams from start, opt_val type must be unsigned long long */
SPO_TCP_STREAM_ESTAB, /* realtime established tcp streams, opt_val type must be unsigned long long */
-
SPO_TOTAL_INBOUND_PKT, /* total inbound packet number, opt_val type must be unsigned long long */
SPO_TOTAL_INBOUND_BYTE, /* total inbound packet bytes, opt_val type must be unsigned long long */
SPO_TOTAL_OUTBOUND_PKT, /* total outbound packet number, opt_val type must be unsigned long long */
SPO_TOTAL_OUTBOUND_BYTE, /* total outbound packet bytes, opt_val type must be unsigned long long */
-
SPO_UDP_STREAM_NEW, /* total created udp streams from start, opt_val type must be unsigned long long */
SPO_UDP_STREAM_CLOSE, /* total closed udp streams from start, opt_val type must be unsigned long long */
SPO_UDP_STREAM_CONCURRENT, /* realtime Concurrent udp streams, opt_val type must be unsigned long long */
@@ -96,7 +94,6 @@ enum sapp_platform_opt{ SPO_TOTAL_RCV_INBOUND_IPV6_BYTE, /* total recv ipv6 packet number, opt_val type must be unsigned long long */
SPO_TOTAL_RCV_OUTBOUND_IPV6_PKT, /* total recv ipv6 packet bytes, opt_val type must be unsigned long long */
SPO_TOTAL_RCV_OUTBOUND_IPV6_BYTE, /* total recv ipv6 packet bytes, opt_val type must be unsigned long long */
-
SPO_TOTAL_RCV_INBOUND_TCP_PKT, /* total recv tcp packet number, opt_val type must be unsigned long long */
SPO_TOTAL_RCV_INBOUND_TCP_BYTE, /* total recv tcp packet number, opt_val type must be unsigned long long */
SPO_TOTAL_RCV_OUTBOUND_TCP_PKT, /* total recv tcp packet bytes, opt_val type must be unsigned long long */
@@ -107,9 +104,9 @@ enum sapp_platform_opt{ SPO_TOTAL_RCV_OUTBOUND_UDP_BYTE, /* total recv udp packet bytes, opt_val type must be unsigned long long */
SPO_CURTIME_TIMET_MS, /* current time in millisecond, opt_val type must be long long */
SPO_CURRENT_STATE, /* running stage of sapp, opt_val type is enum sapp_state_t */
-
SPO_CONFIG_ROOT_DIR, /* config file root directory, opt_val type must be char[], opt_val_len is value-result argument */
SPO_DATA_ROOT_DIR, /* data or state file root directory, opt_val type must be char[], opt_val_len is value-result argument */
+ SPO_DEPLOYMENT_MODE, /* Similar to SPO_DEPLOYMENT_MODE_STR, opt_val type is sapp_deploment_mode_t */
};
@@ -216,6 +213,13 @@ struct mso_plug_pme{ void *plug_pme; /* argument: OUT, plug private memory address of current stream */
};
+enum sapp_deploment_mode_t{
+ DEPOLYMENT_MODE_MIRROR = 1,
+ DEPOLYMENT_MODE_TRANSPARENT = 2,
+ DEPOLYMENT_MODE_INLINE = 3,
+};
+
+
/*
plug call MESA_set_stream_opt() to set feature of specified stream.
diff --git a/src/config/config_parse.cpp b/src/config/config_parse.cpp index a543ef0..c4f3175 100644 --- a/src/config/config_parse.cpp +++ b/src/config/config_parse.cpp @@ -1664,6 +1664,9 @@ static int config_expression_convert(void) if(strncasecmp(tmp_str, "mirror", strlen("mirror")) == 0){ pconfig->packet_io.depolyment_mode_bin = DEPOLYMENT_MODE_MIRROR; sapp_global_val->individual_fixed.depolyment_mode_private = NET_CONN_PARALLEL; + }else if(strncasecmp(tmp_str, "dumpfile", strlen("dumpfile")) == 0){ + pconfig->packet_io.depolyment_mode_bin = DEPOLYMENT_MODE_MIRROR; + sapp_global_val->individual_fixed.depolyment_mode_private = NET_CONN_PARALLEL; }else if(strncasecmp(tmp_str, "inline", strlen("inline")) == 0){ pconfig->packet_io.depolyment_mode_bin = DEPOLYMENT_MODE_INLINE; sapp_global_val->individual_fixed.depolyment_mode_private = NET_CONN_SERIAL_GDEV; diff --git a/src/dealpkt/stream_manage.c b/src/dealpkt/stream_manage.c index 398daa5..42dee9b 100644 --- a/src/dealpkt/stream_manage.c +++ b/src/dealpkt/stream_manage.c @@ -2955,6 +2955,10 @@ int save_polling_inject_context(struct streaminfo_private *pstream_pr, const raw pstream_pr->polling_inject_context = (polling_inject_context_t *)dictator_malloc(thread_index, sizeof(polling_inject_context_t)); memset(pstream_pr->polling_inject_context, 0, sizeof(polling_inject_context_t)); + /* TODO: + �˴���ÿ������ĵ�һ������������, ������Ƕ���̫���ڴ���, Ҳ��CPU, + �������flood������������!! + ����������IJ���������private�ṹ��, ��������ԭʼ�� */ if((DIR_ROUTE_DOWN & pstream_pr->stream_public.routedir) == DIR_ROUTE_DOWN){ pstream_pr->polling_inject_context->raw_pkt_down = sapp_raw_pkt_dup(thread_index, raw_pkt); }else{ diff --git a/src/inner_plug/sapp_assistant.cpp b/src/inner_plug/sapp_assistant.cpp index fc0ad33..c3d63df 100644 --- a/src/inner_plug/sapp_assistant.cpp +++ b/src/inner_plug/sapp_assistant.cpp @@ -685,6 +685,18 @@ int sapp_get_platform_opt(enum sapp_platform_opt opt, void *opt_val, int *opt_va } break; + case SPO_DEPLOYMENT_MODE: + { + if(*opt_val_len != sizeof(enum sapp_deploment_mode_t)){ + ret = -1; + sapp_runtime_log(RLOG_LV_INFO, "sapp_get_platform_opt() SPO_DEPLOYMENT_MODE error:opt_val_len:%d is invalid!\n", *opt_val_len); + break; + } + enum sapp_deploment_mode_t *dep_mode = (enum sapp_deploment_mode_t *)opt_val; + *dep_mode = (enum sapp_deploment_mode_t)sapp_global_val->config.packet_io.depolyment_mode_bin; + } + break; + case SPO_CURRENT_STATE: { if(*opt_val_len != sizeof(enum sapp_state_t)){ |
