In order to eventually hide the implementation details of the interface,
users will need to be able to create and destroy instances thereof.  This
patch adds the needed methods.

Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 interface.c | 19 +++++++++++++++++++
 interface.h | 13 +++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/interface.c b/interface.c
index 74a2512..63ed7e4 100644
--- a/interface.c
+++ b/interface.c
@@ -4,8 +4,27 @@
  * @note Copyright (C) 2020 Richard Cochran <richardcoch...@gmail.com>
  * @note SPDX-License-Identifier: GPL-2.0+
  */
+#include <stdlib.h>
 #include "interface.h"
 
+struct interface *interface_create(const char *name)
+{
+       struct interface *iface;
+
+       iface = calloc(1, sizeof(struct interface));
+       if (!iface) {
+               return NULL;
+       }
+       interface_set_name(iface, name);
+
+       return iface;
+}
+
+void interface_destroy(struct interface *iface)
+{
+       free(iface);
+}
+
 void interface_ensure_tslabel(struct interface *iface)
 {
        if (!iface->ts_label[0]) {
diff --git a/interface.h b/interface.h
index 32eec7b..b61f4d6 100644
--- a/interface.h
+++ b/interface.h
@@ -25,6 +25,19 @@ struct interface {
        struct sk_ts_info ts_info;
 };
 
+/**
+ * Creates an instance of an interface.
+ * @param name  The device which indentifies this interface.
+ * @return      A pointer to an interface instance on success, NULL otherwise.
+ */
+struct interface *interface_create(const char *name);
+
+/**
+ * Destroys an instance of an interface.
+ * @param iface  A pointer obtained via interface_create().
+ */
+void interface_destroy(struct interface *iface);
+
 /**
  * Ensures that an interface has a proper time stamping label.
  * @param iface  The interface of interest.
-- 
2.20.1



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to