From 5316a36422302cacb79e81830843127db4f7e443 Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Mon, 10 Feb 2020 20:55:38 -0800 Subject: [PATCH] interface: Introduce methods to create and destroy instances. 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. Reviewed-by: Jacob Keller Signed-off-by: Richard Cochran --- 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 * @note SPDX-License-Identifier: GPL-2.0+ */ +#include #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.