BATADV-VIS(8)

πŸ’– BATADV-VIS πŸ’–

okay bestie, so you know batadv-vis? it's the batman-adv visualization server and honestly? it's giving main character energy for your mesh network. it lives in the batadv-vis section 8 of the manual, iykyk πŸ¦‹


✨ NAME ✨

batadv-vis β€” batman-adv visualization server


🌸 SYNOPSIS 🌸

batadv-vis [options]

πŸ’… DESCRIPTION πŸ’…

so like. batadv-vis is how you visualize your batman-adv mesh network ✨ it reads the neighbor information and the local client table, then distributes all of that via alfred around the network. and because it's gathering up all this local info, any vis node can get the whole picture of the network. the entire vibe. the full lore. 🫢


πŸŽ€ OPTIONS πŸŽ€

  • -v, --version β€” prints the version. that's it, that's the whole job πŸ’–
  • -h, --help β€” shows you a brief help message. when in doubt, ask for help, periodt.
  • -u, --unix-path path β€” the path to the unix socket used for alfred server communication πŸ”Œ
  • -i, --interface iface β€” tell it which batman-adv interface is configured on your system. the default is bat0 ✨
  • -s, --server β€” starts up in server mode πŸ‘‘ this server reads the neighbor and client information from batman-adv every 10 seconds and sets it in alfred via unix socket. and heads up: the alfred server has to be running too, otherwise this information doesn't get set. no alfred, no data, that's the rule 😭
  • -f, --format format β€” picks the output format for client mode. your choices are literally "json", "jsondoc" or "dot" 🌈

🌟 EXAMPLES 🌟

start a batadv-vis server that's fetching the information for bat0:

batadv-vis -i bat0 -s

to get a graphviz-compatible vis output:

batadv-vis
digraph {
        subgraph "cluster_fe:f0:00:00:04:01" {
                "fe:f0:00:00:04:01"
        }
        "fe:f0:00:00:04:01" -> "fe:f0:00:00:05:01" [label="1.000"]
        "fe:f0:00:00:04:01" -> "fe:f0:00:00:03:01" [label="1.004"]
        "fe:f0:00:00:04:01" -> "00:00:43:05:00:04" [label="TT"]
        "fe:f0:00:00:04:01" -> "fe:f1:00:00:04:01" [label="TT"]
        subgraph "cluster_fe:f0:00:00:02:01" {
                "fe:f0:00:00:02:01"
        }
        "fe:f0:00:00:02:01" -> "fe:f0:00:00:03:01" [label="1.000"]
        "fe:f0:00:00:02:01" -> "fe:f0:00:00:01:01" [label="1.008"]
        "fe:f0:00:00:02:01" -> "fe:f0:00:00:08:01" [label="1.000"]
        "fe:f0:00:00:02:01" -> "fe:f1:00:00:02:01" [label="TT"]
        "fe:f0:00:00:02:01" -> "00:00:43:05:00:02" [label="TT"]
        subgraph "cluster_fe:f0:00:00:08:01" {
                "fe:f0:00:00:08:01"
        }
[...]
}

to get a json vis output:

batadv-vis -f json
{ "primary" : "fe:f0:00:00:04:01" }
{ "router" : "fe:f0:00:00:04:01", "neighbor" : "fe:f0:00:00:05:01", "label" : "1.000" }
{ "router" : "fe:f0:00:00:04:01", "neighbor" : "fe:f0:00:00:03:01", "label" : "1.008" }
{ "router" : "fe:f0:00:00:04:01", "gateway" : "00:00:43:05:00:04", "label" : "TT" }
{ "router" : "fe:f0:00:00:04:01", "gateway" : "fe:f1:00:00:04:01", "label" : "TT" }
{ "primary" : "fe:f0:00:00:02:01" }
{ "router" : "fe:f0:00:00:02:01", "neighbor" : "fe:f0:00:00:03:01", "label" : "1.000" }
{ "router" : "fe:f0:00:00:02:01", "neighbor" : "fe:f0:00:00:01:01", "label" : "1.016" }
{ "router" : "fe:f0:00:00:02:01", "neighbor" : "fe:f0:00:00:08:01", "label" : "1.000" }
{ "router" : "fe:f0:00:00:02:01", "gateway" : "fe:f1:00:00:02:01", "label" : "TT" }
{ "router" : "fe:f0:00:00:02:01", "gateway" : "00:00:43:05:00:02", "label" : "TT" }
{ "primary" : "fe:f0:00:00:08:01" }
[...]

to get output where the complete document is json:

batadv-vis -f jsondoc
{
  "source_version" : "2013.3.0-14-gcd34783",
  "algorithm" : 4,
  "vis" : [
    { "primary" : "fe:f0:00:00:04:01",
      "neighbors" : [
         { "router" : "fe:f0:00:00:04:01",
           "neighbor" : "fe:f0:00:00:05:01",
           "metric" : "1.000" },
         { "router" : "fe:f0:00:00:04:01",
           "neighbor" : "fe:f0:00:00:03:01",
           "metric" : "1.008" }
      ],
      "clients" : [
         "00:00:43:05:00:04",
         "fe:f1:00:00:04:01"
      ]
    },
    { "primary" : "fe:f0:00:00:02:01",
      "neighbors" : [
         { "router" : "fe:f0:00:00:02:01",
           "neighbor" : "fe:f0:00:00:03:01",
        "metric" : "1.000" },
         { "router" : "fe:f0:00:00:02:01",
           "neighbor" : "fe:f0:00:00:01:01",
           "metric" : "1.016" },
         { "router" : "fe:f0:00:00:02:01",
           "neighbor" : "fe:f0:00:00:08:01",
           "metric" : "1.000" }
      ],
      "clients" : [
        "fe:f1:00:00:02:01",
        "00:00:43:05:00:02"
      ]
    },
    { "primary" : "fe:f0:00:00:08:01",
[...]

πŸ¦‹ SEE ALSO πŸ¦‹

alfred(8), batctl(8) β€” go read those too bestie, they're part of the whole ensemble πŸ’œ


πŸ‘‘ AUTHOR πŸ‘‘

batadv-vis was written by Simon Wunderlich <sw@simonwunderlich.de>.

this manual page was written by Simon Wunderlich <sw@simonwunderlich.de> and Sven Eckelmann <sven@open-mesh.com>.


and that's the whole page, bestie πŸ’– this was the Linux version from Sep 21, 2013 β€” iconic behavior from back in the day, fr fr. go visualize that mesh, slay ✨🌈🫢