VintageNet.PredictableInterfaceName (vintage_net v0.13.9)

Copy Markdown View Source

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

hw_path_config()

@type hw_path_config() :: %{hw_path: Path.t(), ifname: VintageNet.ifname()}

hw_path to a user supplied ifname mapping

Functions

built_in?(ifname)

@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

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

precheck(ifname)

@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.

start_link(ifnames)

@spec start_link([hw_path_config()]) :: GenServer.on_start()