mirror of
https://github.com/xcat2/xNBA.git
synced 2025-02-23 22:09:54 +00:00
[interface] Default to calling intf_restart() in response to intf_close()
If an object interface does not provide an intf_close() method, then default to calling intf_restart(). This allows static objects to safely ignore intf_close(), without needing to add code solely to ensure that the interface gets unplugged. Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
parent
5c11ff6304
commit
a3346e3587
@ -34,8 +34,24 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Close null interface
|
||||
*
|
||||
* @v intf Null interface
|
||||
* @v rc Reason for close
|
||||
*/
|
||||
static void null_intf_close ( struct interface *intf __unused,
|
||||
int rc __unused ) {
|
||||
|
||||
/* Do nothing. In particular, do not call intf_restart(),
|
||||
* since that would result in an infinite loop.
|
||||
*/
|
||||
}
|
||||
|
||||
/** Null interface operations */
|
||||
static struct interface_operation null_intf_op[] = {};
|
||||
static struct interface_operation null_intf_op[] = {
|
||||
INTF_OP ( intf_close, struct interface *, null_intf_close ),
|
||||
};
|
||||
|
||||
/** Null interface descriptor */
|
||||
struct interface_descriptor null_intf_desc =
|
||||
@ -233,7 +249,8 @@ void intf_close ( struct interface *intf, int rc ) {
|
||||
if ( op ) {
|
||||
op ( object, rc );
|
||||
} else {
|
||||
/* Default is to ignore intf_close() */
|
||||
/* Default is to restart the interface */
|
||||
intf_restart ( dest, rc );
|
||||
}
|
||||
|
||||
intf_put ( dest );
|
||||
|
Loading…
x
Reference in New Issue
Block a user