Provided by: alfred_2023.0-1_amd64 bug

NAME

       alfred - Almighty Lightweight Fact Remote Exchange Daemon

SYNOPSIS

       alfred [options]

DESCRIPTION

       alfred is a user space daemon for distributing arbitrary local information over the
       mesh/network in a decentralized fashion. This data can be anything which appears to be
       useful - originally designed to replace the batman-adv visualization (vis), you may
       distribute hostnames, phone books, administration information, DNS information, the local
       weather forecast ...

       alfred runs as daemon in the background of the system. A user may insert information by
       using the alfred binary on the command line, or use special programs to communicate with
       alfred (done via unix sockets). alfred then takes care of distributing the local
       information to other alfred servers on other nodes. This is done via IPv6 link-local
       multicast, and does not require any configuration. A user can request data from alfred,
       and will receive the information available from all alfred servers in the network.

OPTIONS

       -v, --version
              Print the version

       -h, --help
              Display a brief help message.

       -u, --unix-path path
              path to unix socket used for client-server communication.

CLIENT OPTIONS

       -s, --set-data data-type
              Sets new data to distribute from stdin for the supplied data type (0-255).

              Note that 0 - 63 are reserved (please send an e-mail to the authors if you want to
              register a datatype), and can not be used on the commandline. Information must be
              periodically written again to alfred, otherwise it will timeout and alfred will
              forget about it (after 10 minutes).

       -r, --request data-type
              Collect data from the network and print on stdout

       -d, --verbose
              Show extra information in the data output

       -d, --force
              Start server even when batman-adv or interface(s) are not yet available.

       -V, --req-version version
              Specify the data version set for -s

              Skipping the parameter entirely has the same effect as setting the parameter to 0
              ('-V 0').

       -M, --modeswitch mode
              primary
                  Switch daemon to mode primary
              secondary
                  Switch daemon to mode secondary

       -I, --change-interface interface
              Change the alfred server to use the new interface(s)

       -B, --change-bat-iface interface
              Change the alfred server to use the new batman-adv interface

       -S, --server-status
              Request server status information such as mode & interfaces

       -E, --event-monitor
              Start alfred event monitor connecting to the alfred server and reporting update
              events

SERVER OPTIONS

       -i, --interface iface
              Specify the interface (or comma separated list of interfaces) to listen on.  Use
              'none' to disable interface operations.

       -b batmanif
              Specify the batman-adv interface configured on the system (default: bat0).  Use
              'none' to disable the batman-adv based best server selection.

              The interface option -i is optional. If interface 'none' is specified, the alfred
              daemon will not communicate with other alfred instances on the network unless the
              interface list is modified at runtime via the unix socket.  The -b option is
              optional, and only needed if you run alfred on a batman-adv interface not called
              bat0, or if you don't use batman-adv at all (use '-b none'). In this case, alfred
              will still work but will not be able to find the best next primary server based on
              metrics.

       -m, --primary
              Start up the daemon in primary mode, which accepts data from secondaries and syncs
              it with other primaries.

              alfred servers may either run as primary or secondary in the network. Primaries
              will announce their status via broadcast, so that secondaries can find them.
              Secondaries will then send their data to their nearest primary (based on TQ).
              Primaries will exchange their data (which they have received from secondaries or
              got on their own) with other primaries. By using primaries and secondaries,
              overhead can be reduced while still keeping redundancy (by having multiple
              primaries). Obviously, at least one primary must be present in the network to let
              any data exchange happen. Also having all nodes in primary mode is possible (for
              maximum decentrality and overhead).

       -c, --update-command command
              Specify command to execute on data change. It will be called with data-type list as
              arguments.

       -p, --sync-period period
              Specify alfred synchronization period, in seconds. If not specified, the default
              ALFRED_INTERVAL setting of 10 seconds will be used. Fractional seconds are
              supported.

       -4 group-address
              Specify the IPv4 multicast group address and enable IPv4 data-sharing (disabling
              IPv6 communication). This option is required on systems that do not support IPv6
              addressing.

EXAMPLES

       Start an alfred server listening on bridge br0 (assuming that this bridge includes the
       batman interface bat0):
            alfred -i br0 -m

       Send data to the alfred server and store it under id 65:
            cat /etc/hostname | alfred -s 65

       Retrieve all data stored as id 65 from all connected alfred servers:
            alfred -r 65
            { "fe:f1:00:00:01:01", "OpenWRT-node-1\x0a" },
            { "fe:f1:00:00:02:01", "OpenWRT-node-2\x0a" },
            { "fe:f1:00:00:03:01", "OpenWRT-node-3\x0a" },

SEE ALSO

       batadv-vis(8), batctl(8)

AUTHOR

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

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