From bde71f307790be97116e03e2b7ac6e3d05744f6b Mon Sep 17 00:00:00 2001 From: yangwei Date: Thu, 31 Oct 2024 12:06:54 +0800 Subject: ✨ feat(packet_io bpf filter behavior): set drop as default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/private/sapp_global_val.h | 1 + src/config/config_parse.cpp | 1 + src/packet_io/packet_io_marsio.c | 137 +++++++++++++++++++------------------- 3 files changed, 71 insertions(+), 68 deletions(-) diff --git a/include/private/sapp_global_val.h b/include/private/sapp_global_val.h index 87671a0..adce530 100644 --- a/include/private/sapp_global_val.h +++ b/include/private/sapp_global_val.h @@ -258,6 +258,7 @@ typedef struct{ char inject_mode_single_gateway_dst_mac[6]; char inject_mode_single_gateway_src_mac[6]; int monitor_thread_enabled; + int drop_bpf_filter_packet; sapp_dup_pkt_t dup_pkt_para; char extract_linkdir_from_mac_sntax_raw_string[32]; diff --git a/src/config/config_parse.cpp b/src/config/config_parse.cpp index 5d83953..c804d19 100644 --- a/src/config/config_parse.cpp +++ b/src/config/config_parse.cpp @@ -1625,6 +1625,7 @@ int sapp_parse_config(void) if(str_tmp[0] != '\0'){ pconfig->packet_io.input_bpf_filter = sapp_strdup(str_tmp); } + tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"packet_io.feature", (char *)"drop_bpf_filter_packet", &pconfig->packet_io.drop_bpf_filter_packet, 1); tomlc99_wrap_load_int_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"packet_io.feature", (char *)"inbound_route_dir", &pconfig->packet_io.inbound_route_dir, 0); tomlc99_wrap_load_string_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"packet_io.feature", (char *)"pcap_capture_direction", pconfig->packet_io.pcap_capture_direction, NAME_MAX, "in"); tomlc99_wrap_load_string_def(ABBR_CFG_FILE_MAIN_ENTRY, (char *)"packet_io.feature", (char *)"inject_pkt_mode", pconfig->packet_io.inject_pkt_mode_string, NAME_MAX, "sys_route"); diff --git a/src/packet_io/packet_io_marsio.c b/src/packet_io/packet_io_marsio.c index fe1242b..8613b39 100644 --- a/src/packet_io/packet_io_marsio.c +++ b/src/packet_io/packet_io_marsio.c @@ -11,22 +11,22 @@ extern "C" { #include "mrtunnat.h" /* netconnection_mode: - 1: ¶àÍø¿¨´¿ÊÕ²»·¢ - 2: Ò»¹²Á½¿é¿¨, Ë«½øË«³ö - 3: Ò»¹²Ò»¿é¿¨, µ¥½øµ¥³ö + 1: ���������ղ��� + 2: һ�����鿨, ˫��˫�� + 3: һ��һ�鿨, �������� TODO 1: - ´Ósend_raw_pkt.conf½âÎöµÄÊý¾Ý´æ´¢ÓÚG_SND_RAW_PKT_INFO, - ±¾Ä£¿éËä²»Ò»¶¨´ÓÕâÐ©Íø¿¨ÊÕ°ü, µ«¿Ï¶¨»á´ÓÕâÐ©Íø¿¨·¢°ü, ÓÃÓÚ×¢ÈëÊý¾Ý°ü¸ø´ÓÓ¦ÓõÄÐéÄâÍø¿¨, - ÈÔȻҪÔÚ³õʼ»¯Ê±´ò¿ªÕâЩÉ豸, ´´½¨send_path. + ��send_raw_pkt.conf���������ݴ洢��G_SND_RAW_PKT_INFO, + ��ģ���䲻һ������Щ�����հ�, ���϶������Щ��������, ����ע�����ݰ�����Ӧ�õ���������, + ��ȻҪ�ڳ�ʼ��ʱ����Щ�豸, ����send_path. */ typedef struct{ int thread_seq; void *send_mbuf_mtod_ptr; marsio_buff_t *send_mbuf[1]; - struct mr_vdev *dev_up, *dev_down; /* GDEVģʽÏÂ, Ö±½ÓʹÓÃdev_up[0]; ͬʱ¼æÈÝË«Íø¿¨´®ÁªÄ£Ê½ */ - struct mr_sendpath *sendpath_up, *sendpath_down; /* ²¢ÁªÄ£Ê½ÏÂ, Ö±½ÓʹÓÃsendpath_up; ͬʱ¼æÈÝË«Íø¿¨´®ÁªÄ£Ê½ */ + struct mr_vdev *dev_up, *dev_down; /* GDEVģʽ��, ֱ��ʹ��dev_up[0]; ͬʱ����˫��������ģʽ */ + struct mr_sendpath *sendpath_up, *sendpath_down; /* ����ģʽ��, ֱ��ʹ��sendpath_up; ͬʱ����˫��������ģʽ */ }marsio4_io_handle; @@ -34,8 +34,8 @@ extern int marsio_buff_get_metadata(marsio_buff_t *m, enum mr_buff_metadata_type extern int marsio_buff_set_metadata(marsio_buff_t *m, enum mr_buff_metadata_type type, void *data, unsigned int sz_data); extern int marsio_buff_unset_metadata(marsio_buff_t *m, enum mr_buff_metadata_type type); /* - ·¢°üµÄͬʱ, ¸øtcpdump_mesaÒ»·Ý, ±ãÓÚ²¶°ü·ÖÎö, - »Ø×¢µÄ°üÎÞÐètcpdump_mesa²¶»ñ, Ö±½ÓÔÚÇý¶¯µ×²ã²¶»ñ¼´¿É. + ������ͬʱ, ��tcpdump_mesaһ��, ���ڲ�������, + ��ע�İ�����tcpdump_mesa����, ֱ���������ײ㲶�ñ¼´¿ï¿½. */ extern void cycle_pkt_dump_by_classify(int thread_seq, const raw_pkt_t *p_raw_pkt, enum _pkt_classify class_val); extern int G_PKT_DUMP_SW; @@ -50,19 +50,19 @@ static int g_marsio4_topology_mode = NET_CONN_PARALLEL; static int marsio4_work_thread_seq[MAX_THREAD_NUM]; static pthread_t marsio4_work_tid[MAX_THREAD_NUM]; extern int g_use_MESA_sleep_sw; -struct mr_instance * sapp_marsio4_instance = NULL; /* ÔÝʱ¶ÔÍ⿪·Å,²»ÄÜÉèΪstatic */ +struct mr_instance * sapp_marsio4_instance = NULL; /* ��ʱ���⿪��,������Ϊstatic */ static int g_mr4_device_num = 0; -static char **g_mr4_up_device_name; /* É豸Ãû³Æ¼¯ºÏ, meth0, meth1, meth2... */ -static char **g_mr4_down_device_name; /* É豸Ãû³Æ¼¯ºÏ, meth0, meth1, meth2... */ -static struct mr_vdev **g_mr4_dev_up_handle_set, **g_mr4_dev_down_handle_set; /* É豸¾ä±ú¼¯ºÏ */ -static struct mr_sendpath **g_mr4_sendpath_up_set, **g_mr4_sendpath_down_set; /* ·¢°ü·¾¶(¾ä±ú)¼¯ºÏ */ +static char **g_mr4_up_device_name; /* �豸���Ƽ���, meth0, meth1, meth2... */ +static char **g_mr4_down_device_name; /* �豸���Ƽ���, meth0, meth1, meth2... */ +static struct mr_vdev **g_mr4_dev_up_handle_set, **g_mr4_dev_down_handle_set; /* �豸������� */ +static struct mr_sendpath **g_mr4_sendpath_up_set, **g_mr4_sendpath_down_set; /* ����·��(���)���� */ static marsio4_io_handle *g_mario4_io_handle; static void *marsio_so_handle; #define MARSIO_BURST_PKT_MAX (256) -static int marsio4_burst_process_pkt_num = 32; /* Åú´¦Àí°üÊýÁ¿, ´Ópag.confÖлñÈ¡ */ +static int marsio4_burst_process_pkt_num = 32; /* ������������, ��pag.conf�л�ȡ */ //static long marsio4_thread_bind_mask = 0; -#define TIME_DELAY_MONITOR (0) /* µ¥°ü´¦ÀíÑÓʱ¼à²â */ +#define TIME_DELAY_MONITOR (0) /* ����������ʱ��� */ extern void timestamp_region_update_driver(int tid, long long cpu_cycle); extern int stream_process_polling(int thread_seq); @@ -182,13 +182,13 @@ int marsio_dl_io_set_capdev_parallel(const char *cap_dev) char cfg_name_from_conf[1024]; char *single_device; - /* marsio4ģʽ²¶°üÍø¿¨¿ÉÄÜÓжà¸ö, ¸´ÓÃÔ­ÓеÄpcapdeviceÅäÖÃ, ¿¿¶ººÅ·Ö¸ô */ + /* marsio4ģʽ�������������ж��, ����ԭ�е�pcapdevice����, �����ŷָ� */ if(NULL == cap_dev){ printf("\033[1;31;40m[Error]Invalid pcapdevice!\033[0m\n"); return -1; } - /* marsioģʽ֧³Ö¶àÍø¿¨, ¶ººÅ·Ö¸ôģʽ */ + /* marsioģʽ֧�ֶ�����, ���ŷָ�ģʽ */ strncpy(cfg_name_from_conf, sapp_global_val->config.packet_io.internal.interface.name, sizeof(cfg_name_from_conf)); tmp_cap_dev_name = cfg_name_from_conf; @@ -216,7 +216,7 @@ int marsio_dl_io_set_capdev_serial(const char *up_dev, const char *down_dev) char *single_device; int local_mr4_serial_device_num = 0; - /* marsio4ģʽ²¶°üÍø¿¨¿ÉÄÜÓжà¸ö, ¸´ÓÃÔ­ÓеÄpcapdeviceÅäÖÃ, ¿¿¶ººÅ·Ö¸ô */ + /* marsio4ģʽ�������������ж��, ����ԭ�е�pcapdevice����, �����ŷָ� */ if(NULL == down_dev){ printf("\033[1;31;40m[Error]Invalid pcapdevice!\033[0m\n"); return -1; @@ -275,7 +275,7 @@ int marsio_dl_io_set_capture_filter(const char *filter_rule) int marsio_dl_io_set_cap_buf_queue(int queue_num_max) { - (void)queue_num_max; /* Çý¶¯ÉèÖà */ + (void)queue_num_max; /* �������� */ return 0; } @@ -288,7 +288,7 @@ int marsio_dl_io_set_work_thread_num(int thread_num_max) long marsio_dl_io_get_app_drop_num(int thread_num) { - /* pagģʽ²é¿´¶ª°üÓÐרÓù¤¾ß, ³ÌÐòĿǰ²»Ìṩ´Ë¹¦ÄÜ */ + /* pagģʽ�鿴������ר�ù���, ����Ŀǰ���ṩ�˹��� */ (void)thread_num; return 0; } @@ -320,7 +320,7 @@ void marsio_dl_io_free_sendbuf(void *phandle, int thread_seq) return; } -/* 2020-10-30 lijia add, in/forward/injectµÄ°ü¸øtcpdump_mesa, ÓÃÓÚdebug. */ +/* 2020-10-30 lijia add, in/forward/inject����tcpdump_mesa, ����debug. */ static void marsio_pkt_dump(int thread_seq, const marsio_buff_t *send_mbuf, enum _pkt_classify classify) { raw_pkt_t to_tcpdump_mesa; @@ -379,7 +379,7 @@ int marsio_dl_io_raw_pkt_send(void *phandle, unsigned char *data,int datalen, vo } - /* ´Ë´¦Ê¹ÓÃappend¶ø²»ÊÇmtod, appendÄÚ²¿Êµ¼Ê°üÀ¨ÁËset datalenµÄ²Ù×÷ */ + /* �˴�ʹ��append������mtod, append�ڲ�ʵ�ʰ�����set datalen�IJ��� */ real_buf = ptr_marsio_buff_append(send_mbuf[0], datalen); if(NULL == real_buf){ ptr_marsio_buff_free(sapp_marsio4_instance, send_mbuf, 1, MARSIO_SOCKET_ID_ANY, thread_seq); @@ -424,12 +424,12 @@ int marsio_dl_io_low_level_send(void *phandle, UINT8 *data,int datalen, { int ret; //struct mesa_ethernet_hdr *ehdr = (struct mesa_ethernet_hdr *)data; - //ÔÚË«Íø¿¨Í¸Ã÷ģʽ(transparent)ÏÂ, ¸ù¾ÝdirÑ¡Ôñup or down device·¢³ö. + //��˫����͸��ģʽ(transparent)��, ����dirѡ��up or down device����. if(NET_CONN_SERIAL_2CARD == g_marsio4_topology_mode){ assert((dir >= 0) && (dir <= 1)); ret = marsio_dl_io_raw_pkt_send(phandle, data, datalen, g_packet_device_alias[dir].dl_io_param, thread_num, dir, raw_pkt); }else{ - /* ¿ÉÖ§³Ö¶à¿éÍø¿¨, ԭʼ°ü´ÓÄÄÊÕµ½¾Í´ÓÄijöÈ¥ */ + /* ��֧�ֶ������, ԭʼ�������յ��ʹ��ij�ȥ */ ret = marsio_dl_io_raw_pkt_send(phandle, data, datalen, g_mr4_sendpath_up_set[raw_pkt->device_index], thread_num,dir, raw_pkt); } @@ -542,7 +542,7 @@ int marsio_send_ctrl_data(unsigned char *data,int datalen, struct segment_id_lis ret = ptr_marsio_buff_malloc_global(sapp_marsio4_instance, send_mbuf, 1, MARSIO_SOCKET_ID_ANY, thread_seq); if((ret < 0) || (NULL == send_mbuf[0]))return -1; - /* ´Ë´¦Ê¹ÓÃappend¶ø²»ÊÇmtod, appendÄÚ²¿Êµ¼Ê°üÀ¨ÁËset datalenµÄ²Ù×÷ */ + /* �˴�ʹ��append������mtod, append�ڲ�ʵ�ʰ�����set datalen�IJ��� */ char *real_buf = ptr_marsio_buff_append(send_mbuf[0], datalen); if(NULL == real_buf){ ptr_marsio_buff_free(sapp_marsio4_instance, send_mbuf, 1, MARSIO_SOCKET_ID_ANY, thread_seq); @@ -664,7 +664,7 @@ int marsio_dl_io_send_only_thread_init(void) #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #endif static int tmp_vdevice_num; -static char **tmp_vdevice_name; /* ÐéÄâÉ豸Ãû³ÆÁбí, ·Çpag.confÖеIJ¶°üÉ豸, ÓÃÓÚÖ÷´ÓÓ¦ÓÃģʽ»Ø×¢ */ +static char **tmp_vdevice_name; /* �����豸�����б�, ��pag.conf�еIJ����豸, ��������Ӧ��ģʽ��ע */ static struct mr_sendpath **tmp_vdevice_sendpath; void * marsio_dl_io_device_alias(unsigned int target_id, char *device_args) { @@ -675,7 +675,7 @@ void * marsio_dl_io_device_alias(unsigned int target_id, char *device_args) for(i = 0; i < g_mr4_device_num; i++){ len2 = strlen(g_mr4_up_device_name[i]); - /* ʹÓÃ×µÄ×Ö·û±È½Ï, ·ÀÖ¹"eth12", "eth1"±È½Ïµ«ÏàµÈµÄBUG */ + /* ʹ������ַ��Ƚ�, ��ֹ"eth12", "eth1"�Ƚϵ���ȵ�BUG */ if(strncasecmp(device_args, g_mr4_up_device_name[i], MAX(len1, len2)) == 0){ return (void *)g_mr4_sendpath_up_set[i]; } @@ -684,25 +684,25 @@ void * marsio_dl_io_device_alias(unsigned int target_id, char *device_args) if(NULL != g_mr4_down_device_name){ for(i = 0; i < g_mr4_device_num; i++){ len2 = strlen(g_mr4_down_device_name[i]); - /* ʹÓÃ×µÄ×Ö·û±È½Ï, ·ÀÖ¹"eth12", "eth1"±È½Ïµ«ÏàµÈµÄBUG */ + /* ʹ������ַ��Ƚ�, ��ֹ"eth12", "eth1"�Ƚϵ���ȵ�BUG */ if(strncasecmp(device_args, g_mr4_down_device_name[i], MAX(len1, len2)) == 0){ return (void *)g_mr4_sendpath_down_set[i]; } } } - /* ´Ë¿¨Î´ÔÚpag.confÖÐ×¢²á, ¿ÉÄÜÊÇÐéÄâÉè±¸Íø¿¨, ÏÖ³¡´ò¿ª·¢Ë;ä±ú */ + /* �˿�δ��pag.conf��ע��, �����������豸����, �ֳ��ò¿ª·ï¿½ï¿½Í¾ï¿½ï¿½ */ struct mr_vdev *t_vdev; struct mr_sendpath *t_sendpath; for(i = 0; i < tmp_vdevice_num; i++){ len2 = strlen(tmp_vdevice_name[i]); - /* ʹÓÃ×µÄ×Ö·û±È½Ï, ·ÀÖ¹"eth12", "eth1"±È½Ïµ«ÏàµÈµÄBUG */ + /* ʹ������ַ��Ƚ�, ��ֹ"eth12", "eth1"�Ƚϵ���ȵ�BUG */ if(strncasecmp(device_args, tmp_vdevice_name[i], MAX(len1, len2)) == 0){ return (void *)tmp_vdevice_sendpath[i]; } } - /* ûÕÒµ½, ´ò¿ªÉ豸, ²¢´æ´¢·¢Ë;ä±ú */ + /* û�ҵ�, ���豸, ���洢���;�� */ if(0 == tmp_vdevice_num){ tmp_vdevice_name = (char **)sapp_mem_calloc(SAPP_MEM_FIX_GLOBAL_VAL, MEM_STAT_GLOBAL_THREAD_ID,sizeof(void *)); tmp_vdevice_sendpath = (struct mr_sendpath **)sapp_mem_calloc(SAPP_MEM_FIX_GLOBAL_VAL, MEM_STAT_GLOBAL_THREAD_ID,sizeof(void *)); @@ -721,7 +721,7 @@ void * marsio_dl_io_device_alias(unsigned int target_id, char *device_args) } t_sendpath = ptr_marsio_sendpath_create_by_vdev(t_vdev); tmp_vdevice_sendpath[tmp_vdevice_num] = t_sendpath; - tmp_vdevice_num++; /* ×îºó¸üмÆËãÆ÷ */ + tmp_vdevice_num++; /* �����¼����� */ return t_sendpath; } @@ -729,7 +729,7 @@ void * marsio_dl_io_device_alias(unsigned int target_id, char *device_args) /************************ funcitons for dynamic link *************************/ /* - ¼ÆËãÒ»¸öÕûÐÍÊý°üº¬Á˶àÉÙ¸öbitÊÇ1µÄ. + ����һ�������������˶��ٸ�bit��1��. */ static inline int calc_integer_bit_num(unsigned long long num) { @@ -741,7 +741,7 @@ static inline int calc_integer_bit_num(unsigned long long num) bit_num++; } num = num >> 1; - if(0 == num){ /* numÒѾ­ÊÇ0ÁË, ¾Íû±ØÒªÔÙÅжϺóÐøbitλÁË */ + if(0 == num){ /* num�Ѿ���0��, ��û��Ҫ���жϺ���bit� */ break; } } @@ -754,7 +754,7 @@ static int marsio4_pkt_forward_for_gdev_mode(int tid, struct mr_sendpath * sendp char tmp_mac[6]; struct mesa_ethernet_hdr *eth_hdr = (struct mesa_ethernet_hdr *)ptr_marsio_buff_mtod(mbuf); - /* ½»»»Ô´¡¢Ä¿µÄMACµØÖ·, ÔÙ°Ñԭʼ°üÔÙ×¢ÈëGDEV */ + /* ����Դ��Ŀ��MAC��ַ, �ٰ�ԭʼ����ע��GDEV */ memcpy(tmp_mac, eth_hdr->ether_shost, 6); memcpy(eth_hdr->ether_shost, eth_hdr->ether_dhost, 6); memcpy(eth_hdr->ether_dhost, tmp_mac, 6); @@ -766,11 +766,11 @@ static int marsio4_pkt_forward(int tid, struct mr_sendpath * sendpath, marsio_bu { int ret = 0; - /* ÅúÁ¿»ñÈ¡, µ«¿¼ÂÇÌØÊâÇé¿öÏÂ, vxlanºÍÆäËû·âװģʽ»ìÔÓʹÓÃ, Òª¶Ôÿ¸ömbufÅжϵײã·âװģʽ */ + /* ������ȡ, ���������������, vxlan��������װģʽ����ʹ��, Ҫ��ÿ��mbuf�жϵײ��װģʽ */ - /* 20201010 lijia modify, ¿ªÆôoverlayÎÞmrtunnatµÄģʽÏÂ, ctrl_zoneÊÇ¿Õ, ĬÈ϶¼»Ø×¢ */ - /* 20190409 lijia modify, tunnel mode, ·ÇËíµÀ·â×°µÄ°ü²»ÄÜ»Ø×¢ */ - /* vxlan·â×°ÄÚ²ãÊý¾Ýת·¢²»±Ø×öÈκβÙ×÷, Ö±½Óµ÷ÓÃmarsio_send_burst, ÓÉmarsioÇý¶¯¸ºÔð */ + /* 20201010 lijia modify, ����overlay��mrtunnat��ģʽ��, ctrl_zone�ǿ�, Ĭ�϶���ע */ + /* 20190409 lijia modify, tunnel mode, ��������װ�İ����ܻ�ע */ + /* vxlan��װ�ڲ�����ת���������κβ���, ֱ�ӵ���marsio_send_burst, ��marsio�������� */ marsio_pkt_dump(tid, mbufs, PKT_CLASSIFY_FORWARD); ret = ptr_marsio_send_burst(sendpath, tid, &mbufs, 1); @@ -795,8 +795,8 @@ static inline int marsio4_pkt_hand(int tid, marsio_buff_t *rx_buff, raw_pkt_t *r { raw_pkt->is_ctrl_pkt=0; } - /* Ë«±Ûģʽdir¸ù¾ÝÍø¿¨internal, external¾ö¶¨, - inlineģʽ´ËʱµÄdirÎÞÒâÒå, ×îÖÕ»áÔÚ packet_io_hook_input_vxlan() ,ͨ¹ývxlan header¸üÐÂroutedir . + /* ˫��ģʽdir��������internal, external����, + inlineģʽ��ʱ��dir������, ���ջ��� packet_io_hook_input_vxlan() ,ͨ��vxlan header����routedir . */ raw_pkt->route_dir = dir; @@ -807,6 +807,7 @@ static inline int marsio4_pkt_hand(int tid, marsio_buff_t *rx_buff, raw_pkt_t *r raw_pkt->raw_pkt_len, raw_pkt->raw_pkt_len)) { g_marsio_bpf_counter[tid].count++; + if(sapp_global_val->config.packet_io.drop_bpf_filter_packet==1)return DROP; return PASS; } } @@ -817,7 +818,7 @@ static inline int marsio4_pkt_hand(int tid, marsio_buff_t *rx_buff, raw_pkt_t *r } else { - raw_pkt->is_overlay_pkt = 0; /* ÎÞmrtunnatʱ, ¸ÕÊÕµ½°ü»¹²»È·¶¨, ¿¿packet_io_hook¾ö¶¨ÊÇ·ñÊÇoverlayµÄ°ü */ + raw_pkt->is_overlay_pkt = 0; /* ��mrtunnatʱ, ���յ�������ȷ��, ��packet_io_hook�����Ƿ���overlay�� */ } /* clear pkt status */ @@ -844,7 +845,7 @@ static inline int marsio4_pkt_hand(int tid, marsio_buff_t *rx_buff, raw_pkt_t *r static int marsio4_process_packet(int tid, raw_pkt_t *raw_pkt) { int i,j,k, pkt_num = 0; - marsio_buff_t * rx_buff[MARSIO_BURST_PKT_MAX]; /* ¶à¸öÉ豸֮¼äÊÇ´®ÐлñÈ¡, Ì«ÉÙÔòÐÔÄܵÍ, Ì«¶àÔòÏà¶ÔÑÓʱ¸ß */ + marsio_buff_t * rx_buff[MARSIO_BURST_PKT_MAX]; /* ����豸֮���Ǵ��л�ȡ, ̫�������ܵ�, ̫���������ʱ�� */ int rcv_res, hand_res; if((__NET_CONN_PARALLEL & g_marsio4_topology_mode) != 0){ @@ -859,10 +860,10 @@ static int marsio4_process_packet(int tid, raw_pkt_t *raw_pkt) __builtin_prefetch(ptr_marsio_buff_mtod(rx_buff[k])); } - marsio4_pkt_hand(tid, rx_buff[j], raw_pkt, DIR_ROUTE_UP); /* ²¢ÁªÄ£Ê½²»¹ØÐÄ·µ»ØÖµ */ + marsio4_pkt_hand(tid, rx_buff[j], raw_pkt, DIR_ROUTE_UP); /* ����ģʽ�����ķ���ֵ */ } pkt_num += rcv_res; - ptr_marsio_buff_free(sapp_marsio4_instance, rx_buff, rcv_res, MARSIO_SOCKET_ID_ANY, tid); /* ²¢Áª²»Éæ¼°·¢ËÍ, µ÷ÓÃÍêÒµÎñ²å¼þºóÅúÁ¿free */ + ptr_marsio_buff_free(sapp_marsio4_instance, rx_buff, rcv_res, MARSIO_SOCKET_ID_ANY, tid); /* �������漰����, ������ҵ����������free */ } } }else if(NET_CONN_SERIAL_GDEV == g_marsio4_topology_mode){ @@ -880,11 +881,11 @@ static int marsio4_process_packet(int tid, raw_pkt_t *raw_pkt) __builtin_prefetch((rx_buff[k])); __builtin_prefetch(((char *)(rx_buff[k])+128)); } - hand_res = marsio4_pkt_hand(tid, rx_buff[j], raw_pkt, DIR_ROUTE_UP); /* ÔÚmarsio4_pkt_hand()¸üÐÂdir */ + hand_res = marsio4_pkt_hand(tid, rx_buff[j], raw_pkt, DIR_ROUTE_UP); /* ��marsio4_pkt_hand()����dir */ if ((g_marsio4_topology_mode & __NET_CONN_SERIAL) && (PASS == hand_res)) { /* NOTE: - MARSIOÖ÷´Óģʽ¶ÀÌØÐÔ, ´ÓÐéÄâÍø¿¨ÊÕ°ü, µ«ÒªÍ¨¹ýÎïÀíÍø¿¨»Ø×¢°ü, + MARSIO����ģʽ������, �����������հ�, ��Ҫͨ������������ע��, */ marsio_update_sid_list(raw_pkt, (void *)rx_buff[j]); marsio_update_trace_id(raw_pkt, (void *)rx_buff[j]); @@ -897,7 +898,7 @@ static int marsio4_process_packet(int tid, raw_pkt_t *raw_pkt) } else if (hand_res == DROP) { - /* ´®ÁªÄ£Ê½ÏÂÖ»Äܵ¥°üfree, ÓпÉÄÜbatchÊÕµÄN¸÷°üÀï, ij¸ö°üÐèÒª»Ø×¢, ij¸ö°ü²»ÐèÒª */ + /* ����ģʽ��ֻ�ܵ���free, ���batch�յ�N������, ij������Ҫ��ע, ij��������Ҫ */ marsio4_emit_datapath_telemetry(raw_pkt, "sapp", "egress_action=drop"); ptr_marsio_buff_free(sapp_marsio4_instance, &rx_buff[j], 1, MARSIO_SOCKET_ID_ANY, tid); } @@ -917,7 +918,7 @@ static int marsio4_process_packet(int tid, raw_pkt_t *raw_pkt) //marsio4_pkt_forward(tid, rx_buff[j]); ptr_marsio_send_burst(g_mr4_sendpath_down_set[i], tid, &rx_buff[j], 1); }else{ - /* ´®ÁªÄ£Ê½Ïµ¥°üfree, ÓпÉÄÜÐèÒª»Ø×¢/·¢ËÍ */ + /* ����ģʽ�µ���free, �п�����Ҫ��ע/���� */ ptr_marsio_buff_free(sapp_marsio4_instance, &rx_buff[j], 1, MARSIO_SOCKET_ID_ANY, tid); } } @@ -931,7 +932,7 @@ static int marsio4_process_packet(int tid, raw_pkt_t *raw_pkt) //marsio4_pkt_forward(tid, rx_buff[j]); ptr_marsio_send_burst(g_mr4_sendpath_up_set[i], tid, &rx_buff[j], 1); }else{ - /* ´®ÁªÄ£Ê½Ïµ¥°üfree, ÓпÉÄÜÐèÒª»Ø×¢/·¢ËÍ */ + /* ����ģʽ�µ���free, �п�����Ҫ��ע/���� */ ptr_marsio_buff_free(sapp_marsio4_instance, &rx_buff[j], 1, MARSIO_SOCKET_ID_ANY, tid); } } @@ -968,7 +969,7 @@ static inline void marsio4_sleep(int tid, int work_percent) { if (ptr_marsio_poll_wait != NULL) { - ptr_marsio_poll_wait(sapp_marsio4_instance, g_mr4_dev_up_handle_set, g_mr4_device_num, tid, 900); // sappÄÚ²¿¶¨Ê±Æ÷×îС¾«¶ÈΪÃ룬´Ë´¦ÉèÖó¬Ê±ÎªÎª900ºÁÃ룬ÓÃÓÚ¶à½ø³ÌģʽÏÂÈóöCPUʱ¼ä + ptr_marsio_poll_wait(sapp_marsio4_instance, g_mr4_dev_up_handle_set, g_mr4_device_num, tid, 900); // sapp�ڲ���ʱ����С����Ϊ�룬�˴����ó�ʱΪΪ900���룬���ڶ����ģʽ���ó�CPUʱ�� } else { @@ -978,7 +979,7 @@ static inline void marsio4_sleep(int tid, int work_percent) return; } -/* ¸ßÐÔÄÜģʽÏÂ, marsio¶ÓÁÐÓлº´æ, ÎÞаüµ½À´Ê±ÐèÒª¶¨ÆÚˢжÓÁÐÖеÄÊý¾Ý */ +/* ������ģʽ��, marsio�������, ���°�����ʱ��Ҫ����ˢ�¶����е����� */ static inline void marsio4_flush_queue_buf(int tid) { int i; @@ -1022,7 +1023,7 @@ static void *marsio4_worker(void *arg) memset(&raw_pkt, 0, sizeof(raw_pkt_t)); - /* ¹Ì¶¨²»±äµÄ²ÎÊýÔ¤ÏÈÉèÖà */ + /* �̶�����IJ���Ԥ������ */ raw_pkt.low_layer_type = (enum addr_type_t)g_marsio4_cap_level; raw_pkt.magic_num = RAW_PKT_MAGIC_NUM; raw_pkt.offset_to_raw_pkt_hdr = 0; @@ -1033,7 +1034,7 @@ static void *marsio4_worker(void *arg) } /* for perf optimize - Ƶ·±µ÷ÓÃstream_process_polling()µÈº¯Êý, ´Ë´¦ÏÈÔÚº¯ÊýÍⲿÅжÏÒ»ÏÂÊÇ·ñÐèÒªµ÷ÓÃ. + Ƶ������stream_process_polling()�Ⱥ���, �˴����ں����ⲿ�ж�һ���Ƿ���Ҫ����. */ int polling_enabled = sapp_global_val->config.packet_io.polling_priority; int infinite_loop_enabled = sapp_global_val->config.packet_io.infinite_loop_enabled; @@ -1045,7 +1046,7 @@ static void *marsio4_worker(void *arg) rcv_pkt_tims++; }else{ marsio4_flush_queue_buf(tseq); - /* ÎÞ°üʱҪµ÷ÓÃpolling½Ó¿Ú */ + /* �ް�ʱҪ����polling�ӿ� */ if (likely(polling_enabled)) { if ((g_PollingFunNum > 0)) @@ -1071,7 +1072,7 @@ static void *marsio4_worker(void *arg) if((rcv_pkt_tims % sleep_check_interval) == 0 && polling_enabled) { - /* Èç¹ûÁ÷Á¿¾Þ´ó, Ò»Ö±Óаüʱ, ÿ¸ôsleep_check_interval´Îµ÷ÓÃÒ²Òªµ÷ÓÃpolling½Ó¿Ú */ + /* ��������޴�, һֱ�а�ʱ, ÿ��sleep_check_interval�ε���ҲҪ����polling�ӿ� */ if(g_PollingFunNum > 0) { if((stream_process_polling(tseq) & POLLING_STATE_WORK) != 0) @@ -1242,7 +1243,7 @@ static int marsio_dl_get_function_entry(void) return -1; } - /************* note: ûÓÐmarsio_send_burst_flush()º¯Êý²»Ëã´íÎó, Ïòºó¼æÈÝ! *****************/ + /************* note: û��marsio_send_burst_flush()�����������, ������! *****************/ ptr_marsio_send_burst_flush = (void (*)(struct mr_sendpath * sendpath, queue_id_t sid))dlsym(marsio_so_handle, "marsio_send_burst_flush"); if(NULL == ptr_marsio_send_burst_flush){ printf("\033[33m[Warning]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_send_burst_flush", ABBR_MARSIO_LIBRARY_FILE); @@ -1273,61 +1274,61 @@ static int marsio_dl_get_function_entry(void) ptr_marsio_buff_get_metadata = (int (*)(marsio_buff_t *m, enum mr_buff_metadata_type type, void *data, unsigned int sz_data))dlsym(marsio_so_handle, "marsio_buff_get_metadata"); if(NULL == ptr_marsio_buff_get_metadata){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_get_metadata", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó*/ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش���*/ sleep(1); } ptr_marsio_buff_set_metadata = (int (*)(marsio_buff_t *m, enum mr_buff_metadata_type type, void *data, unsigned int sz_data))dlsym(marsio_so_handle, "marsio_buff_set_metadata"); if(NULL == ptr_marsio_buff_set_metadata){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_set_metadata", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó*/ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش���*/ sleep(1); } ptr_marsio_buff_get_sid_list = (int (*)(marsio_buff_t *m, uint16_t * out_slist, uint8_t sz_out_slist))dlsym(marsio_so_handle, "marsio_buff_get_sid_list"); if(NULL == ptr_marsio_buff_set_metadata){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_get_sid_list", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó*/ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش���*/ sleep(1); } ptr_marsio_buff_set_sid_list = (int (*)(marsio_buff_t *m, uint16_t * slist, uint8_t sz_slist))dlsym(marsio_so_handle, "marsio_buff_set_sid_list"); if(NULL == ptr_marsio_buff_set_metadata){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_set_sid_list", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó*/ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش���*/ sleep(1); } ptr_marsio_buff_append_sid_list = (int (*)(marsio_buff_t *m, uint16_t * slist, uint8_t sz_slist))dlsym(marsio_so_handle, "marsio_buff_append_sid_list"); if(NULL == ptr_marsio_buff_append_sid_list){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_append_sid_list", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó */ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش��� */ sleep(1); } ptr_marsio_buff_prepend_sid_list = (int (*)(marsio_buff_t *m, uint16_t * slist, uint8_t sz_slist))dlsym(marsio_so_handle, "marsio_buff_prepend_sid_list"); if(NULL == ptr_marsio_buff_prepend_sid_list){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_prepend_sid_list", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó*/ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش���*/ sleep(1); } ptr_marsio_buff_unset_metadata = (int (*)(marsio_buff_t *m, enum mr_buff_metadata_type type))dlsym(marsio_so_handle, "marsio_buff_unset_metadata"); if(NULL == ptr_marsio_buff_unset_metadata){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_unset_metadata", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó*/ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش���*/ sleep(1); } ptr_marsio_buff_set_ctrlbuf = (void (*)(marsio_buff_t *m))dlsym(marsio_so_handle, "marsio_buff_set_ctrlbuf"); if(NULL == ptr_marsio_buff_set_ctrlbuf){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_buff_set_ctrlbuf", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó*/ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش���*/ sleep(1); } ptr_marsio_poll_wait = (int (*)(struct mr_instance * instance, struct mr_vdev * vdevs[], unsigned int nr_vdevs, unsigned int tid, int timeout))dlsym(marsio_so_handle, "marsio_poll_wait"); if(NULL == ptr_marsio_poll_wait){ printf("\033[33m[Error]dlsym function '%s' from '%s' failed!\033[0m\n", "marsio_poll_wait", ABBR_MARSIO_LIBRARY_FILE); - //return -1; /* ΪÁËÏòǰ¼æÈÝmrzcpd¾É°æ, ´Ë´¦ÏȲ»·µ»Ø´íÎó */ + //return -1; /* Ϊ����ǰ����mrzcpd�ɰ�, �˴��Ȳ����ش��� */ sleep(1); } ptr_marsio_buff_is_ctrlbuf = (int(*)(marsio_buff_t * m))dlsym(marsio_so_handle, "marsio_buff_is_ctrlbuf"); -- cgit v1.2.3