summaryrefslogtreecommitdiff
path: root/service/src
diff options
context:
space:
mode:
author陆秋文 <[email protected]>2024-07-15 09:48:50 +0000
committer陆秋文 <[email protected]>2024-07-15 09:48:50 +0000
commitf0e50964001c56042150c9c49284bf0aaa531a7c (patch)
treedd15b7248485ecade179524a7670630f21be68ff /service/src
parent24f4ab0940ef3652908b3a5968527951c53f66b8 (diff)
Feature mock api by cmocka
Diffstat (limited to 'service/src')
-rw-r--r--service/src/core.c70
-rw-r--r--service/src/main.c9
-rw-r--r--service/src/node_bfd.c9
-rw-r--r--service/src/node_etherfabric.c2
-rw-r--r--service/src/node_forwarder.c2
-rw-r--r--service/src/node_lb.c2
-rw-r--r--service/src/node_link_aware_injector.c2
-rw-r--r--service/src/node_tera.c2
-rw-r--r--service/src/node_vwire.c23
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;
}