Skip to content
A New, Evolutive API and Transport-Layer Architecture for the Internet
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
debian
docs
examples
policy
rpm
socketapi
tests
.editorconfig
.gitignore
.travis.yml
CMakeLists.txt
License
README.md
autogen.sh
build-deb
clean-deb
cppcheck.sh
debian.conf
filter-empty-entries
make-deb
make-ppa
make-rpm
make-symbols
neat.h
neat_addr.c
neat_addr.h
neat_bsd.c
neat_bsd.h
neat_bsd_internal.h
neat_core.c
neat_core.h
neat_he.c
neat_he.h
neat_internal.h
neat_json_helpers.c
neat_json_helpers.h
neat_linux.c
neat_linux.h
neat_linux_internal.h
neat_log.c
neat_log.h
neat_pm_socket.c
neat_pm_socket.h
neat_pvd.c
neat_pvd.h
neat_qos.c
neat_qos.h
neat_queue.h
neat_resolver.c Refactoring and new he delay property (#424) Jan 10, 2018
neat_resolver.h resolver: Hack for handling localhost Jan 2, 2018
neat_resolver_conf.c
neat_resolver_conf.h
neat_resolver_helpers.c
neat_resolver_helpers.h prefix: rename private global functions to use nt_ prefix Aug 28, 2017
neat_security.c
neat_security.h
neat_stat.c
neat_stat.h
neat_swig.i
neat_unix_json_socket.c
neat_unix_json_socket.h
neat_usrsctp.c
neat_usrsctp.h
neat_usrsctp_internal.h
neat_webrtc.c
neat_webrtc_tools.c
neat_webrtc_tools.h
rename-symbols.sh
rpm.conf
sed-file
tls-trust.c
uncrustify-neat.cfg

README.md

A New, Evolutive API and Transport-Layer Architecture for the Internet

NEAT supports FreeBSD, Linux, OS X and NetBSD

NEAT internals 🔩

NEAT is a callback based library and everything revovles around the neat_ctx struct. This struct has to be initialized before anything else can be done. NEAT uses libuv as event library, and this loop is available to users so that they can hook in and add their own callbacks.

One of the first things done in NEAT after the library has been initialized is to start monitoring the available addresses on all interfaces of the machine. NEAT supports multi-homing and we must therefore have an up-to-date view of the available (and connected) network resources available on a machine. Address events are published using an internal event API, which users also can hook into. It is useful if only a small subset of NEAT is wanted, for example monitoring the preferred lifetime of a v6 address. Look at neat_resolver.c for an example on how to use this API. An address is stored in a platform-independent structure.

After NEAT has been initialized, it is up to the user to do what he or she wants. A typical first step is to resolve a domain name.

Requirements ☝️

  • cmake
  • libuv (version 1.9 or later)
  • ldns
  • ljansson (version 2.7 or later)
  • libmnl (linux only)
  • libsctp-dev (linux only, for kernel SCTP support)
  • swig (for generating Python bindings)
OS Install Dependencies
Debian/Ubuntu* apt-get install cmake libuv1-dev libldns-dev libjansson-dev libmnl-dev libsctp-dev swig
FreeBSD pkg install cmake libuv ldns jansson swig30
OS X brew install cmake libuv ldns jansson swig
* Ubuntu 15.04 and higher

Quickstart 🚀

$ cd <path-to-neat-src>
$ mkdir build && cd build
$ cmake ..
$ cmake --build .

This will generate makefiles and compile the library and the samples. You will find the shared and the static library in the build directory and the samples in build/examples directory. Note, that Python bindings are currently considered experimental and, therefore, have to be activated deliberately. To do so, change the first cmake call above to:

$ cmake .. -DSWIG_PYTHON=1

For an easy introduction to NEAT, have a look at our tutorial.

You may also look at neat_http_get.c in the samples directory for a practical example.

$ ./client_http_get www.neat-project.org

In order to (optionally) install the neat library simply run.

$ sudo make install

Don't forget to run ldconfig after installing neat the first time.

Read the docs 💡

Have a look at our documentation!

Buildbots 🔥

We are running buildbots to support our continuous integration process.

If you are only interested in a single branch, just add ?branch=BRANCHNAME to the URL. http://buildbot.nplab.de:28010/waterfall?branch=master

Links 🔗

Acknowledgement

This work has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No. 644334 (NEAT). The views expressed are solely those of the author(s).

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.