View Source VintageNet.Route (vintage_net v0.13.5)

Types for handling routing tables

Summary

Types

A default route entry

A list of routing table entries

A routing table entry

A local route entry

Metric (priority) for a routing table entry

Compute a route metric value from information about the interface

An IP route rule

Linux routing table index

Types

@type default_route() ::
  {:default_route, VintageNet.ifname(), :inet.ip_address(), metric(),
   table_index()}

A default route entry

The IP address is the default gateway

@type entries() :: [entry()]

A list of routing table entries

@type entry() :: rule() | default_route() | local_route()

A routing table entry

This can be turned into real Linux IP routing table entry.

@type local_route() ::
  {:local_route, VintageNet.ifname(), :inet.ip_address(), metric(),
   table_index()}

A local route entry

This is for routing packets to the LAN

@type metric() :: 0..32767

Metric (priority) for a routing table entry

@type route_metric_fun() ::
  (VintageNet.ifname(), VintageNet.Route.InterfaceInfo.t() -> metric())

Compute a route metric value from information about the interface

See VintageNet.Route.DefaultMetric.compute_metric/2 for an example. This can be set using the :route_metric_fun application environment key.

@type rule() :: {:rule, table_index(), :inet.ip_address()}

An IP route rule

If the source address matches the 3rd element, then use the routing table specified by the 2nd element.

@type table_index() :: 0..255 | :main | :local | :default

Linux routing table index

:main is table 254, :local is table 255. :default is normally the same as :main.