Add padding where needed and order structure when it makes alignment fall
naturally to better order, with a single padding at the end of structure.
Reference: http://www.catb.org/esr/structure-packing/
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Earlier main() had lots of temporary variables related to command line
parsing. By moving these to separate function runtime can forget these
variables when moving on. If nothing else this makes running gdb nicer when
debugging crashes, but as said stack memory should also be spared for better
purpose.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This way memory is allocated only for items that are in use, and walking
through shared network items is also more straightforward.
As an unfortunate side effect in --perfdata output shared networks are no
longer printed in reverse order. This should be a cosmetic issue.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Earlier variables magically appeared to scope of functions that took void as
argument. One could figure out perhaps they were globals, but programs that
do that are unnessarily hard to follow.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Based on José Bollo's mustache C implementation. This adaptation uses
project specific data structures to avoid overhead with json parsing.
Reference: https://gitlab.com/jobol/mustach.git
Commit: d84608a69033d38c81b8fcff0cb272e225dd5428
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
When --warning or --critical thresholds are defined with text output lines
that exceed threshold will be either yellow (warning) or red (critical).
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Current output makes some false-positives for situations when multiple
ranges are specified inside single network, for example:
subnet 10.0.0.0 netmask 255.255.254.0 {
...
range 10.0.0.1 10.0.0.254;
range 10.0.1.1 10.0.1.253;
...
}
An alert for range 10.0.0.1 - 10.0.0.254 will be raised even in situations
when range 10.0.1.1 - 10.0.1.253 is completely empty. To cope with this
issue, an -A option is added to treat all single networks as shared-network.
This option changes output for both range and shared networks output if
specified. Frankly saying, using network CIDR as network name is much more
sane for me than 'All Networks'.
Signed-off-by: Boris Lytochkin <lytboris@yandex-team.ru>
src/dhcpd-pools.c:193:18: warning: comparison of integers of different
signs: 'int' and 'unsigned long' [-Wsign-compare]
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Options -p or --perfdata (in alarming mode) now enable the output of
additional performance data, i.e. used, touched and backup addresses per
subnet.
Signed-off-by: Manuel Hachtkemper <hacman@math.uni-bonn.de>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Not all markups were quite right. The output_* functions must return an
int. The rest were as a matter of fact correct.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This make the table output good looking, and allows users to click table
headings to sort data by column without rerunning the analysis.
Unfortunately this change is breaking change, meaning the old CSS tags are
no longer supported, nor partial html output that printed only the table.
Proposed-by: Aaron Paetznick <aaronp@critd.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Alarm criteria based solely on percentage was found to be difficult to be
tricky to setup in environments that has small ranges and big shared-nets
mixed up together. These two new options should help making alarming more
useful.
Requested-by: Frank Bulk <fbulk@mypremieronline.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Some users may not want to have alarms about ranges that are part of a
shared-network, so allow them to suppress such.
Requested-by: Frank Bulk <fbulk@mypremieronline.com>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Use error(3) function, that has gnulib portability fixes, instead of err(3)
and warn(3) family.
Reported-by: Anton Tkachev <antont@bk.ru>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
The code selection will be set with function pointer, which avoids
numerous IP version checks. As a result with some inputs the analysis
runs quicker. Most users will not notice much of difference.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
When it is known IPv4 is in use there is no need to spend time with if
statements checking whether IPv6 is in use.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Some have configuration which combines small ranges such as one host, and
greater address ranges that are important to monitor. Especially the one
host ranges tend to cause a lot of false-positive alarms, as they are
immediately 100% full when a machine requests an address.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Some systems, such as freebsd, does not have program_invocation_short_name
available. There are also problems finding AF_INET{,6} definitions.
CC: Peter Fraser <p_fraser@hotmail.com>
Reported-by: Ryan Steinmetz <zi@freebsd.org>
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
[src/dhcpd-pools.c:68]: (style) The scope of the variable 'c' can be reduced.
[src/getdata.c:210]: (style) The scope of the variable 'c' can be reduced.
[src/hash.c:102]: (style) The scope of the variable 'l' can be reduced.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
The backup count was not printed at all. This bug was introduced in
version 2.17 (May 2012) when the uthash was taken in use.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
When ./configure --enable-doxygen is used one can browse internal api
documentation from docs/html directory.
Signed-off-by: Sami Kerola <kerolasa@iki.fi>