Implement library_class_dpdk with init/status methods implemented.
Signed-off-by: Eli Britstein <[email protected]>
---
lib/dpdk.c | 26 ++++++++++++++++++++++++++
lib/dpdk.h | 2 ++
lib/library.c | 5 +++++
3 files changed, 33 insertions(+)
diff --git a/lib/dpdk.c b/lib/dpdk.c
index 077bdfc09..712feb44d 100644
--- a/lib/dpdk.c
+++ b/lib/dpdk.c
@@ -30,6 +30,7 @@
#include "dirs.h"
#include "fatal-signal.h"
+#include "library-provider.h"
#include "netdev-dpdk.h"
#include "netdev-offload-provider.h"
#include "openvswitch/dynamic-string.h"
@@ -600,3 +601,28 @@ dpdk_status(const struct ovsrec_open_vswitch *cfg)
ovsrec_open_vswitch_set_dpdk_version(cfg, rte_version());
}
}
+
+static void
+dpdk_library_init(const struct smap *ovs_other_config)
+{
+ smap_replace(CONST_CAST(struct smap *, ovs_other_config), "dpdk-init",
+ "true");
+ dpdk_init(ovs_other_config);
+}
+
+static void
+dpdk_library_status(const struct ovsrec_library *lib)
+{
+ if (!lib) {
+ return;
+ }
+
+ ovsrec_library_set_initialized(lib, dpdk_available());
+ ovsrec_library_set_status(lib, rte_version());
+}
+
+const struct library_class library_class_dpdk = {
+ .name = "dpdk",
+ .init = dpdk_library_init,
+ .status = dpdk_library_status,
+};
diff --git a/lib/dpdk.h b/lib/dpdk.h
index 1b790e682..1d2ed45be 100644
--- a/lib/dpdk.h
+++ b/lib/dpdk.h
@@ -42,4 +42,6 @@ bool dpdk_available(void);
void print_dpdk_version(void);
void dpdk_status(const struct ovsrec_open_vswitch *);
+extern const struct library_class library_class_dpdk;
+
#endif /* dpdk.h */
diff --git a/lib/library.c b/lib/library.c
index ad6657bbb..3c2d7eebc 100644
--- a/lib/library.c
+++ b/lib/library.c
@@ -5,6 +5,7 @@
#include <errno.h>
#include "cmap.h"
+#include "dpdk.h"
#include "hash.h"
#include "library.h"
#include "library-provider.h"
@@ -88,6 +89,10 @@ library_register(void)
unixctl_command_register("library/list", "",
0, 0, library_list,
NULL);
+
+#ifdef DPDK_NETDEV
+ library_register_one(&library_class_dpdk);
+#endif
}
void
--
2.34.1
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev