diff options
Diffstat (limited to 'src/fib.erl')
-rw-r--r-- | src/fib.erl | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/fib.erl b/src/fib.erl new file mode 100644 index 0000000..130e8ec --- /dev/null +++ b/src/fib.erl @@ -0,0 +1,37 @@ +-module(fib). +-export([tables/0, current_table/0]). +-export([list/0, list/1]). +-export_types([table/0, flags/0, entry/0]). + +-type table() :: non_neg_integer. + +-type flags() :: []. + +-type entry() :: #{destination := inet:ip_address() | default, + netmask := inet:ip_address() | undefined, + gateway := inet:ip_address() | {mac, string()} | {link, integer()}, + scope := string() | undefined, + interface := string(), + flags := flags(), + expire := undefined}. + +-spec tables() -> [table()]. +tables() -> + persistent_term:get('fib/tables'). + +-spec current_table() -> table(). +current_table() -> + persistent_term:get('fib/current_table'). + +-spec list() -> [entry()]. +list() -> + Mod = mod(), + Mod:list(Mod:default_table()). + +-spec list(table) -> [entry()]. +list(Table) -> + Mod = mod(), + Mod:list(Table). + +mod() -> + persistent_term:get('fib/module'). |