pub enum ControlRequest {
AddAddress {
address: Subnet,
parameters: AddressParameters,
address_state_provider: ServerEnd<AddressStateProviderMarker>,
control_handle: ControlControlHandle,
},
RemoveAddress {
address: Subnet,
responder: ControlRemoveAddressResponder,
},
GetId {
responder: ControlGetIdResponder,
},
SetConfiguration {
config: Configuration,
responder: ControlSetConfigurationResponder,
},
GetConfiguration {
responder: ControlGetConfigurationResponder,
},
Enable {
responder: ControlEnableResponder,
},
Disable {
responder: ControlDisableResponder,
},
Detach {
control_handle: ControlControlHandle,
},
GetAuthorizationForInterface {
responder: ControlGetAuthorizationForInterfaceResponder,
},
Remove {
responder: ControlRemoveResponder,
},
}
Expand description
Provides control over an interface.
This protocol encodes the underlying interface’s lifetime in both directions; the interface exists iff both ends of the protocol are open. That is:
- Closing the client end causes the interface to be removed.
- Observing a closure of the server end indicates the interface no longer exists.
Variants§
AddAddress
Assigns an address to the interface.
Errors are communicated via
[fuchsia.net.interfaces.admin/AddressStateProvider.OnAddressRemoved
].
- request
address
the address to assign to the interface. - request
parameters
additional address-specific options. - request
address_state_provider
provides address assignment state and enables updating address properties.
Fields
address: Subnet
parameters: AddressParameters
address_state_provider: ServerEnd<AddressStateProviderMarker>
control_handle: ControlControlHandle
RemoveAddress
Removes an address from the interface.
- request
address
the address to remove.
- response
did_remove
true
iffaddress
was removed from the interface as a consequence of this call.
GetId
Gets the interface identifier.
- response
id
the interface identifier.
Fields
responder: ControlGetIdResponder
SetConfiguration
Sets the configuration for the interface.
Only set fields that are supported in the provided Configuration
will be set; unset fields will be left unmodified. The server will
return a Configuration
which holds the previous configuration for
fields that the interface supports and set, even if the call did not
update the configuration’s value.
- request
config
the configuration fields to update on the interface.
- response
previous_config
a snapshot of the interface’s previous configuration. Only supported fields present inconfig
will be set.
GetConfiguration
Gets a snapshot of the interface’s configuration.
The server will populate the returned Configuration
with the
configuration for features/protocols that the interface supports. That
is, fields for unsupported configurations will be unset in the returned
Configuration
.
- response
config
a snapshot of the interface’s configuration.
Fields
responder: ControlGetConfigurationResponder
Enable
Enables the interface.
- response
did_enable
true
iff the interface moved from disabled to enabled as a consequence of this call.
Fields
responder: ControlEnableResponder
Disable
Disables the interface.
- response
did_disable
true
iff the interface moved from enabled to disabled as a consequence of this call.
Fields
responder: ControlDisableResponder
Detach
Detaches the client end from the interface’s lifetime.
After calling Detach
, closing this client end no longer causes the
interface to be removed.
Fields
control_handle: ControlControlHandle
GetAuthorizationForInterface
Get an authentication credential for this interface.
The credential contains a [zx::handle::EVENT
], whose entangled
partner is held by the server. This credential can be converted into a
ProofOfInterfaceAuthorization
and then passed into fuchsia.net.*
API calls to prove ownership of this interface. The EVENT
is
stable throughout the lifetime of the interface. Clients may duplicate
this EVENT
to make multiple API calls, or transfer the EVENT
to other clients.
- response
credential
the authorization credential for this interface.
Fields
Remove
Initiates interface removal.
This method returns success once interface removal has started. When the
interface is removed, a USER
removed reason is issued in
[OnInterfaceRemoved
] and the server end is closed.
Fields
responder: ControlRemoveResponder
Implementations§
Source§impl ControlRequest
impl ControlRequest
pub fn into_add_address( self, ) -> Option<(Subnet, AddressParameters, ServerEnd<AddressStateProviderMarker>, ControlControlHandle)>
pub fn into_remove_address( self, ) -> Option<(Subnet, ControlRemoveAddressResponder)>
pub fn into_get_id(self) -> Option<ControlGetIdResponder>
pub fn into_set_configuration( self, ) -> Option<(Configuration, ControlSetConfigurationResponder)>
pub fn into_get_configuration(self) -> Option<ControlGetConfigurationResponder>
pub fn into_enable(self) -> Option<ControlEnableResponder>
pub fn into_disable(self) -> Option<ControlDisableResponder>
pub fn into_detach(self) -> Option<ControlControlHandle>
pub fn into_remove(self) -> Option<ControlRemoveResponder>
Sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL