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

Reply via email to