From 09fe2bbd343a46010e89d848e5887bfb5fc3f6f6 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Mon, 7 Dec 2020 13:49:47 +0000 Subject: [interface] Provide intf_insert() to insert a filter interface Generalise the filter interface insertion logic from block_translate() and expose as intf_insert(), allowing a filter interface to be inserted on any existing interface. Signed-off-by: Michael Brown --- src/core/interface.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/core/interface.c') diff --git a/src/core/interface.c b/src/core/interface.c index 05e7e4777..34a4180a5 100644 --- a/src/core/interface.c +++ b/src/core/interface.c @@ -390,6 +390,23 @@ void intfs_restart ( int rc, ... ) { va_end ( intfs ); } +/** + * Insert a filter interface + * + * @v intf Object interface + * @v upper Upper end of filter + * @v lower Lower end of filter + */ +void intf_insert ( struct interface *intf, struct interface *upper, + struct interface *lower ) { + struct interface *dest = intf->dest; + + intf_get ( dest ); + intf_plug_plug ( intf, upper ); + intf_plug_plug ( lower, dest ); + intf_put ( dest ); +} + /** * Poke an object interface * -- cgit v1.2.3-55-g7522