#
# Copyright (C) 2010-2026 Red Hat, Inc.  All rights reserved.
#
# Author: Fabio M. Di Nitto <fabbione@kronosnet.org>
#
# This software licensed under GPL-2.0+
#

Upstream resources
------------------

https://github.com/kronosnet/kronosnet/
https://ci.kronosnet.org/
https://projects.clusterlabs.org/project/board/86/ (TODO list and activities tracking)
https://drive.google.com/drive/folders/0B_zxAPgZTkM_TklfYzN6a2FYUFE?resourcekey=0-Cfr5D94rZ8LVbeMPGjxbdg&usp=sharing (google shared drive)
https://lists.kronosnet.org/mailman3/postorius/lists/users.lists.kronosnet.org/
https://lists.kronosnet.org/mailman3/postorius/lists/devel.lists.kronosnet.org/
https://lists.kronosnet.org/mailman3/postorius/lists/commits.lists.kronosnet.org/
https://kronosnet.org/ (web 0.1 style)
IRC: #kronosnet on Libera.Chat

Architecture
------------

Please refer to the google shared drive Presentations directory for
diagrams and fancy schemas

Dependancies
------------
kronosnet has few obligatory dependancies, though it is strongly recommended
that you build it with at least one crypto library enabled.

It does, however, require libqb for both the doxygen2man tool (for creating
the API man pages) and headers for list manipulation.
You can get these from installing libqb from source or libqb-devel package, and
your distro might provide doxgen2man as its own package.

Running on FreeBSD
-----------------------

knet requires big socket buffers and you need to set:
kern.ipc.maxsockbuf=18388608
net.local.dgram.maxdgram=131072
in /etc/sysctl.conf or knet will fail to run.

For version 12 (or lower), knet requires also:
net.inet.sctp.blackhole=1
in /etc/sysctl.conf or knet will fail to work with SCTP.
This sysctl is obsoleted in version 13.

libnozzle requires if_tap.ko loaded in the kernel.

Please avoid to use ifconfig_DEFAULT in /etc/rc.conf to use
DHCP for all interfaces or the dhclient will interfere with
libnozzle interface management, causing errors on some
operations such as "ifconfig tap down".

Building on Solaris / Illumos
-----------------------------

tested on SunOS openindiana-x86-64 5.11 illumos-5b6ecd7fe9:

# pkg install autoconf automake libtool pkg-config \
      gcc-14 gnu-binutils gnu-coreutils gnu-make \
      check system/mozilla-nss doxygen \
      header-tun tun

optional:

# pkg install developer/clang-20

GNU tools must be preferred:

# export PATH=/usr/gnu/bin:$PATH

mozilla-nss is currently broken in oi-userland and does not ship pkg-config files

# ./autogen.sh && ./configure --disable-crypto-nss

# make all -j && make check

Running on Solaris / Illumos
----------------------------

Tune socket buffers for the protocol you intend to use:

ipadm set-prop -p max_buf=8388608 sctp
ipadm set-prop -p max_buf=8388608 udp

For KNET_DATAFD_FLAG_RX_RETURN_INFO support (datagrams >64KB), add to /etc/system and reboot:

set strmsgsz=131072

This increases the TL (loopback transport) TIDU size for Unix domain sockets
