diff options
Diffstat (limited to 'src/core/interface.c')
| -rw-r--r-- | src/core/interface.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/core/interface.c b/src/core/interface.c index 97caac804..62f4621db 100644 --- a/src/core/interface.c +++ b/src/core/interface.c @@ -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 ); |
