**************
* HOW TO BUILD

Are you on Linux?  Do you have make?  Do you have gcc?  Then type make and
wait...  well...  depends on your computer; on my computer, which was
manufactured back in 2016, it takes slightly longer than four seconds.
Okay, let's put it this way: type make, press Enter, slowly breathe in,
breathe out, and perhaps you're done.  The only external library this thing
depends on is libc, all the rest is included in the tarball, so don't worry
about the prerequisites.

If you're on on an older Linux, compiling of the feda-ng program may fail
complaining about something like SCHED_IDLE.  Then, just retry with smth.
like 

    make CONF="-DFEDA_NG_SCHED=0"

Besides, if your gcc is older than 5.*.*, you may need to remove the
command line options which disable some idiotic "new features" of the
compiler, such as colorful diagnostics and visualization of the error
context.  To do so, simply add CC=gcc, like this:

    make CONF="-DFEDA_NG_SCHED=0" CC=gcc

This may also be done with "build flavors" like this:

    make FLAVOR=oldlinux

To build on FreeBSD, first, be sure to use gmake (well, the default make on
BSDs is posix make, which is not supported here), and second, please use
"freebsd" build flavor, like this:

    gmake FLAVOR=freebsd

Please note this build flavor uses clang instead of gcc, but you can
override it adding ``CC=gcc'' on your command line.

I never tested this on other BSD systems such as OpenBSD nor NetBSD.  If
you try, please report your experience, both positive and negative.



***************
* WHAT'S THERE?

The following programs (binary executables) will be found in the src/
subdirectory after building:

  feda-ng        node master key generator
  feda-ct        challenge-response table manipulation
  fedakeys       cryptography infrastructure (keys and certs) control
  natcheck       program that checks your connectivity conditions
  fedaserv       the FEDAprotocol speaking server which, as of now,
                 is only capable of responding NAT check requests and
                 forward some IPv6 packets back and forth between
                 those peers which were manually ordered to connect
  fedactl        interactive control over the server via the local socket
  feda-if        (Linux only) preparing the virtual network device



*********************
* ISN'T IT ALL BUGGY?

Sure it is!



*******************
* WHAT DO I DO NOW?

Well, you might want to begin with checking your NAT: just run the natcheck
program, may be with -v, or even with -v -v.

The check requires a system of servers (at least two of them),
collaborating with each other. The servers I currently run are named
nc1.feda.croco.net, nc2.feda.croco.net and nc3.feda.croco.net. By default,
the first one is used as the main, and the other two play the sibling role.
However, if the main server is for any reason not available, please try any
of the other two, with a command like natcheck -v -v nc2.feda.croco.net.
Refer to the nat_types.txt file for details.

The next thing considerable to be done is to generate a node key and some
challenge-response tables.  See the file node_gen.txt.

Besides that, you can try running your own servers for NAT checking.
You'll need to have a node to do so, as each of the running servers needs a
point, and also you need access (unprivileged user access) to Unix machines
(at least two of them, but three is a recommended minimum).  See the
nc_servers.txt file.

The last thing we can offer now is to play with IPv6 forwarding a bit.  Not
much can be achieved down this direction; see the poormansvpn.txt file.

I'm afraid that's all you can do right now.

Errr... one more thing: you might consider sending me a monetary donation
so that I can continue my work on the FEDAnet software.  See

    http://feda.croco.net/donate.html

for the related information.

