View Source VintageNet.PredictableInterfaceName (vintage_net v0.13.5)
Handles predictable interface names by subscribing to the property table and renaming matching interface names based on the configuration in application environment.
Summary
Types
hw_path to a user supplied ifname mapping
Functions
Return whether an ifname is a built-in one
Returns a specification to start this module under a supervisor.
Called before interface configuration.
Types
@type hw_path_config() :: %{hw_path: Path.t(), ifname: VintageNet.ifname()}
hw_path to a user supplied ifname mapping
Functions
@spec built_in?(VintageNet.ifname()) :: boolean()
Return whether an ifname is a built-in one
Built-in names start with eth
, wlan
, etc. and cannot be used
as interfaces names when using the predictable networking feature.
Examples:
iex> PredictableInterfaceName.built_in?("wlan0")
true
iex> PredictableInterfaceName.built_in?("eth50")
true
iex> PredictableInterfaceName.built_in?("lan")
false
Returns a specification to start this module under a supervisor.
See Supervisor
.
@spec precheck(VintageNet.ifname()) :: :ok | {:error, :not_predictable_interface_name}
Called before interface configuration.
First checks if vintage_net is configured to use predictable interface names, if so checks the given ifname for "common" naming schemes.
Instead of a boolean this function returns :ok
on success, and {:error, not_predictable_interface_name}
on failure. This is done to allow usage in
with
chains.
@spec start_link([hw_path_config()]) :: GenServer.on_start()