|
iPXE
|
Object interfaces. More...
Go to the source code of this file.
Functions | |
| FILE_LICENCE (GPL2_OR_LATER_OR_UBDL) | |
| FILE_SECBOOT (PERMITTED) | |
| static void | null_intf_close (struct interface *intf __unused, int rc __unused) |
| Close null interface. | |
| void | intf_plug (struct interface *intf, struct interface *dest) |
| Plug an object interface into a new destination object interface. | |
| void | intf_plug_plug (struct interface *a, struct interface *b) |
| Plug two object interfaces together. | |
| void | intf_unplug (struct interface *intf) |
| Unplug an object interface. | |
| void | intf_nullify (struct interface *intf) |
| Ignore all further operations on an object interface. | |
| struct interface * | intf_get (struct interface *intf) |
| Increment reference count on an object interface. | |
| void | intf_put (struct interface *intf) |
| Decrement reference count on an object interface. | |
| void * | intf_object (struct interface *intf) |
| Get pointer to object containing object interface. | |
| static struct interface * | intf_get_passthru (struct interface *intf) |
| Get pass-through interface. | |
| void * | intf_get_dest_op_no_passthru_untyped (struct interface *intf, void *type, struct interface **dest) |
| Get object interface destination and operation method (without pass-through) | |
| void * | intf_get_dest_op_untyped (struct interface *intf, void *type, struct interface **dest) |
| Get object interface destination and operation method. | |
| void | intf_close (struct interface *intf, int rc) |
| Close an object interface. | |
| void | intf_shutdown (struct interface *intf, int rc) |
| Shut down an object interface. | |
| void | intfs_vshutdown (va_list intfs, int rc) |
| Shut down multiple object interfaces. | |
| void | intfs_shutdown (int rc,...) |
| Shut down multiple object interfaces. | |
| void | intf_restart (struct interface *intf, int rc) |
| Shut down and restart an object interface. | |
| void | intfs_vrestart (va_list intfs, int rc) |
| Shut down and restart multiple object interfaces. | |
| void | intfs_restart (int rc,...) |
| Shut down and restart multiple object interfaces. | |
| void | intf_insert (struct interface *intf, struct interface *upper, struct interface *lower) |
| Insert a filter interface. | |
| void | intf_poke (struct interface *intf, void(type)(struct interface *intf)) |
| Poke an object interface. | |
Variables | |
| static struct interface_operation | null_intf_op [] |
| Null interface operations. | |
| struct interface_descriptor | null_intf_desc |
| Null interface descriptor. | |
| struct interface | null_intf = INTF_INIT ( null_intf_desc ) |
| The null interface. | |
Object interfaces.
Definition in file interface.c.
| FILE_LICENCE | ( | GPL2_OR_LATER_OR_UBDL | ) |
| FILE_SECBOOT | ( | PERMITTED | ) |
Close null interface.
| intf | Null interface |
| rc | Reason for close |
Definition at line 48 of file interface.c.
Plug an object interface into a new destination object interface.
| intf | Object interface |
| dest | New destination object interface |
The reference to the existing destination interface is dropped, a reference to the new destination interface is obtained, and the interface is updated to point to the new destination interface.
Definition at line 84 of file interface.c.
References DBGC, dest, interface::dest, interface::intf, INTF_COL, INTF_DBG, INTF_FMT, intf_get(), INTF_INTF_DBG, INTF_INTF_FMT, intf_put(), and null_intf.
Referenced by intf_plug_plug(), and xfer_vredirect().
Plug two object interfaces together.
| a | Object interface A |
| b | Object interface B |
Plugs interface A into interface B, and interface B into interface A. (The basic plug() function is unidirectional; this function is merely a shorthand for two calls to plug(), hence the name.)
Definition at line 108 of file interface.c.
References intf_plug().
Referenced by aoedev_ata_command(), aoedev_cfg_command(), ata_open(), atadev_command(), create_downloader(), create_pinger(), create_validator(), dns_resolv(), efi_local_open(), fc_els_request(), fc_els_respond(), fc_port_open(), fc_xchg_originate(), fcpdev_scsi_command(), ftp_open(), http_connect(), http_open(), http_transfer_complete(), hw_open(), ib_cmrc_open(), ifpoller_wait(), intf_insert(), ipair_create(), iscsi_scsi_command(), nfs_open(), numeric_resolv(), peerblk_open(), peermux_filter(), ping_open(), resolv(), resolv_setting(), scsi_open(), scsidev_command(), slam_open(), srp_open(), srpdev_scsi_command(), start_dhcp(), start_dhcpv6(), start_ipv6conf(), start_ntp(), start_pxebs(), sync(), tcp_open(), tftp_core_open(), udp_open_common(), usbblk_scsi_command(), and xfer_open_named_socket().
| void intf_unplug | ( | struct interface * | intf | ) |
Unplug an object interface.
| intf | Object interface |
Definition at line 118 of file interface.c.
References DBGC, interface::dest, interface::intf, INTF_COL, INTF_INTF_DBG, INTF_INTF_FMT, intf_put(), and null_intf.
Referenced by intf_shutdown(), named_resolv_done(), and xfer_vredirect().
| void intf_nullify | ( | struct interface * | intf | ) |
Ignore all further operations on an object interface.
| intf | Object interface |
Definition at line 130 of file interface.c.
References interface::desc, interface::intf, and null_intf_desc.
Referenced by intf_shutdown(), intfs_vshutdown(), named_resolv_done(), and peermux_close().
Increment reference count on an object interface.
| intf | Object interface |
| intf | Object interface |
Definition at line 140 of file interface.c.
References interface::intf, ref_get, and interface::refcnt.
Referenced by intf_get_dest_op_no_passthru_untyped(), intf_insert(), and intf_plug().
| void intf_put | ( | struct interface * | intf | ) |
Decrement reference count on an object interface.
| intf | Object interface |
Definition at line 150 of file interface.c.
References interface::intf, ref_put, and interface::refcnt.
Referenced by acpi_describe(), ata_command(), block_capacity(), block_read(), block_read_capacity(), block_write(), edd_describe(), efi_describe(), identify_device(), intf_close(), intf_get_dest_op_untyped(), intf_insert(), intf_plug(), intf_poke(), intf_unplug(), job_progress(), peerdisc_stat(), resolv_done(), scsi_command(), scsi_response(), xfer_alloc_iob(), xfer_buffer(), xfer_deliver(), xfer_vredirect(), and xfer_window().
| void * intf_object | ( | struct interface * | intf | ) |
Get pointer to object containing object interface.
| intf | Object interface |
| object | Containing object |
Definition at line 160 of file interface.c.
References interface::desc, interface::intf, and interface_descriptor::offset.
Referenced by acpi_describe(), ata_command(), block_capacity(), block_read(), block_read_capacity(), block_write(), edd_describe(), efi_describe(), identify_device(), intf_close(), intf_poke(), job_progress(), peerdisc_stat(), resolv_done(), scsi_command(), scsi_response(), xfer_alloc_iob(), xfer_buffer(), xfer_deliver(), xfer_vredirect(), and xfer_window().
Get pass-through interface.
| intf | Object interface |
| passthru | Pass-through interface, or NULL |
Definition at line 170 of file interface.c.
References desc, interface::desc, and NULL.
Referenced by intf_get_dest_op_untyped().
| void * intf_get_dest_op_no_passthru_untyped | ( | struct interface * | intf, |
| void * | type, | ||
| struct interface ** | dest ) |
Get object interface destination and operation method (without pass-through)
| intf | Object interface |
| type | Operation type |
| dest | Destination interface |
| func | Implementing method, or NULL |
Definition at line 188 of file interface.c.
References desc, dest, interface::dest, intf_get(), NULL, op, and type.
Referenced by intf_get_dest_op_untyped().
Get object interface destination and operation method.
| intf | Object interface |
| type | Operation type |
| dest | Destination interface |
| func | Implementing method, or NULL |
Definition at line 213 of file interface.c.
References dest, interface_operation::func, intf_get_dest_op_no_passthru_untyped(), intf_get_passthru(), intf_put(), NULL, and type.
Referenced by intf_poke().
| void intf_close | ( | struct interface * | intf, |
| int | rc ) |
Close an object interface.
| intf | Object interface |
| rc | Reason for close |
Note that this function merely informs the destination object that the interface is about to be closed; it doesn't actually disconnect the interface. In most cases, you probably want to use intf_shutdown() or intf_restart() instead.
Definition at line 250 of file interface.c.
References DBGC, dest, interface::intf, intf_close(), intf_close_TYPE, INTF_COL, intf_get_dest_op, INTF_INTF_DBG, INTF_INTF_FMT, intf_object(), intf_put(), intf_restart(), op, rc, and strerror().
Referenced by ifconf_progress(), iflinkwait_progress(), intf_close(), intf_shutdown(), netdev_close(), sync_progress(), and xfer_vredirect().
| void intf_shutdown | ( | struct interface * | intf, |
| int | rc ) |
Shut down an object interface.
| intf | Object interface |
| rc | Reason for close |
Blocks further operations from being received via the interface, executes a close operation on the destination interface, and unplugs the interface.
Definition at line 279 of file interface.c.
References DBGC, interface::dest, interface::intf, intf_close(), INTF_COL, INTF_DBG, INTF_FMT, intf_nullify(), intf_temp_init(), intf_unplug(), null_intf, rc, strerror(), and tmp.
Referenced by aoecmd_close(), aoedev_close(), aoedev_config_done(), atacmd_close(), atadev_close(), blktrans_close(), comboot_resolv_close(), dhcp_finished(), dhcpv6_finished(), dns_done(), downloader_finished(), efi_download_close(), efi_local_close(), fc_els_close(), fc_ns_query_close(), fc_peer_close(), fc_port_close(), fc_ulp_close(), fc_xchg_close(), fcoe_close(), fcpcmd_close(), fcpdev_close(), ftp_done(), http_conn_close(), http_transfer_complete(), hw_finished(), ib_cmrc_close(), ib_srp_close(), imux_shutdown(), intf_restart(), intfs_vshutdown(), ipair_close(), ipv6conf_done(), named_close(), nfs_deliver(), nfs_done(), nfs_pm_deliver(), nslookup_close(), ntp_close(), numeric_step(), peerblk_close(), peermux_close(), peermux_info_close(), ping_close(), pinger_close(), posix_file_finished(), pxe_tftp_close(), resmux_close(), slam_finished(), srpcmd_close(), srpdev_close(), tcp_close(), tftp_done(), tls_close(), udp_close(), validator_finished(), and xcm_destroy().
| void intfs_vshutdown | ( | va_list | intfs, |
| int | rc ) |
Shut down multiple object interfaces.
| intfs | Object interfaces |
| rc | Reason for close |
Definition at line 306 of file interface.c.
References interface::intf, intf_nullify(), intf_shutdown(), rc, tmp, va_arg, va_copy, and va_end.
Referenced by intfs_shutdown(), and intfs_vrestart().
| void intfs_shutdown | ( | int | rc, |
| ... ) |
Shut down multiple object interfaces.
| rc | Reason for close |
| ... | Object interfaces |
Definition at line 327 of file interface.c.
References intfs_vshutdown(), rc, va_end, and va_start.
Referenced by http_close(), iscsi_close(), scsicmd_close(), scsidev_close(), and usbblk_remove().
| void intf_restart | ( | struct interface * | intf, |
| int | rc ) |
Shut down and restart an object interface.
| intf | Object interface |
| rc | Reason for close |
Shuts down the interface, then unblocks operations that were blocked during shutdown.
Definition at line 344 of file interface.c.
References DBGC, interface::intf, INTF_COL, INTF_DBG, INTF_FMT, intf_reinit(), intf_shutdown(), and rc.
Referenced by apply_syslog_settings(), apply_syslogs_settings(), efi_pxe_tftp_close(), efi_pxe_udp_close(), fc_peer_plogi(), fc_peer_plogi_done(), fc_port_examine(), fc_port_flogi_done(), fc_port_login(), fc_port_ns_plogi_done(), fc_ulp_examine(), fc_ulp_prli_done(), fcoe_reset(), http_block_read(), http_block_read_capacity(), http_conn_close(), http_conn_xfer_close(), http_reopen(), http_transfer_complete(), imux_close(), imux_start_pair(), intf_close(), iscsi_close_connection(), iscsi_command_close(), iscsi_scsi_done(), monojob_close(), netdev_config_close(), netdev_configure(), peerblk_raw_close(), peerblk_raw_open(), peerblk_raw_rx(), peerblk_reset(), peerblk_retrieval_close(), peerblk_retrieval_open(), peerblk_retrieval_rx(), peerdisc_socket_close(), peerdisc_socket_open(), peermux_block_close(), pxenv_udp_close(), pxenv_udp_open(), resmux_child_close(), sandev_command_close(), sanpath_close(), scsicmd_done(), scsidev_ready(), syslogs_close(), tftp_reopen(), tftp_reopen_mc(), tftp_timer_expired(), tls_validator_done(), usbblk_stop(), validator_start_download(), validator_start_ocsp(), validator_xfer_close(), xcm_close(), xcm_reopen(), and xfer_vreopen().
| void intfs_vrestart | ( | va_list | intfs, |
| int | rc ) |
Shut down and restart multiple object interfaces.
| intfs | Object interfaces |
| rc | Reason for close |
Definition at line 367 of file interface.c.
References interface::intf, intf_reinit(), intfs_vshutdown(), rc, tmp, va_arg, va_copy, and va_end.
Referenced by intfs_restart().
| void intfs_restart | ( | int | rc, |
| ... ) |
Shut down and restart multiple object interfaces.
| rc | Reason for close |
| ... | Object interfaces |
Definition at line 387 of file interface.c.
References intfs_vrestart(), rc, va_end, and va_start.
Referenced by http_transfer_complete(), sanpath_close(), and usbblk_scsi_close().
Insert a filter interface.
| intf | Object interface |
| upper | Upper end of filter |
| lower | Lower end of filter |
Definition at line 402 of file interface.c.
References dest, interface::dest, interface::intf, intf_get(), intf_plug_plug(), and intf_put().
Referenced by add_tls(), and block_translate().
Poke an object interface.
| intf | Object interface |
| type | Operation type |
This is a helper function to implement methods which take no parameters and return nothing.
Definition at line 421 of file interface.c.
References dest, interface::intf, intf_get_dest_op_untyped(), intf_object(), intf_poke_TYPE, intf_put(), op, and type.
Referenced by pool_recycle(), pool_reopen(), and xfer_window_changed().
|
static |
Null interface operations.
Definition at line 57 of file interface.c.
| struct interface_descriptor null_intf_desc |
Null interface descriptor.
Definition at line 62 of file interface.c.
Referenced by intf_nullify(), and numeric_resolv().
| struct interface null_intf = INTF_INIT ( null_intf_desc ) |
The null interface.
Definition at line 66 of file interface.c.
Referenced by intf_init(), intf_plug(), intf_shutdown(), intf_temp_init(), and intf_unplug().