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.