[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 <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2020-12-07 13:49:47 +00:00
parent cb0ba2f825
commit 09fe2bbd34
3 changed files with 20 additions and 3 deletions

View File

@@ -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
*