diff options
| author | 陆秋文 <[email protected]> | 2024-07-15 09:48:50 +0000 |
|---|---|---|
| committer | 陆秋文 <[email protected]> | 2024-07-15 09:48:50 +0000 |
| commit | f0e50964001c56042150c9c49284bf0aaa531a7c (patch) | |
| tree | dd15b7248485ecade179524a7670630f21be68ff /service/src | |
| parent | 24f4ab0940ef3652908b3a5968527951c53f66b8 (diff) | |
Feature mock api by cmocka
Diffstat (limited to 'service/src')
| -rw-r--r-- | service/src/core.c | 70 | ||||
| -rw-r--r-- | service/src/main.c | 9 | ||||
| -rw-r--r-- | service/src/node_bfd.c | 9 | ||||
| -rw-r--r-- | service/src/node_etherfabric.c | 2 | ||||
| -rw-r--r-- | service/src/node_forwarder.c | 2 | ||||
| -rw-r--r-- | service/src/node_lb.c | 2 | ||||
| -rw-r--r-- | service/src/node_link_aware_injector.c | 2 | ||||
| -rw-r--r-- | service/src/node_tera.c | 2 | ||||
| -rw-r--r-- | service/src/node_vwire.c | 23 |
9 files changed, 46 insertions, 75 deletions
diff --git a/service/src/core.c b/service/src/core.c index df04aa1..3a209b6 100644 --- a/service/src/core.c +++ b/service/src/core.c @@ -732,61 +732,6 @@ void __setproctitle_init(int argc, char ** argv, char ** envp) return; } -static void __setproctitle(const char * fmt, ...) -{ - char * p; - int i; - char buf[LINE_MAX] = {0}; - - extern char ** __main_argv; - extern char * __main_last_argv; - va_list ap; - p = buf; - - va_start(ap, fmt); - vsprintf(p, fmt, ap); - va_end(ap); - - i = strlen(buf); - - if (i > __main_last_argv - __main_argv[0] - 2) - { - i = __main_last_argv - __main_argv[0] - 2; - buf[i] = '\0'; - } - - // 修改argv[0] - (void)strcpy(__main_argv[0], buf); - - p = &__main_argv[0][i]; - while (p < __main_last_argv) - *p++ = '\0'; - - __main_argv[1] = NULL; - - // 调用prctl - prctl(PR_SET_NAME, buf); - return; -} - -static int sc_proc_symbol_setup(struct sc_main * sc, int argc, char * argv[]) -{ - char str_prog_symbol[MR_SYMBOL_MAX] = {0}; - - /* 兼容MARSIO3.0,自定义服务进程名称。 - T1/T2系统已经使用了MARSIO进程名,避免更改进程名引起监控脚本失效。 - */ - int ret = MESA_load_profile_string_nodef(sc->local_cfgfile, "compat", "progsym", str_prog_symbol, - sizeof(str_prog_symbol)); - - if (ret < 0) - return RT_SUCCESS; - - __setproctitle_init(argc, argv, environ); - __setproctitle("%s", str_prog_symbol); - return RT_SUCCESS; -} - struct service_performance_monit { unsigned int service_id; @@ -986,7 +931,7 @@ extern int http_serv_init(struct sc_main * sc_main); extern int olp_manager_init(struct sc_main * sc_main); extern int lai_init(struct sc_main * sc); -int main(int argc, char * argv[]) +int marsio_service_main(int argc, char * argv[]) { /* 解析命令行参数 */ struct sc_main * sc = sc_main_new(); @@ -1005,9 +950,13 @@ int main(int argc, char * argv[]) /* 通过Systemd启动,关闭标准输出,采用syslog方式记录日志 */ if (__check_is_notify()) + { g_logger_to_stdout = 0; + } else + { g_logger_to_stdout = 1; + } int ret = 0; int opt = 0; @@ -1042,17 +991,12 @@ int main(int argc, char * argv[]) unsigned int pdump_inited = 0; if (g_logger_to_stdout) + { MR_INFO("%s", mr_logo); + } MR_INFO("MARSIO ZeroCopy Packet I/O Driver, Version: %s, build with %s", service_git_version, rte_version()); - /* Compatible with MARSIO3, change the process name */ - if (sc_proc_symbol_setup(sc, argc, argv) != RT_SUCCESS) - { - MR_ERROR("Process symbol setup failed. "); - goto quit; - } - /* Check Configure File */ if (access(sc->local_cfgfile, R_OK) != 0) { diff --git a/service/src/main.c b/service/src/main.c new file mode 100644 index 0000000..1588d89 --- /dev/null +++ b/service/src/main.c @@ -0,0 +1,9 @@ +// +// Created by luqiu on 2024/6/18. +// + +extern int marsio_service_main(int argc, char * argv[]); +int main(int argc, char *argv[]) +{ + return marsio_service_main(argc, argv); +}
\ No newline at end of file diff --git a/service/src/node_bfd.c b/service/src/node_bfd.c index baf13b2..5a8e812 100644 --- a/service/src/node_bfd.c +++ b/service/src/node_bfd.c @@ -100,6 +100,8 @@ uint16_t get_bfd_session_id(rte_graph_t graph_id, struct rte_ipv4_hdr * ipv4_hdr return get_free_session_id(graph_id, ipv4_hdr); } +#define BFD_USE_YOUR_DISCRIMINATOR_AS_MY_DISCRIMINATOR 0 + /* Reply Bfd Request */ uint8_t bfd_reply(struct rte_ether_hdr * ether_hdr, struct rte_ipv4_hdr * ipv4_hdr, struct rte_udp_hdr * udp_hdr, uint16_t bfd_session_id) @@ -123,10 +125,17 @@ uint8_t bfd_reply(struct rte_ether_hdr * ether_hdr, struct rte_ipv4_hdr * ipv4_h /* Swap discriminator */ struct bfd_header_t * bfd_hdr = (struct bfd_header_t *)(udp_hdr + 1); uint8_t swap_discriminator[4]; + +#if BFD_USE_YOUR_DISCRIMINATOR_AS_MY_DISCRIMINATOR + memcpy(swap_discriminator, bfd_hdr->your_discriminator, sizeof(swap_discriminator)); + memcpy(bfd_hdr->your_discriminator, bfd_hdr->my_discriminator, sizeof(swap_discriminator)); + memcpy(bfd_hdr->my_discriminator, swap_discriminator, sizeof(swap_discriminator)); +#else uint32_t discriminator = htonl(MR_BFD_START_DISCRIMINATOR + bfd_session_id); memcpy(swap_discriminator, bfd_hdr->my_discriminator, sizeof(swap_discriminator)); memcpy(bfd_hdr->my_discriminator, &discriminator, sizeof(swap_discriminator)); memcpy(bfd_hdr->your_discriminator, swap_discriminator, sizeof(swap_discriminator)); +#endif /* Set udp check sum */ udp_hdr->dgram_cksum = 0; diff --git a/service/src/node_etherfabric.c b/service/src/node_etherfabric.c index b49d631..c81080a 100644 --- a/service/src/node_etherfabric.c +++ b/service/src/node_etherfabric.c @@ -344,7 +344,7 @@ int parser_ef_adapter_config(struct sc_main * sc, struct node_ef_main * ef_main) if (ef_adapter->mode == MODE_INVALID) continue; - forwarder_table_inserter(sid_start + ef_adapter->ef_adapter_id, FORWARDER_TYPE_EF); + forwarder_table_insert(sid_start + ef_adapter->ef_adapter_id, FORWARDER_TYPE_EF); } /* Save the etherfabric adapter config num */ diff --git a/service/src/node_forwarder.c b/service/src/node_forwarder.c index 3245b24..36dedef 100644 --- a/service/src/node_forwarder.c +++ b/service/src/node_forwarder.c @@ -75,7 +75,7 @@ int sid_check(uint32_t sid) } /* Forwarder table inserter */ -void forwarder_table_inserter(uint16_t sid, uint16_t type) +void forwarder_table_insert(uint16_t sid, uint16_t type) { char str_forwarder[1024] = {}; struct forwarder_main * forwarder_main = forwarder_main_get(); diff --git a/service/src/node_lb.c b/service/src/node_lb.c index f86fcbe..cb4b0cb 100644 --- a/service/src/node_lb.c +++ b/service/src/node_lb.c @@ -356,7 +356,7 @@ int parser_local_lb_conf(struct sc_main * sc, struct node_lb_main * lb_main) { struct lb_group * lb_group = &lb_main->lb_groups[i]; if (lb_group->group_status == GROUP_STATUS_IN_USE) - forwarder_table_inserter(lb_group->sid, FORWARDER_TYPE_LB); + forwarder_table_insert(lb_group->sid, FORWARDER_TYPE_LB); } /* Save sid info */ diff --git a/service/src/node_link_aware_injector.c b/service/src/node_link_aware_injector.c index d98ceac..e9c5a55 100644 --- a/service/src/node_link_aware_injector.c +++ b/service/src/node_link_aware_injector.c @@ -115,7 +115,7 @@ int lai_init(struct sc_main * sc) } /* Inserter sid to forwarder table */ - forwarder_table_inserter(lai_main->lai_sid, FORWARDER_TYPE_LAI); + forwarder_table_insert(lai_main->lai_sid, FORWARDER_TYPE_LAI); /* Get ef adapter ids */ lai_main->nr_ef_adapters = ef_nr_adapters_get(); diff --git a/service/src/node_tera.c b/service/src/node_tera.c index a28c90d..93a9ae3 100644 --- a/service/src/node_tera.c +++ b/service/src/node_tera.c @@ -214,7 +214,7 @@ int tera_config_parse(struct sc_main * sc, struct node_tera_main * tera_main) if (adapter->listen_device == NULL) continue; - forwarder_table_inserter(sid_start + adapter->tera_adapter_id, FORWARDER_TYPE_TERA); + forwarder_table_insert(sid_start + adapter->tera_adapter_id, FORWARDER_TYPE_TERA); } /* Save the sid and nr adapters */ diff --git a/service/src/node_vwire.c b/service/src/node_vwire.c index 1b57073..d0d6a96 100644 --- a/service/src/node_vwire.c +++ b/service/src/node_vwire.c @@ -206,7 +206,6 @@ static __rte_always_inline uint16_t vwire_ingress_node_process(struct rte_graph stats.drop_pkts++; } -#if 0 /* Check if tracing is enabled for the current Mbuf */ if (unlikely(dp_trace_record_can_emit(mbuf0, DP_TRACE_MEASUREMENT_TYPE_TRACE))) { @@ -218,7 +217,6 @@ static __rte_always_inline uint16_t vwire_ingress_node_process(struct rte_graph { gen_store_telemetry_info_adapter(mbuf0); } -#endif if (unlikely(next_index ^ next0)) { @@ -519,11 +517,12 @@ errout: int vwire_init(struct sc_main * sc) { - /* Get ef max entry,default is 256 */ - MESA_load_profile_uint_def(sc->local_cfgfile, "limits", "nr_max_vwires", &nr_max_vwires, 256); struct vwire_node_main * vwire_node_main = ZMALLOC(sizeof(struct vwire_node_main)); MR_VERIFY_MALLOC(vwire_node_main); + /* Get ef max entry,default is 256 */ + MESA_load_profile_uint_def(sc->local_cfgfile, "limits", "nr_max_vwires", &nr_max_vwires, 256); + vwire_node_main->forward_rules = ZMALLOC(sizeof(struct vwire_forward_rule *) * nr_max_vwires); MR_VERIFY_MALLOC(vwire_node_main->forward_rules); @@ -584,7 +583,11 @@ int vwire_init(struct sc_main * sc) return RT_ERR; } - vwire_forward_rule_add__DEV_TYPE(p_vwire_node_main, sc, str_int_dev, str_ext_dev, vwire_id); + ret = vwire_forward_rule_add__DEV_TYPE(p_vwire_node_main, sc, str_int_dev, str_ext_dev, vwire_id); + if (ret < 0) + { + return RT_ERR; + } char str_obp_dev[MR_SYMBOL_MAX] = {}; ret = MESA_load_profile_string_nodef(sc->local_cfgfile, sec_symbol, "obp_device", str_obp_dev, @@ -616,7 +619,7 @@ int vwire_init(struct sc_main * sc) continue; uint16_t sid = sid_start + fwd_rule->vwire_id; - forwarder_table_inserter(sid, FORWARDER_TYPE_VWIRE); + forwarder_table_insert(sid, FORWARDER_TYPE_VWIRE); } /* Save sid info */ @@ -628,11 +631,17 @@ int vwire_init(struct sc_main * sc) uint32_t max_entries; MESA_load_profile_uint_def(sc->local_cfgfile, "limits", "nr_max_link_dbs", &max_entries, 64); p_vwire_node_main->link_db_ctx = link_db_create(LINK_DB_TYPE_VWIRE, max_entries); + if (p_vwire_node_main->link_db_ctx == NULL) + { return RT_ERR; + } - if (link_db_config_parse(sc->local_cfgfile, p_vwire_node_main->link_db_ctx) == RT_ERR) + ret = link_db_config_parse(sc->local_cfgfile, p_vwire_node_main->link_db_ctx); + if (ret < 0) + { return RT_ERR; + } return 0; } |
