tipc-config: increase receive buffer size

In order for tipc-config to be able to use the legacy ASCII
netlink API during the transition period.

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add new tipc tool framework

Add new tipc tool with framework for command line handling and netlink
interaction. No actual commands are added yet.

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add socket command

Add support for socket listing which lists all sockets with their
associated publication / connection info.

Add the following socket commands:

$ tipc socket list

(or abbreviated $ tipc s l)

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add misc.c with str2addr

Add misc.c with the function str2addr which is frequently used to
convert a human readable network address like 1.1.2 into a tipc internal
address (u32).

More miscellaneous helpers could be added to this file in the future.

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add node command

Add the following node commands:

$ tipc node list

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add nametable command

Add nametable commands:

$ tipc nametable show

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add bearer command

Add the following bearer commands:

$ tipc bearer disable
$ tipc bearer enable
$ tipc bearer list
$ tipc bearer priority set
$ tipc bearer priority get
$ tipc bearer tolerance set
$ tipc bearer tolerance get
$ tipc bearer window set
$ tipc bearer window get

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add media command

Add the following media commands:

$ tipc media list
$ tipc media priority set
$ tipc media priority get
$ tipc media tolerance set
$ tipc media tolerance get
$ tipc media window set
$ tipc media window get

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add link command

Add the following link commands:

$ tipc link list
$ tipc link priority set
$ tipc link priority get
$ tipc link tolerance set
$ tipc link tolerance get
$ tipc link window set
$ tipc link window get

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add net command

Add the following net commands:

$ tipc net id set
$ tipc net id show
$ tipc net address set
$ tipc net address show

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add version command

Add the following version commands:

$ tipc version

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: add address command

Add the following address commands:
$ tipc address set
$ tipc address show

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: update link and node list output format

To more closely resemble that of "tipc-config", we don't want to break
user scripts if we don't have a good reason for it.

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
Add tipc-config wrapper for tipc

This tipc wrapper is used in place of tipc-config if the configure
check determines that the system is running the newer version of the
kernel API.

The backwards compatibility of this wrapper is limited to basic
commands and it should be noted that the output of the underlying
"tipc" tool is similar but not identical to that of tipc-config.

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
Make do with any version of libnl3

I have tested with libnl 3.2.3-2 and it works fine.

Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: initialize option list when creating cmd struct

The option list was initialized in the constructor function for the
command. Real-world testing suggests this might segfault on some systems
as the constructor functions are not called in the correct order within
the compilation unit.

Initialize the option list when creating the cmd struct instead. This
should allow for out-of-order creation.

Signed-off-by: Andreas Bofjall <andreas@gazonk.org>
Signed-off-by: Richard Alpe <richard.alpe@ericsson.com>
tipc: redesign socket list

To accommodate kernel space changes we no longer reassemble
publications for the same socket. We now ask for a list of sockets
with TIPC_NL_SOCK_GET and if a socket has publications
(TIPC_NLA_SOCK_HAS_PUBL) we ask for them using TIPC_NL_PUBL_GET.

This is fairly slow for the worst case which is a high amount of
published sockets with only one or a few publications.