summaryrefslogtreecommitdiffstats
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/interface.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/core/interface.c b/src/core/interface.c
index f7802be0..402aa454 100644
--- a/src/core/interface.c
+++ b/src/core/interface.c
@@ -291,6 +291,41 @@ void intf_shutdown ( struct interface *intf, int rc ) {
}
/**
+ * Shut down multiple object interfaces
+ *
+ * @v intfs Object interfaces
+ * @v rc Reason for close
+ */
+void intfs_vshutdown ( va_list intfs, int rc ) {
+ struct interface *intf;
+ va_list tmp;
+
+ /* Nullify all interfaces to avoid potential loops */
+ va_copy ( tmp, intfs );
+ while ( ( intf = va_arg ( tmp, struct interface * ) ) )
+ intf_nullify ( intf );
+ va_end ( tmp );
+
+ /* Shut down all interfaces */
+ while ( ( intf = va_arg ( intfs, struct interface * ) ) )
+ intf_shutdown ( intf, rc );
+}
+
+/**
+ * Shut down multiple object interfaces
+ *
+ * @v rc Reason for close
+ * @v ... Object interfaces
+ */
+void intfs_shutdown ( int rc, ... ) {
+ va_list intfs;
+
+ va_start ( intfs, rc );
+ intfs_vshutdown ( intfs, rc );
+ va_end ( intfs );
+}
+
+/**
* Shut down and restart an object interface
*
* @v intf Object interface
@@ -317,6 +352,40 @@ void intf_restart ( struct interface *intf, int rc ) {
}
/**
+ * Shut down and restart multiple object interfaces
+ *
+ * @v intfs Object interfaces
+ * @v rc Reason for close
+ */
+void intfs_vrestart ( va_list intfs, int rc ) {
+ struct interface *intf;
+ va_list tmp;
+
+ /* Shut down all interfaces */
+ va_copy ( tmp, intfs );
+ intfs_vshutdown ( tmp, rc );
+ va_end ( tmp );
+
+ /* Reinitialise all interfaces */
+ while ( ( intf = va_arg ( intfs, struct interface * ) ) )
+ intf_reinit ( intf );
+}
+
+/**
+ * Shut down and restart multiple object interfaces
+ *
+ * @v rc Reason for close
+ * @v ... Object interfaces
+ */
+void intfs_restart ( int rc, ... ) {
+ va_list intfs;
+
+ va_start ( intfs, rc );
+ intfs_vrestart ( intfs, rc );
+ va_end ( intfs );
+}
+
+/**
* Poke an object interface
*
* @v intf Object interface