From 813e320b68dea6ada1124fac01fc6c40146dd50c Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Wed, 15 Nov 2017 20:09:52 +0000 Subject: [PATCH 01/53] webpage: add instructions how to get output you need Signed-off-by: Sami Kerola --- webpages/index.html | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/webpages/index.html b/webpages/index.html index cd5bb7f..76feeb1 100644 --- a/webpages/index.html +++ b/webpages/index.html @@ -66,6 +66,24 @@ file. manual page, and Doxygen software reference documentation are available online.

+

Getting the output you need

+
    +
  1. Start with:
    +dhcpd-pools --config=path +--leases=path --color=always --format=text
  2. +
  3. Play with options and see how output changes. Options to +try:
    +--all-as-shared --crit-count +--critical --minsize --snet-alarms --warn-count +--warning
  4. +
  5. Start filtering output. Options to try:
    +--skip --limit
  6. +
  7. Change --format +option to what you need, and maybe include --perfdata if you want nagios alarm +format.
  8. +
  9. Done.
  10. +

Reference information

From 2849dde21bf6c2f41880c9770f36454c2bf2ed2c Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 26 Nov 2017 11:47:23 +0000 Subject: [PATCH 02/53] build-sys: add coverage files to .gitignore Signed-off-by: Sami Kerola --- .gitignore | 3 +++ lib/.gitignore | 2 ++ 2 files changed, 5 insertions(+) diff --git a/.gitignore b/.gitignore index 24f1410..d63edb6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ # Wildcard + in any subdir. *.o +*.gcno +*.gcda +*.[ch].gcov # Exact filename in any subdir. .deps diff --git a/lib/.gitignore b/lib/.gitignore index 0de1e31..8d9f964 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -115,6 +115,8 @@ /ref-del.sed /ref-del.sin /setenv.c +/stat-time.c +/stat-time.h /stat-w32.c /stat-w32.h /stat.c From 447241e6c3bd05cf186af0e1c701a7314e62bd9b Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 26 Nov 2017 15:14:49 +0000 Subject: [PATCH 03/53] tests: improve coverage Add error condition checks. Add lease file binding states. Check all output formats. Check leases file that is in mad order, cse all sorting methods when checking this. Use json output to check status classfications. Add cidr range checks. Add conf include and comment parsing input checks. Signed-off-by: Sami Kerola --- tests/Makemodule.am | 8 + tests/binding-states | 14 ++ tests/cidr-v4 | 1 + tests/cidr-v6 | 1 + tests/confs/binding-states | 1 + tests/confs/cidr-v4 | 31 ++++ tests/confs/cidr-v6 | 10 ++ tests/confs/formats | 1 + tests/confs/shnet-alarm | 32 +--- tests/confs/shufled | 1 + tests/confs/statuses | 1 + tests/errors | 48 ++++++ tests/expected/big-small | 11 +- tests/expected/binding-states | 16 ++ tests/expected/bootp | 11 +- tests/expected/cidr-v4 | 16 ++ tests/expected/cidr-v6 | 11 ++ tests/expected/errors | 18 +++ tests/expected/formats | 284 ++++++++++++++++++++++++++++++++++ tests/expected/parser | 1 + tests/expected/shufled | 16 ++ tests/expected/statuses | 29 ++++ tests/formats | 37 +++++ tests/leases/binding-states | 241 +++++++++++++++++++++++++++++ tests/leases/cidr-v4 | 1 + tests/leases/cidr-v6 | 1 + tests/leases/formats | 1 + tests/leases/parser | 1 + tests/leases/shufled | 198 ++++++++++++++++++++++++ tests/leases/statuses | 1 + tests/parser | 30 ++++ tests/shufled | 15 ++ tests/statuses | 22 +++ 33 files changed, 1059 insertions(+), 51 deletions(-) create mode 100755 tests/binding-states create mode 120000 tests/cidr-v4 create mode 120000 tests/cidr-v6 create mode 120000 tests/confs/binding-states create mode 100644 tests/confs/cidr-v4 create mode 100644 tests/confs/cidr-v6 create mode 120000 tests/confs/formats mode change 100644 => 120000 tests/confs/shnet-alarm create mode 120000 tests/confs/shufled create mode 120000 tests/confs/statuses create mode 100755 tests/errors mode change 100644 => 120000 tests/expected/big-small create mode 100644 tests/expected/binding-states mode change 100644 => 120000 tests/expected/bootp create mode 100644 tests/expected/cidr-v4 create mode 100644 tests/expected/cidr-v6 create mode 100644 tests/expected/errors create mode 100644 tests/expected/formats create mode 120000 tests/expected/parser create mode 100644 tests/expected/shufled create mode 100644 tests/expected/statuses create mode 100755 tests/formats create mode 100644 tests/leases/binding-states create mode 120000 tests/leases/cidr-v4 create mode 120000 tests/leases/cidr-v6 create mode 120000 tests/leases/formats create mode 120000 tests/leases/parser create mode 100644 tests/leases/shufled create mode 120000 tests/leases/statuses create mode 100755 tests/parser create mode 100755 tests/shufled create mode 100755 tests/statuses diff --git a/tests/Makemodule.am b/tests/Makemodule.am index 1372324..8e31e8e 100644 --- a/tests/Makemodule.am +++ b/tests/Makemodule.am @@ -11,21 +11,29 @@ TESTS = \ tests/alarm-warning-snets \ tests/shnet-alarm \ tests/big-small \ + tests/binding-states \ tests/bootp \ + tests/cidr-v4 \ + tests/cidr-v6 \ tests/complete \ tests/complete-perfdata \ tests/empty \ + tests/errors \ tests/full-json \ tests/full-xml \ + tests/formats \ tests/leading0 \ tests/one-ip \ tests/one-line \ + tests/parser \ tests/range4 \ tests/range6 \ tests/same-twice \ + tests/shufled \ tests/simple \ tests/skip \ tests/sorts \ + tests/statuses \ tests/v6 \ tests/v6-perfdata diff --git a/tests/binding-states b/tests/binding-states new file mode 100755 index 0000000..a5e98d0 --- /dev/null +++ b/tests/binding-states @@ -0,0 +1,14 @@ +#!/bin/sh +# +# Minimal regression test suite. + +IAM=$(basename $0) + +if [ ! -d tests/outputs ]; then + mkdir tests/outputs +fi + +dhcpd-pools -c $top_srcdir/tests/confs/$IAM --color=never \ + -l $top_srcdir/tests/leases/$IAM -o tests/outputs/$IAM +diff -u $top_srcdir/tests/expected/$IAM tests/outputs/$IAM +exit $? diff --git a/tests/cidr-v4 b/tests/cidr-v4 new file mode 120000 index 0000000..61a58b0 --- /dev/null +++ b/tests/cidr-v4 @@ -0,0 +1 @@ +test.sh \ No newline at end of file diff --git a/tests/cidr-v6 b/tests/cidr-v6 new file mode 120000 index 0000000..61a58b0 --- /dev/null +++ b/tests/cidr-v6 @@ -0,0 +1 @@ +test.sh \ No newline at end of file diff --git a/tests/confs/binding-states b/tests/confs/binding-states new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/confs/binding-states @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/confs/cidr-v4 b/tests/confs/cidr-v4 new file mode 100644 index 0000000..18ba31c --- /dev/null +++ b/tests/confs/cidr-v4 @@ -0,0 +1,31 @@ +shared-network example1 { + subnet 10.0.0.0 netmask 255.255.255.0 { + pool { + range 10.0.0.1/27; + } + } + subnet 10.1.0.0 netmask 255.255.255.0 { + pool { + range 10.1.0.1/27; + } + } +} + +shared-network example2 { + subnet 10.2.0.0 netmask 255.255.255.0 { + pool { + range 10.2.0.1/27; + } + } + subnet 10.3.0.0 netmask 255.255.255.0 { + pool { + range 10.3.0.1/27; + } + } +} + +subnet 10.4.0.0 netmask 255.255.255.0 { + pool { + range 10.4.0.1/28; + } +} diff --git a/tests/confs/cidr-v6 b/tests/confs/cidr-v6 new file mode 100644 index 0000000..a57036c --- /dev/null +++ b/tests/confs/cidr-v6 @@ -0,0 +1,10 @@ +subnet6 dead:abba:1000::/56 { + range6 dead:abba:1000::2/120; + prefix6 dead:abba:1000:0100:: dead:abba:1000:ff00::/56; +} + +subnet6 dead:abba:40ff::/56 { + range6 dead:abba:4000::2/120; + prefix6 dead:abba:4000:0100:: dead:abba:4000:ff00::/56; +} + diff --git a/tests/confs/formats b/tests/confs/formats new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/confs/formats @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/confs/shnet-alarm b/tests/confs/shnet-alarm deleted file mode 100644 index 0ef9eb0..0000000 --- a/tests/confs/shnet-alarm +++ /dev/null @@ -1,31 +0,0 @@ -shared-network example1 { - subnet 10.0.0.0 netmask 255.255.255.0 { - pool { - range 10.0.0.1 10.0.0.20; - } - } - subnet 10.1.0.0 netmask 255.255.255.0 { - pool { - range 10.1.0.1 10.1.0.20; - } - } -} - -shared-network example2 { - subnet 10.2.0.0 netmask 255.255.255.0 { - pool { - range 10.2.0.1 10.2.0.20; - } - } - subnet 10.3.0.0 netmask 255.255.255.0 { - pool { - range 10.3.0.1 10.3.0.20; - } - } -} - -subnet 10.4.0.0 netmask 255.255.255.0 { - pool { - range 10.4.0.1 10.4.0.20; - } -} diff --git a/tests/confs/shnet-alarm b/tests/confs/shnet-alarm new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/confs/shnet-alarm @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/confs/shufled b/tests/confs/shufled new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/confs/shufled @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/confs/statuses b/tests/confs/statuses new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/confs/statuses @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/errors b/tests/errors new file mode 100755 index 0000000..49a4f11 --- /dev/null +++ b/tests/errors @@ -0,0 +1,48 @@ +#!/bin/sh +# +# Test error inputs. + +IAM=$(basename $0) + +if [ ! -d tests/outputs ]; then + mkdir tests/outputs +fi + +echo '=== output mask' >| tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + -L 88 >> tests/outputs/$IAM 2>&1 + +echo '=== unknown specifier' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + --skip=okish >> tests/outputs/$IAM 2>&1 + +echo '=== color mode' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + --color=sometimes >> tests/outputs/$IAM 2>&1 + +echo '=== IPv5' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + --ip-version=5 >> tests/outputs/$IAM 2>&1 + +echo '=== missing conf' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete_NXFILE -l $top_srcdir/tests/leases/complete 2>&1 | \ + sed 's/: ..\/..\/tests/: .\/tests/'>> tests/outputs/$IAM + +echo '=== missing leases' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete_NXFILE 2>&1 | \ + sed 's/: ..\/..\/tests/: .\/tests/' >> tests/outputs/$IAM + +echo '=== html table' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + --format=html >> tests/outputs/$IAM 2>&1 + +echo '=== none existing format' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + -fz >> tests/outputs/$IAM 2>&1 + +echo '=== broken percent input' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + --warning=eighty >> tests/outputs/$IAM 2>&1 + +diff -u $top_srcdir/tests/expected/$IAM tests/outputs/$IAM +exit $? diff --git a/tests/expected/big-small b/tests/expected/big-small deleted file mode 100644 index da14b05..0000000 --- a/tests/expected/big-small +++ /dev/null @@ -1,10 +0,0 @@ -Ranges: -shared net name first ip last ip max cur percent touch t+c t+c perc -All networks 10.0.0.1 - 10.0.0.10 10 10 100.000 0 10 100.000 - -Shared networks: -name max cur percent touch t+c t+c perc - -Sum of all ranges: -name max cur percent touch t+c t+c perc -All networks 10 10 100.000 0 10 100.000 diff --git a/tests/expected/big-small b/tests/expected/big-small new file mode 120000 index 0000000..8fd3246 --- /dev/null +++ b/tests/expected/big-small @@ -0,0 +1 @@ +simple \ No newline at end of file diff --git a/tests/expected/binding-states b/tests/expected/binding-states new file mode 100644 index 0000000..840db2c --- /dev/null +++ b/tests/expected/binding-states @@ -0,0 +1,16 @@ +Ranges: +shared net name first ip last ip max cur percent touch t+c t+c perc bu bu perc +example1 10.0.0.1 - 10.0.0.20 20 4 20.000 3 7 35.000 2 10.000 +example1 10.1.0.1 - 10.1.0.20 20 10 50.000 0 10 50.000 0 0.000 +example2 10.2.0.1 - 10.2.0.20 20 8 40.000 0 8 40.000 0 0.000 +example2 10.3.0.1 - 10.3.0.20 20 9 45.000 0 9 45.000 0 0.000 +All networks 10.4.0.1 - 10.4.0.20 20 5 25.000 0 5 25.000 0 0.000 + +Shared networks: +name max cur percent touch t+c t+c perc bu bu perc +example1 40 14 35.000 3 17 42.500 2 5.000 +example2 40 17 42.500 0 17 42.500 0 0.000 + +Sum of all ranges: +name max cur percent touch t+c t+c perc bu bu perc +All networks 100 36 36.000 3 39 39.000 2 2.000 diff --git a/tests/expected/bootp b/tests/expected/bootp deleted file mode 100644 index da14b05..0000000 --- a/tests/expected/bootp +++ /dev/null @@ -1,10 +0,0 @@ -Ranges: -shared net name first ip last ip max cur percent touch t+c t+c perc -All networks 10.0.0.1 - 10.0.0.10 10 10 100.000 0 10 100.000 - -Shared networks: -name max cur percent touch t+c t+c perc - -Sum of all ranges: -name max cur percent touch t+c t+c perc -All networks 10 10 100.000 0 10 100.000 diff --git a/tests/expected/bootp b/tests/expected/bootp new file mode 120000 index 0000000..8fd3246 --- /dev/null +++ b/tests/expected/bootp @@ -0,0 +1 @@ +simple \ No newline at end of file diff --git a/tests/expected/cidr-v4 b/tests/expected/cidr-v4 new file mode 100644 index 0000000..db0e50e --- /dev/null +++ b/tests/expected/cidr-v4 @@ -0,0 +1,16 @@ +Ranges: +shared net name first ip last ip max cur percent touch t+c t+c perc +example1 10.0.0.1 - 10.0.0.31 31 11 35.484 0 11 35.484 +example1 10.1.0.1 - 10.1.0.31 31 10 32.258 0 10 32.258 +example2 10.2.0.1 - 10.2.0.31 31 8 25.806 0 8 25.806 +example2 10.3.0.1 - 10.3.0.31 31 9 29.032 0 9 29.032 +All networks 10.4.0.1 - 10.4.0.15 15 5 33.333 0 5 33.333 + +Shared networks: +name max cur percent touch t+c t+c perc +example1 62 21 33.871 0 21 33.871 +example2 62 17 27.419 0 17 27.419 + +Sum of all ranges: +name max cur percent touch t+c t+c perc +All networks 139 43 30.935 0 43 30.935 diff --git a/tests/expected/cidr-v6 b/tests/expected/cidr-v6 new file mode 100644 index 0000000..04a2462 --- /dev/null +++ b/tests/expected/cidr-v6 @@ -0,0 +1,11 @@ +Ranges: +shared net name first ip last ip max cur percent touch t+c t+c perc +All networks dead:abba:1000::2 - dead:abba:1000::ff 254 0 0.000 0 0 0.000 +All networks dead:abba:4000::2 - dead:abba:4000::ff 254 1 0.394 0 1 0.394 + +Shared networks: +name max cur percent touch t+c t+c perc + +Sum of all ranges: +name max cur percent touch t+c t+c perc +All networks 508 1 0.197 0 1 0.197 diff --git a/tests/expected/errors b/tests/expected/errors new file mode 100644 index 0000000..b85e282 --- /dev/null +++ b/tests/expected/errors @@ -0,0 +1,18 @@ +=== output mask +dhcpd-pools: return_limit: output mask '88' is illegal +=== unknown specifier +dhcpd-pools: unknown --skip specifier: okish +=== color mode +dhcpd-pools: unknown color mode: 'sometimes' +=== IPv5 +dhcpd-pools: unknown --ip-version argument: 5 +=== missing conf +dhcpd-pools: parse_config: ./tests/confs/complete_NXFILE: No such file or directory +=== missing leases +dhcpd-pools: parse_leases: ./tests/leases/complete_NXFILE: No such file or directory +=== html table +dhcpd-pools: html table only output format is deprecated +=== none existing format +dhcpd-pools: unknown output format: 'z' +=== broken percent input +dhcpd-pools: illegal argument: 'eighty' diff --git a/tests/expected/formats b/tests/expected/formats new file mode 100644 index 0000000..6aa6432 --- /dev/null +++ b/tests/expected/formats @@ -0,0 +1,284 @@ +=== color text +Ranges: +shared net name first ip last ip max cur percent touch t+c t+c perc +example1 10.0.0.1 - 10.0.0.20 20 11 55.000 0 11 55.000 +example1 10.1.0.1 - 10.1.0.20 20 10 50.000 0 10 50.000 +example2 10.2.0.1 - 10.2.0.20 20 8 40.000 0 8 40.000 +example2 10.3.0.1 - 10.3.0.20 20 9 45.000 0 9 45.000 +All networks 10.4.0.1 - 10.4.0.20 20 5 25.000 0 5 25.000 + +Shared networks: +name max cur percent touch t+c t+c perc +example1 40 21 52.500 0 21 52.500 +example2 40 17 42.500 0 17 42.500 + +Sum of all ranges: +name max cur percent touch t+c t+c perc +All networks 100 43 43.000 0 43 43.000 +=== html + + + +ISC dhcpd dhcpd-pools output + + + + + + + + +

+

ISC DHCPD status

+

Sum of all

+ + + + + + + + + + + + + + + + + + + + + + + + + +
namemaxcurfreepercenttoucht+ct+c perc
All networks100435743.00004343.000
+

Shared networks

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
namemaxcurfreepercenttoucht+ct+c perc
example140211952.502152.500
example240172342.501742.500
+

Ranges

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
shared net namefirst iplast ipmaxcurfreepercenttoucht+ct+c perc
example110.0.0.110.0.0.20201195501155.000
example110.1.0.110.1.0.202010105001050.000
example210.2.0.110.2.0.2020812400840.000
example210.3.0.110.3.0.2020911450945.000
All networks10.4.0.110.4.0.2020515250525.000
+
+ + + + + +=== xml + + + example1 + 10.0.0.1 - 10.0.0.20 + 20 + 11 + 0 + 9 + + + example1 + 10.1.0.1 - 10.1.0.20 + 20 + 10 + 0 + 10 + + + example2 + 10.2.0.1 - 10.2.0.20 + 20 + 8 + 0 + 12 + + + example2 + 10.3.0.1 - 10.3.0.20 + 20 + 9 + 0 + 11 + + + All networks + 10.4.0.1 - 10.4.0.20 + 20 + 5 + 0 + 15 + + + example1 + 40 + 21 + 0 + 19 + + + example2 + 40 + 17 + 0 + 23 + + + All networks + 100 + 43 + 0 + 57 + + +=== csv +"Ranges:" +"shared net name","first ip","last ip","max","cur","percent","touch","t+c","t+c perc" +"example1","10.0.0.1","10.0.0.20","20","11","55.000","0","11","55.000" +"example1","10.1.0.1","10.1.0.20","20","10","50.000","0","10","50.000" +"example2","10.2.0.1","10.2.0.20","20","8","40.000","0","8","40.000" +"example2","10.3.0.1","10.3.0.20","20","9","45.000","0","9","45.000" +"All networks","10.4.0.1","10.4.0.20","20","5","25.000","0","5","25.000" + +"Shared networks:" +"name","max","cur","percent","touch","t+c","t+c perc" +"example1","40","21","52.500","0","21","52.500" +"example2","40","17","42.500","0","17","42.500" + +"Sum of all ranges:" +"name","max","cur","percent","touch","t+c","t+c perc" +"All networks","100","43","43.000","0","43","43.000" +=== json +{ + "subnets": [ + { "location":"example1", "range":"10.0.0.1 - 10.0.0.20", "first_ip":"10.0.0.1", "last_ip":"10.0.0.20", "defined":20, "used":11, "touched":0, "free":9, "percent":55, "touch_count":11, "touch_percent":55, "status":0 }, + { "location":"example1", "range":"10.1.0.1 - 10.1.0.20", "first_ip":"10.1.0.1", "last_ip":"10.1.0.20", "defined":20, "used":10, "touched":0, "free":10, "percent":50, "touch_count":10, "touch_percent":50, "status":0 }, + { "location":"example2", "range":"10.2.0.1 - 10.2.0.20", "first_ip":"10.2.0.1", "last_ip":"10.2.0.20", "defined":20, "used":8, "touched":0, "free":12, "percent":40, "touch_count":8, "touch_percent":40, "status":0 }, + { "location":"example2", "range":"10.3.0.1 - 10.3.0.20", "first_ip":"10.3.0.1", "last_ip":"10.3.0.20", "defined":20, "used":9, "touched":0, "free":11, "percent":45, "touch_count":9, "touch_percent":45, "status":0 }, + { "location":"All networks", "range":"10.4.0.1 - 10.4.0.20", "first_ip":"10.4.0.1", "last_ip":"10.4.0.20", "defined":20, "used":5, "touched":0, "free":15, "percent":25, "touch_count":5, "touch_percent":25, "status":0 } + ], + "shared-networks": [ + { "location":"example1", "defined":40, "used":21, "touched":0, "free":19, "percent":52.5, "touch_count":21, "touch_percent":52.5, "status":0 }, + { "location":"example2", "defined":40, "used":17, "touched":0, "free":23, "percent":42.5, "touch_count":17, "touch_percent":42.5, "status":0 } + ] +} +=== perfdata +CRITICAL: dhcpd-pools: Ranges - crit: 3 warn: 2 ok: 0; | range_crit=3 range_warn=2 range_ok=0 10.4.0.1_r=5;4;8;0;20 10.4.0.1_rt=0 10.3.0.1_r=9;4;8;0;20 10.3.0.1_rt=0 10.2.0.1_r=8;4;8;0;20 10.2.0.1_rt=0 10.1.0.1_r=10;4;8;0;20 10.1.0.1_rt=0 10.0.0.1_r=11;4;8;0;20 10.0.0.1_rt=0 +Shared nets - crit: 2 warn: 0 ok: 0; | snet_crit=2 snet_warn=0 snet_ok=0 'example1_s'=21;8;16;0;40 'example1_st'=0 'example2_s'=17;8;16;0;40 'example2_st'=0 + diff --git a/tests/expected/parser b/tests/expected/parser new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/expected/parser @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/expected/shufled b/tests/expected/shufled new file mode 100644 index 0000000..ed34a85 --- /dev/null +++ b/tests/expected/shufled @@ -0,0 +1,16 @@ +Ranges: +shared net name first ip last ip max cur percent touch t+c t+c perc +All networks 10.4.0.1 - 10.4.0.20 20 3 15.000 0 3 15.000 +example1 10.0.0.1 - 10.0.0.20 20 9 45.000 0 9 45.000 +example1 10.1.0.1 - 10.1.0.20 20 4 20.000 0 4 20.000 +example2 10.2.0.1 - 10.2.0.20 20 4 20.000 0 4 20.000 +example2 10.3.0.1 - 10.3.0.20 20 3 15.000 0 3 15.000 + +Shared networks: +name max cur percent touch t+c t+c perc +example1 40 13 32.500 0 13 32.500 +example2 40 7 17.500 0 7 17.500 + +Sum of all ranges: +name max cur percent touch t+c t+c perc +All networks 100 23 23.000 0 23 23.000 diff --git a/tests/expected/statuses b/tests/expected/statuses new file mode 100644 index 0000000..908b5a2 --- /dev/null +++ b/tests/expected/statuses @@ -0,0 +1,29 @@ +{ + "subnets": [ + { "location":"example1", "range":"10.0.0.1 - 10.0.0.20", "first_ip":"10.0.0.1", "last_ip":"10.0.0.20", "defined":20, "used":11, "touched":0, "free":9, "percent":55, "touch_count":11, "touch_percent":55, "status":4 }, + { "location":"example1", "range":"10.1.0.1 - 10.1.0.20", "first_ip":"10.1.0.1", "last_ip":"10.1.0.20", "defined":20, "used":10, "touched":0, "free":10, "percent":50, "touch_count":10, "touch_percent":50, "status":4 }, + { "location":"example2", "range":"10.2.0.1 - 10.2.0.20", "first_ip":"10.2.0.1", "last_ip":"10.2.0.20", "defined":20, "used":8, "touched":0, "free":12, "percent":40, "touch_count":8, "touch_percent":40, "status":4 }, + { "location":"example2", "range":"10.3.0.1 - 10.3.0.20", "first_ip":"10.3.0.1", "last_ip":"10.3.0.20", "defined":20, "used":9, "touched":0, "free":11, "percent":45, "touch_count":9, "touch_percent":45, "status":4 }, + { "location":"10.4.0.0/24", "range":"10.4.0.1 - 10.4.0.20", "first_ip":"10.4.0.1", "last_ip":"10.4.0.20", "defined":20, "used":5, "touched":0, "free":15, "percent":25, "touch_count":5, "touch_percent":25, "status":4 } + ], + "shared-networks": [ + { "location":"example1", "defined":40, "used":21, "touched":0, "free":19, "percent":52.5, "touch_count":21, "touch_percent":52.5, "status":2 }, + { "location":"example2", "defined":40, "used":17, "touched":0, "free":23, "percent":42.5, "touch_count":17, "touch_percent":42.5, "status":2 }, + { "location":"10.4.0.0/24", "defined":20, "used":5, "touched":0, "free":15, "percent":25, "touch_count":5, "touch_percent":25, "status":1 } + ] +} +== minsize +{ + "subnets": [ + { "location":"example1", "range":"10.0.0.1 - 10.0.0.20", "first_ip":"10.0.0.1", "last_ip":"10.0.0.20", "defined":20, "used":11, "touched":0, "free":9, "percent":55, "touch_count":11, "touch_percent":55, "status":3 }, + { "location":"example1", "range":"10.1.0.1 - 10.1.0.20", "first_ip":"10.1.0.1", "last_ip":"10.1.0.20", "defined":20, "used":10, "touched":0, "free":10, "percent":50, "touch_count":10, "touch_percent":50, "status":3 }, + { "location":"example2", "range":"10.2.0.1 - 10.2.0.20", "first_ip":"10.2.0.1", "last_ip":"10.2.0.20", "defined":20, "used":8, "touched":0, "free":12, "percent":40, "touch_count":8, "touch_percent":40, "status":3 }, + { "location":"example2", "range":"10.3.0.1 - 10.3.0.20", "first_ip":"10.3.0.1", "last_ip":"10.3.0.20", "defined":20, "used":9, "touched":0, "free":11, "percent":45, "touch_count":9, "touch_percent":45, "status":3 }, + { "location":"10.4.0.0/24", "range":"10.4.0.1 - 10.4.0.20", "first_ip":"10.4.0.1", "last_ip":"10.4.0.20", "defined":20, "used":5, "touched":0, "free":15, "percent":25, "touch_count":5, "touch_percent":25, "status":3 } + ], + "shared-networks": [ + { "location":"example1", "defined":40, "used":21, "touched":0, "free":19, "percent":52.5, "touch_count":21, "touch_percent":52.5, "status":2 }, + { "location":"example2", "defined":40, "used":17, "touched":0, "free":23, "percent":42.5, "touch_count":17, "touch_percent":42.5, "status":2 }, + { "location":"10.4.0.0/24", "defined":20, "used":5, "touched":0, "free":15, "percent":25, "touch_count":5, "touch_percent":25, "status":3 } + ] +} diff --git a/tests/formats b/tests/formats new file mode 100755 index 0000000..254a37b --- /dev/null +++ b/tests/formats @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Minimal regression test suite. + +IAM=$(basename $0) + +if [ ! -d tests/outputs ]; then + mkdir tests/outputs +fi + +echo '=== color text' > tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/$IAM --color=always \ + -l $top_srcdir/tests/leases/$IAM >> tests/outputs/$IAM + +echo '=== html' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/$IAM --color=always --format=H \ + -l $top_srcdir/tests/leases/$IAM | + sed '/was last modified at/d; /Generated using/d' >> tests/outputs/$IAM + +echo '=== xml' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/$IAM -fx \ + -l $top_srcdir/tests/leases/$IAM >> tests/outputs/$IAM + +echo '=== csv' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/$IAM -fc \ + -l $top_srcdir/tests/leases/$IAM >> tests/outputs/$IAM + +echo '=== json' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/$IAM -fj --limit=33 \ + -l $top_srcdir/tests/leases/$IAM >> tests/outputs/$IAM + +echo '=== perfdata' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/$IAM --perfdata --warning=20 --critical=40 \ + -l $top_srcdir/tests/leases/$IAM >> tests/outputs/$IAM + +diff -u $top_srcdir/tests/expected/$IAM tests/outputs/$IAM +exit $? diff --git a/tests/leases/binding-states b/tests/leases/binding-states new file mode 100644 index 0000000..0d9929f --- /dev/null +++ b/tests/leases/binding-states @@ -0,0 +1,241 @@ +lease 10.0.0.0 { + binding state active; + hardware ethernet 00:00:00:00:00:00; +} + +lease 10.0.0.1 { + binding state free; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.0.0.1 { + binding state active; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.0.0.1 { + binding state abandoned; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.0.0.1 { + binding state expired; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.0.0.1 { + binding state released; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.0.0.1 { + binding state backup; + hardware ethernet 00:00:00:00:00:01; +} + +lease 10.0.0.2 { + binding state free; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.0.0.2 { + binding state abandoned; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.0.0.2 { + binding state expired; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.0.0.2 { + binding state released; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.0.0.2 { + binding state backup; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.0.0.2 { + binding state active; + hardware ethernet 00:00:00:00:00:02; +} + +lease 10.0.0.3 { + binding state free; + hardware ethernet 00:00:00:00:00:03; +} +lease 10.0.0.4 { + binding state active; + hardware ethernet 00:00:00:00:00:04; +} +lease 10.0.0.5 { + binding state expired; + hardware ethernet 00:00:00:00:00:05; +} +lease 10.0.0.6 { + binding state released; + hardware ethernet 00:00:00:00:00:06; +} +lease 10.0.0.7 { + binding state backup; + hardware ethernet 00:00:00:00:00:07; +} +lease 10.0.0.8 { + binding state none-existing-state; + hardware ethernet 00:00:00:00:00:08; +} +lease 10.0.0.9 { + binding state active; + hardware ethernet 00:00:00:00:00:09; +} +lease 10.0.0.20 { + binding state active; + hardware ethernet 00:00:00:00:00:10; +} +lease 10.0.0.21 { + binding state active; + hardware ethernet 00:00:00:00:00:11; +} + + +lease 10.1.0.0 { + binding state active; + hardware ethernet 00:00:00:00:00:00; +} +lease 10.1.0.1 { + binding state active; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.1.0.2 { + binding state active; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.1.0.3 { + binding state active; + hardware ethernet 00:00:00:00:00:03; +} +lease 10.1.0.4 { + binding state active; + hardware ethernet 00:00:00:00:00:04; +} +lease 10.1.0.5 { + binding state active; + hardware ethernet 00:00:00:00:00:05; +} +lease 10.1.0.6 { + binding state active; + hardware ethernet 00:00:00:00:00:06; +} +lease 10.1.0.7 { + binding state active; + hardware ethernet 00:00:00:00:00:07; +} +lease 10.1.0.8 { + binding state active; + hardware ethernet 00:00:00:00:00:08; +} +lease 10.1.0.9 { + binding state active; + hardware ethernet 00:00:00:00:00:09; +} +lease 10.1.0.10 { + binding state active; + hardware ethernet 00:00:00:00:00:10; +} + + +lease 10.2.0.0 { + binding state active; + hardware ethernet 00:00:00:00:00:00; +} +lease 10.2.0.1 { + binding state active; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.2.0.2 { + binding state active; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.2.0.3 { + binding state active; + hardware ethernet 00:00:00:00:00:03; +} +lease 10.2.0.4 { + binding state active; + hardware ethernet 00:00:00:00:00:04; +} +lease 10.2.0.5 { + binding state active; + hardware ethernet 00:00:00:00:00:05; +} +lease 10.2.0.6 { + binding state active; + hardware ethernet 00:00:00:00:00:06; +} +lease 10.2.0.7 { + binding state active; + hardware ethernet 00:00:00:00:00:07; +} +lease 10.2.0.8 { + binding state active; + hardware ethernet 00:00:00:00:00:08; +} + +lease 10.3.0.0 { + binding state active; + hardware ethernet 00:00:00:00:00:00; +} +lease 10.3.0.1 { + binding state active; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.3.0.2 { + binding state active; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.3.0.3 { + binding state active; + hardware ethernet 00:00:00:00:00:03; +} +lease 10.3.0.4 { + binding state active; + hardware ethernet 00:00:00:00:00:04; +} +lease 10.3.0.5 { + binding state active; + hardware ethernet 00:00:00:00:00:05; +} +lease 10.3.0.6 { + binding state active; + hardware ethernet 00:00:00:00:00:06; +} +lease 10.3.0.7 { + binding state active; + hardware ethernet 00:00:00:00:00:07; +} +lease 10.3.0.8 { + binding state active; + hardware ethernet 00:00:00:00:00:08; +} +lease 10.3.0.9 { + binding state active; + hardware ethernet 00:00:00:00:00:09; +} + +lease 10.4.0.0 { + binding state active; + hardware ethernet 00:00:00:00:00:00; +} +lease 10.4.0.1 { + binding state active; + hardware ethernet 00:00:00:00:00:01; +} +lease 10.4.0.2 { + binding state active; + hardware ethernet 00:00:00:00:00:02; +} +lease 10.4.0.3 { + binding state active; + hardware ethernet 00:00:00:00:00:03; +} +lease 10.4.0.4 { + binding state active; + hardware ethernet 00:00:00:00:00:04; +} +lease 10.4.0.5 { + binding state active; + hardware ethernet 00:00:00:00:00:05; +} diff --git a/tests/leases/cidr-v4 b/tests/leases/cidr-v4 new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/leases/cidr-v4 @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/leases/cidr-v6 b/tests/leases/cidr-v6 new file mode 120000 index 0000000..82e3978 --- /dev/null +++ b/tests/leases/cidr-v6 @@ -0,0 +1 @@ +v6 \ No newline at end of file diff --git a/tests/leases/formats b/tests/leases/formats new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/leases/formats @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/leases/parser b/tests/leases/parser new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/leases/parser @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/leases/shufled b/tests/leases/shufled new file mode 100644 index 0000000..723c6ec --- /dev/null +++ b/tests/leases/shufled @@ -0,0 +1,198 @@ +lease 10.0.0.7 { +} + binding state active; + hardware ethernet 00:00:00:00:00:07; + hardware ethernet 00:00:00:00:00:10; +lease 10.2.0.4 { +lease 10.2.0.6 { +lease 10.0.0.11 { + binding state active; +} + hardware ethernet 00:00:00:00:00:03; +lease 10.3.0.9 { +} + hardware ethernet 00:00:00:00:00:04; +} + binding state active; +lease 10.1.0.7 { +} +} +lease 10.1.0.9 { + + hardware ethernet 00:00:00:00:00:07; + hardware ethernet 00:00:00:00:00:01; + binding state active; + binding state active; +} +} +} + binding state active; +lease 10.4.0.1 { +} +lease 10.0.0.0 { +} + hardware ethernet 00:00:00:00:00:10; +} +} + binding state active; + hardware ethernet 00:00:00:00:00:00; +} +} + binding state active; +} +lease 10.3.0.2 { + hardware ethernet 00:00:00:00:00:01; + binding state active; + hardware ethernet 00:00:00:00:00:02; + binding state active; +lease 10.1.0.3 { + binding state active; +} + binding state active; +} +lease 10.1.0.1 { +lease 10.3.0.8 { +lease 10.2.0.1 { + hardware ethernet 00:00:00:00:00:07; +} +} +lease 10.4.0.0 { + hardware ethernet 00:00:00:00:00:01; +} + binding state active; + hardware ethernet 00:00:00:00:00:02; +lease 10.0.0.10 { + binding state active; +} + hardware ethernet 00:00:00:00:00:04; + hardware ethernet 00:00:00:00:00:11; + hardware ethernet 00:00:00:00:00:08; + binding state active; + hardware ethernet 00:00:00:00:00:08; + binding state active; +lease 10.2.0.5 { + hardware ethernet 00:00:00:00:00:01; +lease 10.1.0.8 { + +lease 10.0.0.3 { + binding state active; + binding state active; +lease 10.0.0.1 { +lease 10.4.0.5 { + hardware ethernet 00:00:00:00:00:06; + + hardware ethernet 00:00:00:00:00:06; + hardware ethernet 00:00:00:00:00:02; +lease 10.2.0.3 { + binding state active; +lease 10.1.0.10 { + binding state active; +} +} + binding state active; + hardware ethernet 00:00:00:00:00:03; +} +} + hardware ethernet 00:00:00:00:00:05; +lease 10.0.0.2 { +} + binding state active; +} + hardware ethernet 00:00:00:00:00:06; +lease 10.3.0.6 { +lease 10.0.0.8 { + hardware ethernet 00:00:00:00:00:01; +lease 10.4.0.3 { +} +} +} + binding state active; + binding state active; +lease 10.1.0.6 { +lease 10.1.0.2 { + hardware ethernet 00:00:00:00:00:05; + binding state active; +} +} +lease 10.2.0.7 { +} +} + hardware ethernet 00:00:00:00:00:03; + binding state active; + +} + binding state active; + hardware ethernet 00:00:00:00:00:03; +} +lease 10.1.0.0 { + hardware ethernet 00:00:00:00:00:04; + binding state active; +} +lease 10.3.0.1 { +lease 10.2.0.2 { + binding state active; + hardware ethernet 00:00:00:00:00:09; +} + binding state active; + hardware ethernet 00:00:00:00:00:00; + binding state active; +lease 10.0.0.6 { + hardware ethernet 00:00:00:00:00:02; + binding state active; +} + binding state active; +} +lease 10.3.0.0 { +lease 10.0.0.9 { + binding state active; +lease 10.0.0.4 { + hardware ethernet 00:00:00:00:00:08; + binding state active; + hardware ethernet 00:00:00:00:00:07; + hardware ethernet 00:00:00:00:00:00; + binding state active; +lease 10.1.0.4 { +lease 10.4.0.2 { + binding state active; +} +} +lease 10.3.0.4 { + hardware ethernet 00:00:00:00:00:05; + hardware ethernet 00:00:00:00:00:05; + binding state active; + binding state active; +lease 10.0.0.5 { + hardware ethernet 00:00:00:00:00:04; + binding state active; + hardware ethernet 00:00:00:00:00:02; + binding state active; + hardware ethernet 00:00:00:00:00:09; + hardware ethernet 00:00:00:00:00:08; +lease 10.2.0.8 { +} + binding state active; + binding state active; + hardware ethernet 00:00:00:00:00:06; + hardware ethernet 00:00:00:00:00:00; +lease 10.3.0.7 { +lease 10.4.0.4 { +} + hardware ethernet 00:00:00:00:00:04; +} + binding state active; +lease 10.3.0.3 { + hardware ethernet 00:00:00:00:00:03; +lease 10.2.0.0 { + binding state active; + binding state active; + hardware ethernet 00:00:00:00:00:05; + + binding state active; +} + hardware ethernet 00:00:00:00:00:00; + binding state active; +lease 10.1.0.5 { + hardware ethernet 00:00:00:00:00:09; +lease 10.3.0.5 { +} + diff --git a/tests/leases/statuses b/tests/leases/statuses new file mode 120000 index 0000000..ceb7cbb --- /dev/null +++ b/tests/leases/statuses @@ -0,0 +1 @@ +complete \ No newline at end of file diff --git a/tests/parser b/tests/parser new file mode 100755 index 0000000..94b4e7d --- /dev/null +++ b/tests/parser @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Minimal regression test suite. + +IAM=$(basename $0) + +if [ ! -d tests/outputs ]; then + mkdir tests/outputs +fi +cat <"./${IAM}-conf" +#shared-network "example3 " { +# subnet 10.0.6.0 netmask 255.255.255.0 { +# pool { +# range 10.0.6.1 10.0.6.20; +# } +# } +# subnet 10.1.7.0 netmask 255.255.255.0 { +# pool { +# range 10.1.7.1 10.1.7.20; +# } +# } +#} + +include "tests/confs/complete"; +EOF +dhcpd-pools -c "./${IAM}-conf" --color=never \ + -l $top_srcdir/tests/leases/$IAM -o tests/outputs/$IAM +diff -u $top_srcdir/tests/expected/$IAM tests/outputs/$IAM +rm -f "./${IAM}-conf" +exit $? diff --git a/tests/shufled b/tests/shufled new file mode 100755 index 0000000..4f38984 --- /dev/null +++ b/tests/shufled @@ -0,0 +1,15 @@ +#!/bin/sh +# +# Minimal regression test suite. + +IAM=$(basename $0) + +if [ ! -d tests/outputs ]; then + mkdir tests/outputs +fi + +dhcpd-pools -c $top_srcdir/tests/confs/$IAM --color=never \ + --sort nimcptTenimcptTe --sort nimcptTe \ + -l $top_srcdir/tests/leases/$IAM -o tests/outputs/$IAM +diff -u $top_srcdir/tests/expected/$IAM tests/outputs/$IAM +exit $? diff --git a/tests/statuses b/tests/statuses new file mode 100755 index 0000000..e603b8a --- /dev/null +++ b/tests/statuses @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Test json status field values. + +IAM=$(basename $0) + +if [ ! -d tests/outputs ]; then + mkdir tests/outputs +fi + +dhcpd-pools -c $top_srcdir/tests/confs/$IAM --format=json -L33 \ + -l $top_srcdir/tests/leases/$IAM -o tests/outputs/$IAM \ + --warning=20 --critical=41 --all-as-shared --snet-alarms --all-as-shared + +echo '== minsize' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/$IAM --format=json --limit 33 \ + -l $top_srcdir/tests/leases/$IAM --minsize=20 \ + --warning=20 --critical=41 --all-as-shared --snet-alarms --all-as-shared \ + >> tests/outputs/$IAM + +diff -u $top_srcdir/tests/expected/$IAM tests/outputs/$IAM +exit $? From 0fe89808eeecea692c84117f6fa41d8f5018f315 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 14 Jan 2018 18:35:15 +0000 Subject: [PATCH 04/53] docs: fix peoples name in THANKS file to have correct characters Unicode fixes. Signed-off-by: Sami Kerola --- THANKS | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/THANKS b/THANKS index badafec..6e76373 100644 --- a/THANKS +++ b/THANKS @@ -5,23 +5,23 @@ Project is maintained by Sami Kerola People who reported problems, give improvement suggestions or even contributed code. -Otto J. Mäkelä +Otto J. Mäkelä Mika Paananen Frank Bulk Roar Pettersen Jeff Wieland Rusty -Fredrik Vöcks +Fredrik Vöcks Dan Thorson -Stian Øvrevåge +Stian ØvrevÃ¥ge Dominic Germain -Anders Låstad +Anders LÃ¥stad Thor Eivind Brantzeg Ahmed AL Dakhil Adam Ciarcinski -Rezso Gajdóczy +RezsÅ‘ Gajdóczy Robert Viou -Enno Gröper +Enno Gröper Troy D. Hanson Ryan Malek Cheer Xiao @@ -30,7 +30,7 @@ Helmut Grohne Joey D. Ryan Steinmetz Dan Pritts -Fredrik Lysén +Fredrik Lysén Conor McCarthy Wolfgang Steudel Aaron Paetznick @@ -44,4 +44,4 @@ Klaus Slott Boris Lytochkin Jeff Bailey José Bollo -Sebastián Cramatte +Sebastián Cramatte From 679d63dd9f29fcdf60c21642f6f4344e0f195653 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 24 Feb 2018 11:48:02 +0000 Subject: [PATCH 05/53] add .mailmap Signed-off-by: Sami Kerola --- .mailmap | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .mailmap diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..7f7f47f --- /dev/null +++ b/.mailmap @@ -0,0 +1,2 @@ +Sami Kerola +Sami Kerola From a192f51545bbfd15d8bc8b053840138bb5a675c3 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Fri, 4 May 2018 21:45:36 +0100 Subject: [PATCH 06/53] output: fix implicit conversion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/output.c:731:38: warning: implicit conversion from ‘float’ to ‘double’ when passing argument to function [-Wdouble-promotion] Signed-off-by: Sami Kerola --- src/output.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/output.c b/src/output.c index a651ccb..9261bb1 100644 --- a/src/output.c +++ b/src/output.c @@ -726,7 +726,7 @@ static void output_double_color(struct conf_t *state, * \param type HTML tag name. * \param fl Actual payload of the printout. */ -static void output_float(FILE *restrict f, char const *restrict type, float fl) +static void output_float(FILE *restrict f, char const *restrict type, double fl) { fprintf(f, "<%s>%.3f\n", type, fl, type); } From b568725e7d0f8e49c48b1c62983daf0ca51b9f15 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 15 May 2018 21:16:38 +0100 Subject: [PATCH 07/53] main: simplify option parsing Signed-off-by: Sami Kerola --- src/dhcpd-pools.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index 79afc21..a5cb9d4 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -198,11 +198,11 @@ static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) { /* Output sorting option */ struct output_sort *p = state->sorts; - size_t len; + char *ptr = optarg; while (p && p->next) p = p->next; - for (len = 0; len < strlen(optarg); len++) { + while (*ptr) { if (state->sorts == NULL) { state->sorts = xcalloc(1, sizeof(struct output_sort)); @@ -211,7 +211,7 @@ static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) p->next = xcalloc(1, sizeof(struct output_sort)); p = p->next; } - p->func = field_selector(optarg[len]); + p->func = field_selector(*ptr++); } } break; From 4e7ab66fd4ba8feafa88b6bff53285761285f3e5 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 15 May 2018 21:31:52 +0100 Subject: [PATCH 08/53] fix typo Signed-off-by: Sami Kerola --- src/dhcpd-pools.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index a5cb9d4..3883931 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -96,7 +96,7 @@ static void skip_arg_parse(struct conf_t *state, char *optarg) OPT_ARG_WARNING, OPT_ARG_CRITICAL, OPT_ARG_MINSIZE, - OPT_ARG_SUPRESSED + OPT_ARG_SUPPRESSED }; char *const tokens[] = { @@ -104,7 +104,7 @@ static void skip_arg_parse(struct conf_t *state, char *optarg) [OPT_ARG_WARNING] = "warning", [OPT_ARG_CRITICAL] = "critical", [OPT_ARG_MINSIZE] = "minsize", - [OPT_ARG_SUPRESSED] = "suppressed", + [OPT_ARG_SUPPRESSED] = "suppressed", NULL }; char *value; @@ -123,7 +123,7 @@ static void skip_arg_parse(struct conf_t *state, char *optarg) case OPT_ARG_MINSIZE: state->skip_minsize = 1; break; - case OPT_ARG_SUPRESSED: + case OPT_ARG_SUPPRESSED: state->skip_suppressed = 1; break; default: From e8e9d49ebba7bd621cade66d38c2c9b5da49c0fc Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 20 May 2018 11:46:23 +0100 Subject: [PATCH 09/53] main: move print_mac_addreses to state structure Signed-off-by: Sami Kerola --- src/dhcpd-pools.c | 8 ++++---- src/dhcpd-pools.h | 3 ++- src/getdata.c | 4 ++-- src/output.c | 18 ++++++++---------- 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index 3883931..9e1ced7 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -321,6 +321,9 @@ static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) output_format = default_format[0]; } } + if (output_format == 'X' || output_format == 'J') { + state->print_mac_addreses = 1; + } return output_format; } @@ -355,10 +358,7 @@ int main(int argc, char **argv) /* Do the job */ parse_config(&state, 1, state.dhcpdconf_file, state.shared_net_root); - if (output_format == 'X' || output_format == 'J') - parse_leases(&state, 1); - else - parse_leases(&state, 0); + parse_leases(&state); prepare_data(&state); do_counting(&state); if (state.sorts != NULL) diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index a2715f3..1a77b1f 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -224,6 +224,7 @@ struct conf_t { double crit_count; /*!< Maximum number of free IP's before critical. */ double minsize; /*!< Minimum size of range or shared network to be considered exceeding threshold. */ unsigned int + print_mac_addreses:1, /*!< Print mac address in xml or json. */ reverse_order:1, /*!< Reverse sort order. */ backups_found:1, /*!< Indicator if dhcpd.leases file has leases in backup state. */ snet_alarms:1, /*!< Suppress alarming thresholds for ranges that are part of a shared network. */ @@ -246,7 +247,7 @@ extern void prepare_data(struct conf_t *state); extern void do_counting(struct conf_t *state); /* getdata.c */ -extern int parse_leases(struct conf_t *state, const int print_mac_addreses); +extern int parse_leases(struct conf_t *state); extern void parse_config(struct conf_t *state, const int is_include, const char *restrict config_file, struct shared_network_t *restrict shared_p); diff --git a/src/getdata.c b/src/getdata.c index ca01384..b513d5d 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -79,7 +79,7 @@ enum isc_conf_parser { /*! \brief Lease file parser. The parser can only read ISC DHCPD * dhcpd.leases file format. */ -int parse_leases(struct conf_t *state, const int print_mac_addreses) +int parse_leases(struct conf_t *state) { FILE *dhcpd_leases; char *line, *ipstring, macstring[20], *stop; @@ -144,7 +144,7 @@ int parse_leases(struct conf_t *state, const int print_mac_addreses) state->backups_found = 1; break; case PREFIX_HARDWARE_ETHERNET: - if (print_mac_addreses == 0) + if (state->print_mac_addreses == 0) break; memcpy(macstring, line + 20, 17); macstring[17] = '\0'; diff --git a/src/output.c b/src/output.c index 9261bb1..b723397 100644 --- a/src/output.c +++ b/src/output.c @@ -364,7 +364,7 @@ static int output_txt(struct conf_t *state) } /*! \brief The xml output formats. */ -static int output_xml(struct conf_t *state, const int print_mac_addreses) +static int output_xml(struct conf_t *state) { unsigned int i; struct range_t *range_p; @@ -377,7 +377,7 @@ static int output_xml(struct conf_t *state, const int print_mac_addreses) fprintf(outfile, "\n"); - if (print_mac_addreses == 1) { + if (state->print_mac_addreses) { struct leases_t *l; for (l = state->leases; l != NULL; l = l->hh.next) { @@ -449,7 +449,7 @@ static int output_xml(struct conf_t *state, const int print_mac_addreses) } /*! \brief The json output formats. */ -static int output_json(struct conf_t *state, const int print_mac_addreses) +static int output_json(struct conf_t *state) { unsigned int i = 0; struct range_t *range_p; @@ -464,7 +464,7 @@ static int output_json(struct conf_t *state, const int print_mac_addreses) fprintf(outfile, "{\n"); - if (print_mac_addreses == 1) { + if (state->print_mac_addreses) { struct leases_t *l; fprintf(outfile, " \"active_leases\": ["); @@ -1200,16 +1200,14 @@ int output_analysis(struct conf_t *state, const char output_format) ret = output_html(state); break; case 'x': - ret = output_xml(state, 0); - break; + /* fallthrough */ case 'X': - ret = output_xml(state, 1); + ret = output_xml(state); break; case 'j': - ret = output_json(state, 0); - break; + /* fallthrough */ case 'J': - ret = output_json(state, 1); + ret = output_json(state); break; case 'c': ret = output_csv(state); From 3f85360c644b79535360bf230638eabab3a2e685 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 20 May 2018 12:03:07 +0100 Subject: [PATCH 10/53] main: move output_format to state, and rename color_format Signed-off-by: Sami Kerola --- src/dhcpd-pools.c | 21 +++++++++------------ src/dhcpd-pools.h | 5 +++-- src/output.c | 18 +++++++++--------- 3 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index 9e1ced7..dd52fe9 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -133,7 +133,7 @@ static void skip_arg_parse(struct conf_t *state, char *optarg) } /*! \brief Command line options parser. */ -static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) +static void parse_command_line_opts(struct conf_t *state, int argc, char **argv) { enum { OPT_SNET_ALARMS = CHAR_MAX + 1, @@ -172,7 +172,6 @@ static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) {"ip-version", required_argument, NULL, OPT_SET_IPV}, {NULL, 0, NULL, 0} }; - char output_format = '\0'; int alarming = 0; while (1) { @@ -192,7 +191,7 @@ static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) break; case 'f': /* Output format */ - output_format = optarg[0]; + state->output_format = optarg[0]; break; case 's': { @@ -231,7 +230,7 @@ static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) case OPT_MUSTACH: #ifdef BUILD_MUSTACH state->mustach_template = optarg; - output_format = 'm'; + state->output_format = 'm'; #else error(EXIT_FAILURE, 0, "compiled without mustach support"); #endif @@ -312,19 +311,18 @@ static char parse_command_line_opts(struct conf_t *state, int argc, char **argv) } /* Output format is not defined, if alarm thresholds are then it's alarming, else use the * default. */ - if (output_format == '\0') { + if (state->output_format == '\0') { if (alarming == 1) - output_format = 'a'; + state->output_format = 'a'; else { const char *const default_format = OUTPUT_FORMAT; - output_format = default_format[0]; + state->output_format = default_format[0]; } } - if (output_format == 'X' || output_format == 'J') { + if (state->output_format == 'X' || state->output_format == 'J') { state->print_mac_addreses = 1; } - return output_format; } /*!\brief Start of execution. This will mostly call other functions one @@ -347,14 +345,13 @@ int main(int argc, char **argv) .ip_version = IPvUNKNOWN, 0 }; - char output_format; int ret_val; atexit(close_stdout); set_program_name(argv[0]); prepare_memory(&state); set_ipv_functions(&state, IPvUNKNOWN); - output_format = parse_command_line_opts(&state, argc, argv); + parse_command_line_opts(&state, argc, argv); /* Do the job */ parse_config(&state, 1, state.dhcpdconf_file, state.shared_net_root); @@ -365,7 +362,7 @@ int main(int argc, char **argv) mergesort_ranges(&state, state.ranges, state.num_ranges, NULL, 1); if (state.reverse_order == 1) flip_ranges(&state); - ret_val = output_analysis(&state, output_format); + ret_val = output_analysis(&state); clean_up(&state); return (ret_val); } diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 1a77b1f..4556e06 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -214,9 +214,10 @@ struct conf_t { enum dhcp_version ip_version; /*!< Designator if the dhcpd is running in IPv4 or IPv6 mode. */ const char *dhcpdconf_file; /*!< Path to dhcpd.conf file. */ const char *dhcpdlease_file; /*!< Path to dhcpd.leases file. */ - int output_format; /*!< Column to use in color_tags array. */ + int color_format; /*!< Column to use in color_tags array. */ struct output_sort *sorts; /*!< Linked list how to sort ranges. */ const char *output_file; /*!< Output file path. */ + char output_format; /*!< Output format, such as text, json, xml, .... */ const char *mustach_template; /*!< Mustach template file path. */ double warning; /*!< Warning percent threshold. */ double critical; /*!< Critical percent threshold. */ @@ -314,7 +315,7 @@ extern int range_output_helper(struct conf_t *state, struct output_helper_t *oh, struct range_t *range_p); extern int shnet_output_helper(struct conf_t *state, struct output_helper_t *oh, struct shared_network_t *shared_p); -extern int output_analysis(struct conf_t *state, const char output_format); +extern int output_analysis(struct conf_t *state); /* sort.c */ extern void mergesort_ranges(struct conf_t *state, diff --git a/src/output.c b/src/output.c index b723397..264a970 100644 --- a/src/output.c +++ b/src/output.c @@ -182,7 +182,7 @@ static int start_color(struct conf_t *state, struct output_helper_t *oh, FILE *o if (oh->status == STATUS_OK) { return 0; } - fputs(color_tags[oh->status][state->output_format], outfile); + fputs(color_tags[oh->status][state->color_format], outfile); return 1; } @@ -282,7 +282,7 @@ static int output_txt(struct conf_t *state) fprintf(outfile, "%7g %8.3f", range_p->backups, oh.bup); } if (color_set) - fputs(color_tags[COLOR_RESET][state->output_format], outfile); + fputs(color_tags[COLOR_RESET][state->color_format], outfile); fprintf(outfile, "\n"); range_p++; } @@ -320,7 +320,7 @@ static int output_txt(struct conf_t *state) fprintf(outfile, "%7g %8.3f", shared_p->backups, oh.bup); } if (color_set) - fputs(color_tags[COLOR_RESET][state->output_format], outfile); + fputs(color_tags[COLOR_RESET][state->color_format], outfile); fprintf(outfile, "\n"); } } @@ -356,7 +356,7 @@ static int output_txt(struct conf_t *state) fprintf(outfile, "%7g %8.3f", state->shared_net_root->backups, oh.bup); } if (color_set) - fputs(color_tags[COLOR_RESET][state->output_format], outfile); + fputs(color_tags[COLOR_RESET][state->color_format], outfile); fprintf(outfile, "\n"); } close_outfile(outfile); @@ -1180,13 +1180,13 @@ static int output_alarming(struct conf_t *state) } /*! \brief Return output_format_names enum based on single char input. */ -int output_analysis(struct conf_t *state, const char output_format) +int output_analysis(struct conf_t *state) { int ret = 1; - switch (output_format) { + switch (state->output_format) { case 't': - state->output_format = OUT_FORM_TEXT; + state->color_format = OUT_FORM_TEXT; ret = output_txt(state); break; case 'a': @@ -1196,7 +1196,7 @@ int output_analysis(struct conf_t *state, const char output_format) error(EXIT_FAILURE, 0, "html table only output format is deprecated"); break; case 'H': - state->output_format = OUT_FORM_HTML; + state->color_format = OUT_FORM_HTML; ret = output_html(state); break; case 'x': @@ -1218,7 +1218,7 @@ int output_analysis(struct conf_t *state, const char output_format) break; #endif default: - error(EXIT_FAILURE, 0, "unknown output format: '%c'", output_format); + error(EXIT_FAILURE, 0, "unknown output format: '%c'", state->output_format); } return ret; } From 7fe686b4174488f70ab4f8799d6ab09e3520e4cb Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 20 May 2018 15:54:58 +0100 Subject: [PATCH 11/53] webpages: use html sample output Signed-off-by: Sami Kerola --- webpages/index.html | 7 +- webpages/sampleoutput.html | 191 +++++++ webpages/sampleoutput.txt | 985 ------------------------------------- webpages/sitemap.txt | 2 +- 4 files changed, 196 insertions(+), 989 deletions(-) create mode 100644 webpages/sampleoutput.html delete mode 100644 webpages/sampleoutput.txt diff --git a/webpages/index.html b/webpages/index.html index 76feeb1..088c546 100644 --- a/webpages/index.html +++ b/webpages/index.html @@ -46,9 +46,10 @@ there is lots of data. On cheap laptop the speed of analysis is more than any significant difference in getting analysis done.


-prompt> ./dhcpd-pools -c /etc/dhcpd.conf -l /var/lib/dhcp/dhcpd.leases -o -./sampleoutput.txt
-prompt> cat ./sampleoutput.txt +prompt> ./dhcpd-pools --config=/etc/dhcpd.conf +--leases=/var/lib/dhcp/dhcpd.leases --format=H +--color=always --warning=40 --critical=50 --output=sampleoutput.html

Where I can get dhcpd-pools?

diff --git a/webpages/sampleoutput.html b/webpages/sampleoutput.html new file mode 100644 index 0000000..af4d3d8 --- /dev/null +++ b/webpages/sampleoutput.html @@ -0,0 +1,191 @@ + + + +ISC dhcpd dhcpd-pools output + + + + + + + + +
+

ISC DHCPD status

+File samples/dhcpd.leases was last modified at 2017-11-11T23:59:04+0000
+

Sum of all

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
namemaxcurfreepercenttoucht+ct+c percbubu perc
All networks100435743.00004343.000243.000
+

Shared networks

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
namemaxcurfreepercenttoucht+ct+c percbubu perc
example140211952.502152.50012.500
example240172342.501742.50000.000
+

Ranges

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
shared net namefirst iplast ipmaxcurfreepercenttoucht+ct+c percbubu perc
example110.0.0.110.0.0.20201195501155.00015.000
example110.1.0.110.1.0.202010105001050.00000.000
example210.2.0.110.2.0.2020812400840.00000.000
example210.3.0.110.3.0.2020911450945.00000.000
All networks10.4.0.110.4.0.2020515250525.00015.000
+
+Generated using dhcpd-pools 3.0
+More info at http://dhcpd-pools.sourceforge.net/ +
+ + + + + diff --git a/webpages/sampleoutput.txt b/webpages/sampleoutput.txt deleted file mode 100644 index 0271e76..0000000 --- a/webpages/sampleoutput.txt +++ /dev/null @@ -1,985 +0,0 @@ -Ranges: -shared net name first ip last ip max cur percent -Aatamila 12.34.567.127 - 12.34.567.254 128 11 8.594 -Aatamila 12.34.567.83 - 12.34.567.254 252 22 8.730 -Huohvanainen 12.34.567.3 - 12.34.567.254 252 39 15.476 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 41 16.142 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 40 15.748 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 38 14.961 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 37 14.567 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 55 21.654 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 36 14.173 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 50 19.685 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 35 13.780 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 53 20.866 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 56 22.047 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 44 17.323 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 43 16.929 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 29 11.417 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 45 17.717 -Huohvanainen 12.345.678.1 - 12.345.678.254 254 36 14.173 -Ilmovuori 12.345.678.3 - 12.345.678.254 252 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Honkanen 12.345.678.3 - 12.345.678.254 252 100 39.683 -Honkanen 12.345.678.1 - 12.345.678.254 254 92 36.220 -Huuskonen 12.345.678.3 - 12.345.678.254 252 146 57.937 -Huuskonen 12.345.678.1 - 12.345.678.254 254 139 54.724 -Huuskonen 12.345.678.1 - 12.345.678.254 254 137 53.937 -Huuskonen 12.345.678.1 - 12.345.678.254 254 147 57.874 -Huuskonen 12.345.678.1 - 12.345.678.254 254 132 51.969 -Huuskonen 12.345.678.1 - 12.345.678.254 254 132 51.969 -Huuskonen 12.345.678.1 - 12.345.678.254 254 149 58.661 -Huuskonen 12.345.678.1 - 12.345.678.254 254 140 55.118 -Huuskonen 12.345.678.1 - 12.345.678.254 254 140 55.118 -Huuskonen 12.345.678.1 - 12.345.678.254 254 139 54.724 -Huuskonen 12.345.678.1 - 12.345.678.254 254 135 53.150 -Huuskonen 12.345.678.1 - 12.345.678.1 1 0 0.000 -Huuskonen 12.345.678.1 - 12.345.678.254 254 152 59.843 -Huuskonen 12.345.678.1 - 12.345.678.254 254 132 51.969 -Huuskonen 12.345.678.1 - 12.345.678.254 254 131 51.575 -Huuskonen 12.345.678.1 - 12.345.678.254 254 147 57.874 -Halonen 12.345.678.3 - 12.345.678.254 252 114 45.238 -Halonen 12.345.678.1 - 12.345.678.254 254 107 42.126 -Halonen 12.345.678.1 - 12.345.678.254 254 106 41.732 -Halonen 12.345.678.1 - 12.345.678.254 254 121 47.638 -Halonen 12.345.678.1 - 12.345.678.254 254 119 46.850 -Halonen 12.345.678.1 - 12.345.678.254 254 102 40.157 -Halonen 12.345.678.1 - 12.345.678.254 254 111 43.701 -Halonen 12.345.678.1 - 12.345.678.254 254 122 48.031 -Halonen 12.345.678.1 - 12.345.678.254 254 119 46.850 -Halonen 12.345.678.1 - 12.345.678.254 254 109 42.913 -Halonen 12.345.678.1 - 12.345.678.254 254 106 41.732 -Halonen 12.345.678.1 - 12.345.678.254 254 120 47.244 -Halonen 12.345.678.1 - 12.345.678.254 254 117 46.063 -Halonen 12.345.678.1 - 12.345.678.254 254 111 43.701 -Halonen 12.345.678.1 - 12.345.678.254 254 117 46.063 -Halonen 12.345.678.1 - 12.345.678.254 254 120 47.244 -Halonen 12.345.678.1 - 12.345.678.254 254 102 40.157 -Halonen 12.345.678.1 - 12.345.678.254 254 130 51.181 -Halonen 12.345.678.1 - 12.345.678.254 254 117 46.063 -Halonen 12.345.678.1 - 12.345.678.254 254 120 47.244 -Halonen 12.345.678.1 - 12.345.678.254 254 111 43.701 -Halonen 12.345.678.1 - 12.345.678.254 254 118 46.457 -Halonen 12.345.678.1 - 12.345.678.254 254 114 44.882 -Halonen 12.345.678.1 - 12.345.678.254 254 112 44.094 -Halonen 12.345.678.1 - 12.345.678.254 254 120 47.244 -Halonen 12.345.678.1 - 12.345.678.254 254 118 46.457 -Halonen 12.345.678.1 - 12.345.678.254 254 105 41.339 -Halonen 12.345.678.1 - 12.345.678.254 254 110 43.307 -Halonen 12.345.678.1 - 12.345.678.254 254 117 46.063 -Halonen 12.345.678.1 - 12.345.678.254 254 103 40.551 -Halonen 12.345.678.1 - 12.345.678.254 254 107 42.126 -Halonen 12.345.678.1 - 12.345.678.254 254 109 42.913 -Hattunen 12.345.6.3 - 12.345.6.254 252 0 0.000 -Hattunen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Hattunen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Hattunen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Hattunen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Hattunen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Hattunen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Hattunen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Harkovski 12.345.6.3 - 12.345.6.254 252 197 78.175 -Harkovski 12.345.6.1 - 12.345.6.254 254 190 74.803 -Harkovski 12.345.67.1 - 12.345.67.254 254 193 75.984 -Harkovski 12.345.67.1 - 12.345.67.254 254 199 78.346 -Harkovski 12.345.67.3 - 12.345.67.254 252 196 77.778 -Harkovski 12.345.67.1 - 12.345.67.254 254 208 81.890 -Harkovski 12.345.67.1 - 12.345.67.254 254 195 76.772 -Harkovski 12.345.67.1 - 12.345.67.254 254 195 76.772 -Happo 12.345.67.3 - 12.345.67.254 252 169 67.063 -Happo 12.345.67.1 - 12.345.67.254 254 171 67.323 -Happo 12.345.67.1 - 12.345.67.254 254 158 62.205 -Happo 12.345.67.1 - 12.345.67.254 254 165 64.961 -Happonen 12.345.67.3 - 12.345.67.254 252 184 73.016 -Happonen 12.345.67.1 - 12.345.67.254 254 181 71.260 -Happonen 12.345.67.1 - 12.345.67.254 254 186 73.228 -Happonen 12.345.67.1 - 12.345.67.254 254 175 68.898 -Harakka 12.345.67.3 - 12.345.67.254 252 201 79.762 -Harakka 12.345.67.1 - 12.345.67.254 254 206 81.102 -Harakka 12.345.67.1 - 12.345.67.254 254 200 78.740 -Harakka 12.345.67.1 - 12.345.67.254 254 196 77.165 -Harjunen 12.345.67.3 - 12.345.67.254 252 208 82.540 -Harjunen 12.345.67.1 - 12.345.67.254 254 204 80.315 -Harjunen 12.345.67.1 - 12.345.67.254 254 207 81.496 -Harjunen 12.345.67.1 - 12.345.67.254 254 199 78.346 -Haukka 12.345.67.3 - 12.345.67.254 252 86 34.127 -Haukka 12.345.67.1 - 12.345.67.254 254 93 36.614 -Haukka 12.345.67.1 - 12.345.67.254 254 82 32.283 -Haukka 12.345.67.1 - 12.345.67.254 254 84 33.071 -Hautanen 12.345.67.3 - 12.345.67.254 252 109 43.254 -Hautanen 12.345.67.1 - 12.345.67.254 254 106 41.732 -Hautanen 12.345.67.1 - 12.345.67.254 254 89 35.039 -Hautanen 12.345.67.1 - 12.345.67.254 254 104 40.945 -Havu 12.345.67.3 - 12.345.67.254 252 109 43.254 -Havu 12.345.67.1 - 12.345.67.254 254 101 39.764 -Havu 12.345.67.1 - 12.345.67.254 254 96 37.795 -Havu 12.345.67.1 - 12.345.67.254 254 98 38.583 -Heiskanen 12.345.67.3 - 12.345.67.254 252 113 44.841 -Heiskanen 12.345.67.1 - 12.345.67.254 254 113 44.488 -Heiskanen 12.345.67.1 - 12.345.67.254 254 109 42.913 -Heiskanen 12.345.67.1 - 12.345.67.254 254 117 46.063 -Hietanen 12.345.67.3 - 12.345.67.254 252 96 38.095 -Hietanen 12.345.67.1 - 12.345.67.254 254 90 35.433 -Hietanen 12.345.67.1 - 12.345.67.254 254 101 39.764 -Hietanen 12.345.67.1 - 12.345.67.254 254 108 42.520 -Hiiliaho 12.345.67.3 - 12.345.67.254 252 100 39.683 -Hiiliaho 12.345.67.1 - 12.345.67.254 254 105 41.339 -Hiiliaho 12.345.67.1 - 12.345.67.254 254 98 38.583 -Hiiliaho 12.345.67.1 - 12.345.67.254 254 105 41.339 -Hilonen 12.345.67.3 - 12.345.67.254 252 80 31.746 -Hilonen 12.345.67.1 - 12.345.67.254 254 91 35.827 -Hilonen 12.345.67.1 - 12.345.67.254 254 76 29.921 -Hilonen 12.345.67.1 - 12.345.67.254 254 76 29.921 -Hirvonen 12.345.67.3 - 12.345.67.254 252 173 68.651 -Hirvonen 12.345.67.1 - 12.345.67.254 254 180 70.866 -Hirvonen 12.345.67.1 - 12.345.67.254 254 178 70.079 -Hirvonen 12.345.67.1 - 12.345.67.254 254 183 72.047 -Haavikko 12.345.678.3 - 12.345.678.254 252 99 39.286 -Haavikko 12.345.678.1 - 12.345.678.254 254 84 33.071 -Anttila 12.345.678.3 - 12.345.678.253 251 0 0.000 -Anttila 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hult 12.345.678.3 - 12.345.678.254 252 80 31.746 -Hult 12.345.678.1 - 12.345.678.254 254 106 41.732 -Hult 12.345.678.1 - 12.345.678.254 254 83 32.677 -Hult 12.345.678.1 - 12.345.678.1 1 1 100.000 -Jaskanen 12.345.678.3 - 12.345.678.254 252 150 59.524 -Jaskanen 12.345.678.1 - 12.345.678.254 254 144 56.693 -Jaskanen 12.345.678.1 - 12.345.678.254 254 169 66.535 -Jaskanen 12.345.678.1 - 12.345.678.254 254 161 63.386 -Jaskanen 12.345.678.1 - 12.345.678.254 254 166 65.354 -Jaskanen 12.345.678.1 - 12.345.678.254 254 168 66.142 -Jaskanen 12.345.678.1 - 12.345.678.254 254 172 67.717 -Jaskanen 12.345.678.1 - 12.345.678.254 254 164 64.567 -Itkonen 12.345.678.3 - 12.345.678.254 252 130 51.587 -Jaskanen 12.345.678.3 - 12.345.678.254 252 173 68.651 -Jaskanen 12.345.678.1 - 12.345.678.254 254 190 74.803 -Jaskanen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Jaskanen 12.345.678.1 - 12.345.678.254 254 190 74.803 -Jaskanen 12.345.678.1 - 12.345.678.254 254 177 69.685 -Jaskanen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Jaskanen 12.345.678.1 - 12.345.678.254 254 189 74.409 -Jaskanen 12.345.678.1 - 12.345.678.254 254 169 66.535 -Jaskanen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Jaskanen 12.345.678.1 - 12.345.678.254 254 187 73.622 -Jaskanen 12.345.678.1 - 12.345.678.254 254 172 67.717 -Jaskanen 12.345.678.1 - 12.345.678.254 254 166 65.354 -Jaskanen 12.345.678.1 - 12.345.678.254 254 171 67.323 -Jaskanen 12.345.678.1 - 12.345.678.254 254 181 71.260 -Jaskanen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Jaskanen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Itkonen-temp 12.345.678.3 - 12.345.678.254 252 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.1 1 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.1 1 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Itkonen-temp 12.345.678.1 - 12.345.678.254 254 0 0.000 -Arviluoma 12.345.678.3 - 12.345.678.254 252 3 1.190 -Atjonen 12.345.678.3 - 12.345.678.254 252 1 0.397 -Ahtonen 12.345.678.3 - 12.345.678.254 252 70 27.778 -Ahtonen 12.345.678.1 - 12.345.678.254 254 57 22.441 -Ahtonen 12.345.678.1 - 12.345.678.254 254 74 29.134 -Ahtonen 12.345.678.1 - 12.345.678.254 254 65 25.591 -Itkonen 12.345.678.3 - 12.345.678.254 252 189 75.000 -Itkonen 12.345.678.1 - 12.345.678.254 254 152 59.843 -Itkonen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Itkonen 12.345.678.1 - 12.345.678.254 254 165 64.961 -Itkonen 12.345.678.1 - 12.345.678.254 254 166 65.354 -Itkonen 12.345.678.1 - 12.345.678.254 254 165 64.961 -Itkonen 12.345.678.1 - 12.345.678.254 254 167 65.748 -Itkonen 12.345.678.1 - 12.345.678.254 254 178 70.079 -Jaskanen 12.345.678.3 - 12.345.678.254 252 185 73.413 -Jaskanen 12.345.678.1 - 12.345.678.254 254 191 75.197 -Jaskanen 12.345.678.1 - 12.345.678.254 254 179 70.472 -Jaskanen 12.345.678.1 - 12.345.678.254 254 180 70.866 -Jaskanen 12.345.678.1 - 12.345.678.254 254 176 69.291 -Jaskanen 12.345.678.1 - 12.345.678.254 254 188 74.016 -Jaskanen 12.345.678.1 - 12.345.678.254 254 177 69.685 -Jaskanen 12.345.678.1 - 12.345.678.1 1 0 0.000 -Hoivassilta 12.345.678.2 - 12.345.678.254 253 0 0.000 -Hoivassilta 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ikonen 12.345.6.3 - 12.345.6.254 252 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Ikonen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Ikonen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Ikonen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Ikonen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Ikonen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Ikonen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Auvinen 12.345.67.3 - 12.345.67.254 252 102 40.476 -Auvinen 12.345.67.1 - 12.345.67.254 254 103 40.551 -Auvinen 12.345.67.1 - 12.345.67.254 254 97 38.189 -Auvinen 12.345.67.1 - 12.345.67.254 254 108 42.520 -Auvinen 12.345.67.1 - 12.345.67.254 254 95 37.402 -Auvinen 12.345.67.1 - 12.345.67.254 254 101 39.764 -Auvinen 12.345.67.1 - 12.345.67.254 254 103 40.551 -Auvinen 12.345.67.1 - 12.345.67.254 254 97 38.189 -Auvinen 12.345.67.1 - 12.345.67.254 254 100 39.370 -Auvinen 12.345.67.1 - 12.345.67.254 254 102 40.157 -Auvinen 12.345.67.1 - 12.345.67.254 254 110 43.307 -Auvinen 12.345.67.1 - 12.345.67.254 254 116 45.669 -Auvinen 12.345.67.1 - 12.345.67.254 254 102 40.157 -Auvinen 12.345.67.1 - 12.345.67.254 254 99 38.976 -Auvinen 12.345.67.1 - 12.345.67.254 254 94 37.008 -Auvinen 12.345.67.1 - 12.345.67.254 254 94 37.008 -Harakka 12.345.67.3 - 12.345.67.254 252 128 50.794 -Harakka 12.345.67.1 - 12.345.67.254 254 127 50.000 -Harakka 12.345.67.1 - 12.345.67.254 254 121 47.638 -Harakka 12.345.67.1 - 12.345.67.254 254 109 42.913 -Harakka 12.345.67.1 - 12.345.67.254 254 121 47.638 -Harakka 12.345.67.1 - 12.345.67.254 254 135 53.150 -Harakka 12.345.67.1 - 12.345.67.254 254 121 47.638 -Harakka 12.345.67.1 - 12.345.67.254 254 124 48.819 -Harakka 12.345.67.1 - 12.345.67.254 254 121 47.638 -Harakka 12.345.67.1 - 12.345.67.254 254 105 41.339 -Harakka 12.345.67.1 - 12.345.67.254 254 126 49.606 -Harakka 12.345.67.1 - 12.345.67.254 254 129 50.787 -Harakka 12.345.67.1 - 12.345.67.254 254 119 46.850 -Harakka 12.345.67.1 - 12.345.67.254 254 112 44.094 -Harakka 12.345.67.1 - 12.345.67.254 254 123 48.425 -Harakka 12.345.67.1 - 12.345.67.254 254 113 44.488 -Eronen 12.345.67.3 - 12.345.67.254 252 81 32.143 -Eronen 12.345.67.1 - 12.345.67.254 254 98 38.583 -Eronen 12.345.67.1 - 12.345.67.254 254 83 32.677 -Eronen 12.345.67.1 - 12.345.67.254 254 84 33.071 -Eronen 12.345.67.1 - 12.345.67.254 254 85 33.465 -Eronen 12.345.67.1 - 12.345.67.254 254 92 36.220 -Eronen 12.345.67.1 - 12.345.67.254 254 87 34.252 -Eronen 12.345.67.1 - 12.345.67.254 254 79 31.102 -Eronen 12.345.67.1 - 12.345.67.254 254 93 36.614 -Eronen 12.345.67.1 - 12.345.67.254 254 92 36.220 -Eronen 12.345.67.1 - 12.345.67.254 254 85 33.465 -Eronen 12.345.67.1 - 12.345.67.254 254 96 37.795 -Eronen 12.345.67.1 - 12.345.67.254 254 87 34.252 -Eronen 12.345.67.1 - 12.345.67.254 254 101 39.764 -Eronen 12.345.67.1 - 12.345.67.254 254 97 38.189 -Eronen 12.345.67.1 - 12.345.67.254 254 81 31.890 -Haavikko 12.345.67.3 - 12.345.67.254 252 89 35.317 -Haavikko 12.345.67.1 - 12.345.67.254 254 91 35.827 -Haavikko 12.345.67.1 - 12.345.67.254 254 91 35.827 -Haavikko 12.345.67.1 - 12.345.67.254 254 109 42.913 -Haavikko 12.345.67.1 - 12.345.67.254 254 89 35.039 -Haavikko 12.345.67.1 - 12.345.67.254 254 100 39.370 -Haavikko 12.345.67.1 - 12.345.67.254 254 87 34.252 -Haavikko 12.345.67.1 - 12.345.67.254 254 98 38.583 -Haavikko 12.345.67.1 - 12.345.67.254 254 87 34.252 -Haavikko 12.345.67.1 - 12.345.67.254 254 90 35.433 -Haavikko 12.345.67.1 - 12.345.67.254 254 95 37.402 -Haavikko 12.345.67.1 - 12.345.67.254 254 86 33.858 -Haavikko 12.345.67.1 - 12.345.67.254 254 83 32.677 -Haavikko 12.345.67.1 - 12.345.67.254 254 102 40.157 -Haavikko 12.345.67.1 - 12.345.67.254 254 104 40.945 -Haavikko 12.345.67.1 - 12.345.67.1 1 1 100.000 -Hakkarainen 12.345.67.3 - 12.345.67.254 252 25 9.921 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 37 14.567 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 37 14.567 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 36 14.173 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 33 12.992 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 38 14.961 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 33 12.992 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 38 14.961 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 29 11.417 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 28 11.024 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 31 12.205 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 37 14.567 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 30 11.811 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 29 11.417 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 35 13.780 -Hakkarainen 12.345.67.1 - 12.345.67.254 254 44 17.323 -Halonen 12.345.67.3 - 12.345.67.254 252 110 43.651 -Halonen 12.345.67.1 - 12.345.67.254 254 122 48.031 -Halonen 12.345.67.1 - 12.345.67.254 254 113 44.488 -Halonen 12.345.67.1 - 12.345.67.254 254 95 37.402 -Halonen 12.345.678.1 - 12.345.678.254 254 107 42.126 -Halonen 12.345.678.1 - 12.345.678.254 254 117 46.063 -Halonen 12.345.678.1 - 12.345.678.254 254 124 48.819 -Halonen 12.345.678.1 - 12.345.678.254 254 126 49.606 -Halonen 12.345.678.1 - 12.345.678.254 254 114 44.882 -Halonen 12.345.678.1 - 12.345.678.254 254 112 44.094 -Halonen 12.345.678.1 - 12.345.678.254 254 120 47.244 -Halonen 12.345.678.1 - 12.345.678.254 254 109 42.913 -Halonen 12.345.678.1 - 12.345.678.254 254 111 43.701 -Halonen 12.345.678.1 - 12.345.678.254 254 115 45.276 -Halonen 12.345.678.1 - 12.345.678.254 254 119 46.850 -Halonen 12.345.678.1 - 12.345.678.254 254 101 39.764 -Halttunen 12.345.678.3 - 12.345.678.254 252 214 84.921 -Halttunen 12.345.678.1 - 12.345.678.254 254 213 83.858 -Halttunen 12.345.678.1 - 12.345.678.254 254 211 83.071 -Halttunen 12.345.678.1 - 12.345.678.254 254 224 88.189 -Halttunen 12.345.678.1 - 12.345.678.254 254 209 82.283 -Halttunen 12.345.678.1 - 12.345.678.254 254 212 83.465 -Halttunen 12.345.678.1 - 12.345.678.254 254 204 80.315 -Halttunen 12.345.678.1 - 12.345.678.254 254 215 84.646 -Husso 12.345.678.3 - 12.345.678.254 252 177 70.238 -Husso 12.345.678.1 - 12.345.678.254 254 173 68.110 -Husso 12.345.678.1 - 12.345.678.254 254 169 66.535 -Husso 12.345.678.1 - 12.345.678.254 254 170 66.929 -Husso 12.345.678.1 - 12.345.678.254 254 173 68.110 -Husso 12.345.678.1 - 12.345.678.254 254 162 63.780 -Husso 12.345.678.1 - 12.345.678.254 254 169 66.535 -Husso 12.345.678.1 - 12.345.678.254 254 185 72.835 -Ilmovuori 12.345.678.3 - 12.345.678.254 252 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.1 1 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Ilmovuori 12.345.678.1 - 12.345.678.254 254 0 0.000 -Jaskanen 12.345.678.3 - 12.345.678.254 252 180 71.429 -Jaskanen 12.345.678.1 - 12.345.678.254 254 177 69.685 -Jaskanen 12.345.678.1 - 12.345.678.254 254 176 69.291 -Jaskanen 12.345.678.1 - 12.345.678.254 254 172 67.717 -Jaskanen 12.345.678.1 - 12.345.678.254 254 195 76.772 -Jaskanen 12.345.678.1 - 12.345.678.254 254 172 67.717 -Jaskanen 12.345.678.1 - 12.345.678.254 254 184 72.441 -Jaskanen 12.345.678.1 - 12.345.678.254 254 175 68.898 -Jaskanen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Jaskanen 12.345.678.1 - 12.345.678.254 254 187 73.622 -Jaskanen 12.345.678.1 - 12.345.678.254 254 172 67.717 -Jaskanen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Jaskanen 12.345.678.1 - 12.345.678.254 254 187 73.622 -Jaskanen 12.345.678.1 - 12.345.678.254 254 181 71.260 -Jaskanen 12.345.678.1 - 12.345.678.254 254 176 69.291 -Jaskanen 12.345.678.1 - 12.345.678.254 254 171 67.323 -Honkanen 12.345.678.3 - 12.345.678.254 252 105 41.667 -Honkanen 12.345.678.1 - 12.345.678.254 254 106 41.732 -Honkanen 12.345.678.1 - 12.345.678.254 254 117 46.063 -Honkanen 12.345.678.1 - 12.345.678.254 254 98 38.583 -Honkanen 12.345.678.1 - 12.345.678.254 254 103 40.551 -Honkanen 12.345.678.1 - 12.345.678.254 254 98 38.583 -Honkanen 12.345.678.1 - 12.345.678.254 254 106 41.732 -Honkanen 12.345.678.1 - 12.345.678.254 254 118 46.457 -Honkanen 12.345.678.1 - 12.345.678.254 254 109 42.913 -Honkanen 12.345.678.1 - 12.345.678.254 254 101 39.764 -Honkanen 12.345.678.1 - 12.345.678.254 254 107 42.126 -Honkanen 12.345.678.1 - 12.345.678.254 254 98 38.583 -Honkanen 12.345.678.1 - 12.345.678.254 254 105 41.339 -Honkanen 12.345.678.1 - 12.345.678.254 254 115 45.276 -Honkanen 12.345.678.1 - 12.345.678.254 254 113 44.488 -Honkanen 12.345.678.1 - 12.345.678.254 254 110 43.307 -Honkipuro 12.345.67.3 - 12.345.67.254 252 98 38.889 -Honkipuro 12.345.67.1 - 12.345.67.254 254 99 38.976 -Honkipuro 12.345.67.1 - 12.345.67.254 254 89 35.039 -Honkipuro 12.345.67.1 - 12.345.67.254 254 100 39.370 -Honkipuro 12.345.67.1 - 12.345.67.254 254 101 39.764 -Honkipuro 12.345.67.1 - 12.345.67.254 254 117 46.063 -Honkipuro 12.345.67.1 - 12.345.67.254 254 97 38.189 -Honkipuro 12.345.67.1 - 12.345.67.254 254 92 36.220 -Honkipuro 12.345.67.1 - 12.345.67.254 254 104 40.945 -Honkipuro 12.345.67.1 - 12.345.67.254 254 91 35.827 -Honkipuro 12.345.67.1 - 12.345.67.254 254 94 37.008 -Honkipuro 12.345.67.1 - 12.345.67.254 254 98 38.583 -Honkipuro 12.345.67.1 - 12.345.67.254 254 100 39.370 -Honkipuro 12.345.67.1 - 12.345.67.254 254 110 43.307 -Honkipuro 12.345.67.1 - 12.345.67.254 254 96 37.795 -Honkipuro 12.345.67.1 - 12.345.67.254 254 103 40.551 -Ilarionova 12.345.67.3 - 12.345.67.254 252 118 46.825 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 1 100.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 1 100.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 1 100.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 1 100.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 1 100.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 0 0.000 -Ilarionova 12.345.67.1 - 12.345.67.1 1 1 100.000 -Ilarionova 12.345.67.1 - 12.345.67.254 254 131 51.575 -Huhtala 12.345.67.3 - 12.345.67.254 252 105 41.667 -Huhtala 12.345.67.1 - 12.345.67.254 254 104 40.945 -Huhtala 12.345.67.1 - 12.345.67.254 254 104 40.945 -Huhtala 12.345.67.1 - 12.345.67.254 254 95 37.402 -Huhtala 12.345.67.1 - 12.345.67.254 254 97 38.189 -Huhtala 12.345.67.1 - 12.345.67.254 254 106 41.732 -Huhtala 12.345.67.1 - 12.345.67.254 254 110 43.307 -Huhtala 12.345.67.1 - 12.345.67.254 254 105 41.339 -Huhtala 12.345.67.1 - 12.345.67.254 254 88 34.646 -Huhtala 12.345.67.1 - 12.345.67.254 254 106 41.732 -Huhtala 12.345.67.1 - 12.345.67.254 254 93 36.614 -Huhtala 12.345.67.1 - 12.345.67.254 254 103 40.551 -Huhtala 12.345.67.1 - 12.345.67.254 254 103 40.551 -Huhtala 12.345.67.1 - 12.345.67.254 254 96 37.795 -Huhtala 12.345.67.1 - 12.345.67.254 254 103 40.551 -Huhtala 12.345.67.1 - 12.345.67.254 254 98 38.583 -Hult 12.345.67.3 - 12.345.67.254 252 86 34.127 -Hult 12.345.67.1 - 12.345.67.254 254 86 33.858 -Hult 12.345.67.1 - 12.345.67.254 254 80 31.496 -Hult 12.345.67.1 - 12.345.67.254 254 87 34.252 -Hult 12.345.678.1 - 12.345.678.254 254 89 35.039 -Hult 12.345.678.1 - 12.345.678.254 254 82 32.283 -Hult 12.345.678.1 - 12.345.678.254 254 94 37.008 -Hult 12.345.678.1 - 12.345.678.254 254 85 33.465 -Hult 12.345.678.1 - 12.345.678.254 254 93 36.614 -Hult 12.345.678.1 - 12.345.678.254 254 83 32.677 -Hult 12.345.678.1 - 12.345.678.254 254 89 35.039 -Hult 12.345.678.1 - 12.345.678.254 254 84 33.071 -Hult 12.345.678.1 - 12.345.678.254 254 89 35.039 -Hult 12.345.678.1 - 12.345.678.254 254 92 36.220 -Hult 12.345.678.1 - 12.345.678.254 254 83 32.677 -Hult 12.345.678.1 - 12.345.678.254 254 85 33.465 -Huusko 12.345.678.3 - 12.345.678.254 252 80 31.746 -Huusko 12.345.678.1 - 12.345.678.254 254 112 44.094 -Huusko 12.345.678.1 - 12.345.678.254 254 91 35.827 -Huusko 12.345.678.1 - 12.345.678.254 254 115 45.276 -Huusko 12.345.678.1 - 12.345.678.254 254 93 36.614 -Huusko 12.345.678.1 - 12.345.678.254 254 94 37.008 -Huusko 12.345.678.1 - 12.345.678.254 254 91 35.827 -Huusko 12.345.678.1 - 12.345.678.254 254 82 32.283 -Huusko 12.345.678.1 - 12.345.678.254 254 94 37.008 -Huusko 12.345.678.1 - 12.345.678.254 254 101 39.764 -Huusko 12.345.678.1 - 12.345.678.254 254 110 43.307 -Huusko 12.345.678.1 - 12.345.678.254 254 97 38.189 -Huusko 12.345.678.1 - 12.345.678.254 254 101 39.764 -Huusko 12.345.678.1 - 12.345.678.254 254 83 32.677 -Huusko 12.345.678.1 - 12.345.678.254 254 94 37.008 -Huusko 12.345.678.1 - 12.345.678.254 254 94 37.008 -Eronen 12.345.678.3 - 12.345.678.254 252 74 29.365 -Eronen 12.345.678.1 - 12.345.678.254 254 70 27.559 -Auvinen 12.345.678.3 - 12.345.678.254 252 102 40.476 -Auvinen 12.345.678.1 - 12.345.678.254 254 87 34.252 -Honkipuro 12.345.678.3 - 12.345.678.254 252 87 34.524 -Honkipuro 12.345.678.1 - 12.345.678.254 254 89 35.039 -Jaskanen 12.345.678.3 - 12.345.678.254 252 164 65.079 -Jaskanen 12.345.678.1 - 12.345.678.254 254 190 74.803 -Jaskanen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Jaskanen 12.345.678.1 - 12.345.678.254 254 177 69.685 -Jaskanen 12.345.678.1 - 12.345.678.254 254 180 70.866 -Jaskanen 12.345.678.1 - 12.345.678.254 254 187 73.622 -Jaskanen 12.345.678.1 - 12.345.678.254 254 183 72.047 -Jaskanen 12.345.678.1 - 12.345.678.254 254 179 70.472 -Jaskanen 12.345.678.1 - 12.345.678.254 254 173 68.110 -Jaskanen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Jaskanen 12.345.678.1 - 12.345.678.254 254 186 73.228 -Jaskanen 12.345.678.1 - 12.345.678.254 254 178 70.079 -Jaskanen 12.345.678.1 - 12.345.678.254 254 173 68.110 -Jaskanen 12.345.678.1 - 12.345.678.254 254 164 64.567 -Jaskanen 12.345.678.1 - 12.345.678.254 254 181 71.260 -Jaskanen 12.345.678.1 - 12.345.678.254 254 168 66.142 -Halttunen 12.345.6.3 - 12.345.6.254 252 139 55.159 -Halttunen 12.345.6.1 - 12.345.6.254 254 145 57.087 -Halttunen 12.345.6.1 - 12.345.6.254 254 138 54.331 -Halttunen 12.345.6.1 - 12.345.6.254 254 149 58.661 -Halttunen 12.345.6.1 - 12.345.6.254 254 142 55.906 -Halttunen 12.345.6.1 - 12.345.6.254 254 128 50.394 -Halttunen 12.345.6.1 - 12.345.6.254 254 155 61.024 -Halttunen 12.345.6.1 - 12.345.6.254 254 139 54.724 -Halttunen 12.345.6.1 - 12.345.6.254 254 137 53.937 -Halttunen 12.345.6.1 - 12.345.6.254 254 136 53.543 -Halttunen 12.345.67.1 - 12.345.67.254 254 136 53.543 -Halttunen 12.345.67.1 - 12.345.67.254 254 148 58.268 -Halttunen 12.345.67.1 - 12.345.67.254 254 146 57.480 -Halttunen 12.345.67.1 - 12.345.67.254 254 136 53.543 -Halttunen 12.345.67.1 - 12.345.67.254 254 135 53.150 -Halttunen 12.345.67.1 - 12.345.67.254 254 144 56.693 -Halttunen 12.345.67.1 - 12.345.67.254 254 146 57.480 -Halttunen 12.345.67.1 - 12.345.67.254 254 145 57.087 -Halttunen 12.345.67.1 - 12.345.67.254 254 132 51.969 -Halttunen 12.345.67.1 - 12.345.67.254 254 154 60.630 -Halttunen 12.345.67.1 - 12.345.67.254 254 144 56.693 -Halttunen 12.345.67.1 - 12.345.67.254 254 163 64.173 -Halttunen 12.345.67.1 - 12.345.67.254 254 139 54.724 -Halttunen 12.345.67.1 - 12.345.67.254 254 143 56.299 -Halttunen 12.345.67.1 - 12.345.67.254 254 141 55.512 -Halttunen 12.345.67.1 - 12.345.67.254 254 145 57.087 -Halttunen 12.345.67.1 - 12.345.67.254 254 141 55.512 -Halttunen 12.345.67.1 - 12.345.67.254 254 148 58.268 -Halttunen 12.345.67.1 - 12.345.67.254 254 146 57.480 -Halttunen 12.345.67.1 - 12.345.67.254 254 140 55.118 -Halttunen 12.345.67.1 - 12.345.67.254 254 145 57.087 -Halttunen 12.345.67.1 - 12.345.67.254 254 124 48.819 -Husso 12.345.67.3 - 12.345.67.254 252 102 40.476 -Husso 12.345.67.1 - 12.345.67.254 254 97 38.189 -Husso 12.345.67.1 - 12.345.67.254 254 115 45.276 -Husso 12.345.67.1 - 12.345.67.254 254 101 39.764 -Husso 12.345.67.1 - 12.345.67.254 254 102 40.157 -Husso 12.345.67.1 - 12.345.67.254 254 103 40.551 -Husso 12.345.67.1 - 12.345.67.254 254 102 40.157 -Husso 12.345.67.1 - 12.345.67.254 254 106 41.732 -Husso 12.345.67.1 - 12.345.67.254 254 100 39.370 -Husso 12.345.67.1 - 12.345.67.254 254 106 41.732 -Husso 12.345.67.1 - 12.345.67.254 254 100 39.370 -Husso 12.345.67.1 - 12.345.67.254 254 98 38.583 -Husso 12.345.67.1 - 12.345.67.254 254 100 39.370 -Husso 12.345.67.1 - 12.345.67.254 254 109 42.913 -Husso 12.345.67.1 - 12.345.67.254 254 117 46.063 -Husso 12.345.67.1 - 12.345.67.254 254 101 39.764 -Husso 12.345.67.1 - 12.345.67.254 254 109 42.913 -Husso 12.345.67.1 - 12.345.67.254 254 102 40.157 -Husso 12.345.67.1 - 12.345.67.254 254 94 37.008 -Husso 12.345.67.1 - 12.345.67.254 254 101 39.764 -Husso 12.345.67.1 - 12.345.67.254 254 102 40.157 -Husso 12.345.67.1 - 12.345.67.254 254 99 38.976 -Husso 12.345.67.1 - 12.345.67.254 254 102 40.157 -Husso 12.345.67.1 - 12.345.67.254 254 103 40.551 -Husso 12.345.67.1 - 12.345.67.254 254 106 41.732 -Husso 12.345.67.1 - 12.345.67.254 254 119 46.850 -Husso 12.345.67.1 - 12.345.67.254 254 99 38.976 -Husso 12.345.67.1 - 12.345.67.254 254 96 37.795 -Husso 12.345.67.1 - 12.345.67.254 254 112 44.094 -Husso 12.345.67.1 - 12.345.67.254 254 102 40.157 -Husso 12.345.67.1 - 12.345.67.254 254 104 40.945 -Husso 12.345.67.1 - 12.345.67.254 254 106 41.732 -Jaskanen 12.345.678.3 - 12.345.678.254 252 180 71.429 -Jaskanen 12.345.678.1 - 12.345.678.254 254 192 75.591 -Jaskanen 12.345.678.1 - 12.345.678.254 254 176 69.291 -Jaskanen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Jaskanen 12.345.678.1 - 12.345.678.254 254 178 70.079 -Jaskanen 12.345.678.1 - 12.345.678.254 254 192 75.591 -Jaskanen 12.345.678.1 - 12.345.678.254 254 182 71.654 -Jaskanen 12.345.678.1 - 12.345.678.254 254 180 70.866 -Jaskanen 12.345.678.1 - 12.345.678.254 254 172 67.717 -Jaskanen 12.345.678.1 - 12.345.678.254 254 182 71.654 -Jaskanen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Jaskanen 12.345.678.1 - 12.345.678.254 254 188 74.016 -Jaskanen 12.345.678.1 - 12.345.678.254 254 171 67.323 -Jaskanen 12.345.678.1 - 12.345.678.254 254 187 73.622 -Jaskanen 12.345.678.1 - 12.345.678.254 254 161 63.386 -Jaskanen 12.345.678.1 - 12.345.678.254 254 176 69.291 -Jaskanen 12.345.678.1 - 12.345.678.254 254 182 71.654 -Jaskanen 12.345.678.1 - 12.345.678.254 254 178 70.079 -Jaskanen 12.345.678.1 - 12.345.678.254 254 180 70.866 -Jaskanen 12.345.678.1 - 12.345.678.254 254 177 69.685 -Jaskanen 12.345.678.1 - 12.345.678.254 254 173 68.110 -Jaskanen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Jaskanen 12.345.678.1 - 12.345.678.254 254 178 70.079 -Jaskanen 12.345.678.1 - 12.345.678.254 254 176 69.291 -Jaskanen 12.345.678.1 - 12.345.678.254 254 162 63.780 -Jaskanen 12.345.678.1 - 12.345.678.254 254 193 75.984 -Jaskanen 12.345.678.1 - 12.345.678.254 254 184 72.441 -Jaskanen 12.345.678.1 - 12.345.678.254 254 187 73.622 -Jaskanen 12.345.678.1 - 12.345.678.254 254 188 74.016 -Jaskanen 12.345.678.1 - 12.345.678.254 254 165 64.961 -Jaskanen 12.345.678.1 - 12.345.678.254 254 171 67.323 -Jaskanen 12.345.678.1 - 12.345.678.254 254 174 68.504 -Halonen 12.345.6.3 - 12.345.6.254 252 214 12.345 -Halonen 12.345.6.1 - 12.345.6.254 254 219 86.220 -Halonen 12.345.6.1 - 12.345.6.254 254 225 88.583 -Halonen 12.345.6.1 - 12.345.6.254 254 228 89.764 -Halonen 12.345.6.1 - 12.345.6.254 254 226 88.976 -Halonen 12.345.6.1 - 12.345.6.254 254 212 83.465 -Halonen 12.345.6.1 - 12.345.6.254 254 217 85.433 -Halonen 12.345.6.1 - 12.345.6.254 254 216 85.039 -Halonen 12.345.6.1 - 12.345.6.254 254 218 85.827 -Halonen 12.345.6.1 - 12.345.6.254 254 218 85.827 -Halonen 12.345.67.1 - 12.345.67.254 254 223 87.795 -Halonen 12.345.67.1 - 12.345.67.254 254 228 89.764 -Halonen 12.345.67.1 - 12.345.67.254 254 221 87.008 -Halonen 12.345.67.1 - 12.345.67.254 254 217 85.433 -Halonen 12.345.67.1 - 12.345.67.254 254 218 85.827 -Halonen 12.345.67.1 - 12.345.67.254 254 227 89.370 -Halonen 12.345.67.1 - 12.345.67.254 254 212 83.465 -Halonen 12.345.67.1 - 12.345.67.254 254 215 12.345 -Halonen 12.345.67.1 - 12.345.67.254 254 232 91.339 -Halonen 12.345.67.1 - 12.345.67.254 254 217 85.433 -Halonen 12.345.67.1 - 12.345.67.254 254 227 89.370 -Halonen 12.345.67.1 - 12.345.67.254 254 218 85.827 -Halonen 12.345.67.1 - 12.345.67.254 254 223 87.795 -Halonen 12.345.67.1 - 12.345.67.254 254 222 87.402 -Halonen 12.345.67.1 - 12.345.67.254 254 218 85.827 -Halonen 12.345.67.1 - 12.345.67.254 254 225 88.583 -Halonen 12.345.67.1 - 12.345.67.254 254 210 82.677 -Halonen 12.345.67.1 - 12.345.67.254 254 224 88.189 -Halonen 12.345.67.1 - 12.345.67.254 254 220 86.614 -Halonen 12.345.67.1 - 12.345.67.254 254 227 89.370 -Halonen 12.345.67.1 - 12.345.67.254 254 228 89.764 -Halonen 12.345.67.1 - 12.345.67.254 254 220 86.614 -Asikainen 12.345.67.4 - 12.345.67.254 251 13 5.179 -Asikainen 12.345.67.1 - 12.345.67.254 254 17 6.693 -Asikainen 12.345.67.1 - 12.345.67.254 254 14 5.512 -Asikainen 12.345.67.1 - 12.345.67.254 254 19 7.480 -Asikainen 12.345.67.1 - 12.345.67.254 254 23 9.055 -Asikainen 12.345.67.1 - 12.345.67.254 254 19 7.480 -Asikainen 12.345.67.1 - 12.345.67.254 254 18 7.087 -Asikainen 12.345.67.1 - 12.345.67.254 254 16 6.299 -Asikainen 12.345.67.1 - 12.345.67.254 254 24 9.449 -Asikainen 12.345.67.1 - 12.345.67.254 254 24 9.449 -Asikainen 12.345.67.1 - 12.345.67.254 254 24 9.449 -Asikainen 12.345.67.1 - 12.345.67.254 254 26 10.236 -Asikainen 12.345.67.1 - 12.345.67.254 254 24 9.449 -Asikainen 12.345.67.1 - 12.345.67.254 254 33 12.992 -Asikainen 12.345.67.1 - 12.345.67.254 254 29 11.417 -Asikainen 12.345.67.1 - 12.345.67.254 254 25 9.843 -Asikainen 12.345.67.1 - 12.345.67.254 254 34 13.386 -Asikainen 12.345.67.1 - 12.345.67.254 254 31 12.205 -Asikainen 12.345.67.1 - 12.345.67.254 254 28 11.024 -Asikainen 12.345.67.1 - 12.345.67.254 254 32 12.598 -Asikainen 12.345.67.1 - 12.345.67.254 254 35 13.780 -Asikainen 12.345.67.1 - 12.345.67.254 254 36 14.173 -Asikainen 12.345.67.1 - 12.345.67.254 254 41 16.142 -Asikainen 12.345.67.1 - 12.345.67.254 254 35 13.780 -Asikainen 12.345.67.1 - 12.345.67.254 254 32 12.598 -Asikainen 12.345.67.1 - 12.345.67.254 254 33 12.992 -Asikainen 12.345.67.1 - 12.345.67.254 254 44 17.323 -Asikainen 12.345.67.1 - 12.345.67.254 254 27 10.630 -Asikainen 12.345.67.1 - 12.345.67.254 254 35 13.780 -Asikainen 12.345.67.1 - 12.345.67.254 254 32 12.598 -Asikainen 12.345.67.1 - 12.345.67.254 254 40 15.748 -Asikainen 12.345.67.1 - 12.345.67.254 254 37 14.567 -Hyle 12.345.678.3 - 12.345.678.254 252 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 1 0.394 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Hyle 12.345.678.1 - 12.345.678.254 254 0 0.000 -Halttunen 12.345.678.3 - 12.345.678.254 252 198 78.571 -Halttunen 12.345.678.1 - 12.345.678.254 254 193 75.984 -Halttunen 12.345.678.1 - 12.345.678.254 254 207 81.496 -Halttunen 12.345.678.1 - 12.345.678.254 254 191 75.197 -Husso 12.345.678.3 - 12.345.678.254 252 156 61.905 -Husso 12.345.678.1 - 12.345.678.254 254 154 60.630 -Husso 12.345.678.1 - 12.345.678.254 254 168 66.142 -Husso 12.345.678.1 - 12.345.678.254 254 169 66.535 -Husso 12.345.678.1 - 12.345.678.254 254 171 67.323 -Husso 12.345.678.1 - 12.345.678.254 254 184 72.441 -Husso 12.345.678.1 - 12.345.678.254 254 173 68.110 -Husso 12.345.678.1 - 12.345.678.254 254 166 65.354 -Halttunen 12.345.678.3 - 12.345.678.254 252 209 82.937 -Halttunen 12.345.678.1 - 12.345.678.254 254 209 82.283 -Halttunen 12.345.678.1 - 12.345.678.254 254 212 83.465 -Halttunen 12.345.678.1 - 12.345.678.254 254 205 80.709 -Halttunen 12.345.678.1 - 12.345.678.254 254 202 79.528 -Halttunen 12.345.678.1 - 12.345.678.254 254 210 82.677 -Halttunen 12.345.678.1 - 12.345.678.254 254 194 76.378 -Halttunen 12.345.678.1 - 12.345.678.254 254 193 75.984 -Husso 12.345.678.3 - 12.345.678.254 252 173 68.651 -Husso 12.345.678.1 - 12.345.678.254 254 175 68.898 -Husso 12.345.678.1 - 12.345.678.254 254 162 63.780 -Husso 12.345.678.1 - 12.345.678.254 254 166 65.354 -Husso 12.345.678.1 - 12.345.678.254 254 183 72.047 -Husso 12.345.678.1 - 12.345.678.254 254 166 65.354 -Husso 12.345.678.1 - 12.345.678.254 254 162 63.780 -Husso 12.345.678.1 - 12.345.678.254 254 163 64.173 -Halttunen 12.345.678.3 - 12.345.678.254 252 208 82.540 -Halttunen 12.345.678.1 - 12.345.678.254 254 196 77.165 -Halttunen 12.345.678.1 - 12.345.678.254 254 196 77.165 -Halttunen 12.345.678.1 - 12.345.678.254 254 205 80.709 -Halttunen 12.345.678.1 - 12.345.678.254 254 216 85.039 -Halttunen 12.345.678.1 - 12.345.678.254 254 211 83.071 -Halttunen 12.345.678.1 - 12.345.678.254 254 200 78.740 -Halttunen 12.345.678.1 - 12.345.678.254 254 208 81.890 -Halttunen 12.345.678.3 - 12.345.678.254 252 189 75.000 -Halttunen 12.345.678.1 - 12.345.678.254 254 216 85.039 -Halttunen 12.345.678.1 - 12.345.678.254 254 201 79.134 -Halttunen 12.345.678.1 - 12.345.678.254 254 205 80.709 -Ahosvaara 12.345.678.3 - 12.345.678.254 252 107 42.460 -Ahosvaara 12.345.678.1 - 12.345.678.254 254 97 38.189 -Ahosvaara 12.345.678.1 - 12.345.678.254 254 103 40.551 -Ahosvaara 12.345.678.1 - 12.345.678.254 254 113 44.488 -Janhonen 12.345.6.4 - 12.345.6.254 251 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.6.1 - 12.345.6.254 254 0 0.000 -Janhonen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Janhonen 12.345.67.1 - 12.345.67.254 254 1 0.394 -Janhonen 12.345.67.1 - 12.345.67.254 254 1 0.394 -Janhonen 12.345.67.1 - 12.345.67.254 254 2 0.787 -Janhonen 12.345.67.1 - 12.345.67.254 254 5 1.969 -Janhonen 12.345.67.1 - 12.345.67.254 254 6 2.362 -Janhonen 12.345.67.1 - 12.345.67.254 254 9 3.543 -Janhonen 12.345.67.1 - 12.345.67.254 254 4 1.575 -Janhonen 12.345.67.1 - 12.345.67.254 254 5 1.969 -Janhonen 12.345.67.1 - 12.345.67.254 254 10 3.937 -Janhonen 12.345.67.1 - 12.345.67.254 254 7 2.756 -Janhonen 12.345.67.1 - 12.345.67.254 254 8 3.150 -Janhonen 12.345.67.1 - 12.345.67.254 254 12 4.724 -Janhonen 12.345.67.1 - 12.345.67.254 254 11 4.331 -Janhonen 12.345.67.1 - 12.345.67.254 254 12 4.724 -Janhonen 12.345.67.1 - 12.345.67.254 254 15 5.906 -Janhonen 12.345.67.1 - 12.345.67.254 254 16 6.299 -Janhonen 12.345.67.1 - 12.345.67.254 254 10 3.937 -Janhonen 12.345.67.1 - 12.345.67.254 254 6 2.362 -Janhonen 12.345.67.1 - 12.345.67.254 254 15 5.906 -Janhonen 12.345.67.1 - 12.345.67.254 254 12 4.724 -Janhonen 12.345.67.1 - 12.345.67.254 254 17 6.693 -Janhonen 12.345.67.1 - 12.345.67.254 254 20 7.874 -Janhonen 12.345.67.1 - 12.345.67.254 254 12 4.724 -Janhonen 12.345.67.1 - 12.345.67.254 254 15 5.906 -Janhonen 12.345.67.1 - 12.345.67.254 254 23 9.055 -Janhonen 12.345.67.1 - 12.345.67.254 254 19 7.480 -Janhonen 12.345.67.1 - 12.345.67.254 254 19 7.480 -Janhonen 12.345.67.1 - 12.345.67.254 254 25 9.843 -Janhonen 12.345.67.1 - 12.345.67.254 254 25 9.843 -Janhonen 12.345.67.1 - 12.345.67.254 254 30 11.811 -Janhonen 12.345.67.1 - 12.345.67.254 254 30 11.811 -Janhonen 12.345.67.1 - 12.345.67.254 254 31 12.205 -Janhonen 12.345.67.1 - 12.345.67.254 254 31 12.205 -Janhonen 12.345.67.1 - 12.345.67.254 254 33 12.992 -Janhonen 12.345.67.1 - 12.345.67.254 254 31 12.205 -Janhonen 12.345.67.1 - 12.345.67.254 254 35 13.780 -Janhonen 12.345.67.1 - 12.345.67.254 254 40 15.748 -Janhonen 12.345.67.1 - 12.345.67.254 254 35 13.780 -Janhonen 12.345.67.1 - 12.345.67.254 254 43 16.929 -Janhonen 12.345.67.1 - 12.345.67.254 254 44 17.323 -Janhonen 12.345.67.1 - 12.345.67.254 254 33 12.992 -Janhonen 12.345.67.1 - 12.345.67.254 254 44 17.323 -Janhonen 12.345.67.1 - 12.345.67.254 254 35 13.780 -Janhonen 12.345.67.1 - 12.345.67.254 254 48 18.898 -Janhonen 12.345.67.1 - 12.345.67.254 254 45 17.717 -Janhonen 12.345.67.1 - 12.345.67.254 254 43 16.929 -Janhonen 12.345.67.1 - 12.345.67.254 254 46 18.110 -Janhonen 12.345.67.1 - 12.345.67.254 254 51 20.079 -Janhonen 12.345.67.1 - 12.345.67.254 254 52 20.472 -Janhonen 12.345.67.1 - 12.345.67.254 254 55 21.654 -Janhonen 12.345.67.1 - 12.345.67.254 254 56 22.047 -Janhonen 12.345.67.1 - 12.345.67.254 254 51 20.079 -Janhonen 12.345.67.1 - 12.345.67.254 254 60 23.622 -Jehkinen 12.345.67.4 - 12.345.67.254 251 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 0 0.000 -Jehkinen 12.345.67.1 - 12.345.67.254 254 1 0.394 -Jehkinen 12.345.67.1 - 12.345.67.254 254 3 1.181 -Jehkinen 12.345.67.1 - 12.345.67.254 254 3 1.181 -Jehkinen 12.345.67.1 - 12.345.67.254 254 7 2.756 -Jehkinen 12.345.67.1 - 12.345.67.254 254 5 1.969 -Jehkinen 12.345.67.1 - 12.345.67.254 254 4 1.575 -Jehkinen 12.345.67.1 - 12.345.67.254 254 6 2.362 -Jehkinen 12.345.67.1 - 12.345.67.254 254 10 3.937 -Jehkinen 12.345.67.1 - 12.345.67.254 254 7 2.756 -Jehkinen 12.345.67.1 - 12.345.67.254 254 11 4.331 -Jehkinen 12.345.67.1 - 12.345.67.254 254 13 5.118 -Jehkinen 12.345.67.1 - 12.345.67.254 254 14 5.512 -Jehkinen 12.345.67.1 - 12.345.67.254 254 15 5.906 -Jehkinen 12.345.67.1 - 12.345.67.254 254 18 7.087 -Jehkinen 12.345.67.1 - 12.345.67.254 254 18 7.087 -Jehkinen 12.345.67.1 - 12.345.67.254 254 19 7.480 -Jehkinen 12.345.67.1 - 12.345.67.254 254 17 6.693 -Jehkinen 12.345.67.1 - 12.345.67.254 254 17 6.693 -Jehkinen 12.345.67.1 - 12.345.67.254 254 19 7.480 -Hokkanen 12.345.67.3 - 12.345.67.254 252 55 21.825 -Hokkanen 12.345.67.1 - 12.345.67.254 254 64 25.197 -Hokkanen 12.345.67.1 - 12.345.67.254 254 70 27.559 -Hokkanen 12.345.67.1 - 12.345.67.254 254 72 28.346 -Hokkanen 12.345.678.1 - 12.345.678.254 254 82 32.283 -Hokkanen 12.345.678.1 - 12.345.678.254 254 68 26.772 -Hokkanen 12.345.678.1 - 12.345.678.254 254 65 25.591 -Hokkanen 12.345.678.1 - 12.345.678.254 254 70 27.559 -Hokkanen 12.345.678.1 - 12.345.678.254 254 83 32.677 -Hokkanen 12.345.678.1 - 12.345.678.254 254 73 28.740 -Hokkanen 12.345.678.1 - 12.345.678.254 254 89 35.039 -Hokkanen 12.345.678.1 - 12.345.678.254 254 92 36.220 -Hokkanen 12.345.678.1 - 12.345.678.254 254 74 29.134 -Hokkanen 12.345.678.1 - 12.345.678.254 254 68 26.772 -Hokkanen 12.345.678.1 - 12.345.678.254 254 73 28.740 -Hokkanen 12.345.678.1 - 12.345.678.254 254 88 34.646 -Husso 12.345.678.3 - 12.345.678.254 252 142 56.349 -Husso 12.345.678.1 - 12.345.678.254 254 155 61.024 -Husso 12.345.678.1 - 12.345.678.254 254 160 62.992 -Husso 12.345.678.1 - 12.345.678.254 254 148 58.268 -Husso 12.345.678.1 - 12.345.678.254 254 148 58.268 -Husso 12.345.678.1 - 12.345.678.254 254 157 61.811 -Husso 12.345.678.1 - 12.345.678.254 254 149 58.661 -Husso 12.345.678.1 - 12.345.678.254 254 163 64.173 -Husso 12.345.678.3 - 12.345.678.254 252 135 53.571 -Husso 12.345.678.1 - 12.345.678.254 254 141 55.512 -Husso 12.345.678.1 - 12.345.678.254 254 140 55.118 -Husso 12.345.678.1 - 12.345.678.254 254 141 55.512 -Husso 12.345.678.1 - 12.345.678.254 254 136 53.543 -Husso 12.345.678.1 - 12.345.678.254 254 125 49.213 -Husso 12.345.678.1 - 12.345.678.254 254 145 57.087 -Husso 12.345.678.1 - 12.345.678.254 254 139 54.724 -Husso 12.345.678.3 - 12.345.678.254 252 148 58.730 -Husso 12.345.678.1 - 12.345.678.254 254 159 62.598 -Husso 12.345.678.1 - 12.345.678.254 254 157 61.811 -Husso 12.345.678.1 - 12.345.678.254 254 157 61.811 -Husso 12.345.678.1 - 12.345.678.254 254 168 66.142 -Husso 12.345.678.1 - 12.345.678.254 254 153 60.236 -Husso 12.345.678.1 - 12.345.678.254 254 162 63.780 -Husso 12.345.678.1 - 12.345.678.254 254 159 62.598 -Halttunen 12.345.678.3 - 12.345.678.254 252 184 73.016 -Halttunen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Halttunen 12.345.678.1 - 12.345.678.254 254 181 71.260 -Halttunen 12.345.678.1 - 12.345.678.254 254 184 72.441 -Halttunen 12.345.678.1 - 12.345.678.254 254 175 68.898 -Halttunen 12.345.678.1 - 12.345.678.254 254 192 75.591 -Halttunen 12.345.678.1 - 12.345.678.254 254 173 68.110 -Halttunen 12.345.678.1 - 12.345.678.254 254 185 72.835 -Halttunen 12.345.678.3 - 12.345.678.254 252 116 46.032 -Halttunen 12.345.678.1 - 12.345.678.254 254 130 51.181 -Halttunen 12.345.678.1 - 12.345.678.254 254 130 51.181 -Halttunen 12.345.678.1 - 12.345.678.254 254 138 54.331 -Halttunen 12.345.678.1 - 12.345.678.254 254 143 56.299 -Halttunen 12.345.678.1 - 12.345.678.254 254 131 51.575 -Halttunen 12.345.678.1 - 12.345.678.254 254 121 47.638 -Halttunen 12.345.678.1 - 12.345.678.254 254 126 49.606 -Jelonen 12.345.6.3 - 12.345.6.254 252 57 22.619 -Jelonen 12.345.6.1 - 12.345.6.254 254 47 18.504 -Jelonen 12.345.6.1 - 12.345.6.254 254 52 20.472 -Jelonen 12.345.6.1 - 12.345.6.254 254 52 20.472 -Jelonen 12.345.6.1 - 12.345.6.254 254 58 22.835 -Jelonen 12.345.6.1 - 12.345.6.254 254 59 23.228 -Jelonen 12.345.6.1 - 12.345.6.254 254 55 21.654 -Jelonen 12.345.6.1 - 12.345.6.254 254 52 20.472 -Jelonen 12.345.6.1 - 12.345.6.254 254 55 21.654 -Jelonen 12.345.6.1 - 12.345.6.254 254 67 26.378 -Jelonen 12.345.67.1 - 12.345.67.254 254 62 24.409 -Jelonen 12.345.67.1 - 12.345.67.254 254 60 23.622 -Jelonen 12.345.67.1 - 12.345.67.254 254 60 23.622 -Jelonen 12.345.67.1 - 12.345.67.254 254 61 24.016 -Jelonen 12.345.67.1 - 12.345.67.254 254 64 25.197 -Jelonen 12.345.67.1 - 12.345.67.254 254 70 27.559 -Jaskanen 12.345.67.3 - 12.345.67.254 252 146 57.937 -Jaskanen 12.345.67.1 - 12.345.67.254 254 143 56.299 -Jaskanen 12.345.67.1 - 12.345.67.254 254 142 55.906 -Jaskanen 12.345.67.1 - 12.345.67.254 254 161 63.386 -Jaskanen 12.345.67.1 - 12.345.67.254 254 150 59.055 -Jaskanen 12.345.67.1 - 12.345.67.254 254 155 61.024 -Jaskanen 12.345.67.1 - 12.345.67.254 254 153 60.236 -Jaskanen 12.345.67.1 - 12.345.67.254 254 161 63.386 -Jaskanen 12.345.67.1 - 12.345.67.254 254 150 59.055 -Jaskanen 12.345.67.1 - 12.345.67.254 254 156 61.417 -Jaskanen 12.345.67.1 - 12.345.67.254 254 150 59.055 -Jaskanen 12.345.67.1 - 12.345.67.254 254 147 57.874 -Jaskanen 12.345.67.1 - 12.345.67.254 254 148 58.268 -Jaskanen 12.345.67.1 - 12.345.67.254 254 150 59.055 -Jaskanen 12.345.67.1 - 12.345.67.254 254 143 56.299 -Jaskanen 12.345.67.1 - 12.345.67.254 254 145 57.087 -Itkonen 12.345.67.3 - 12.345.67.254 252 165 65.476 -Itkonen 12.345.67.1 - 12.345.67.254 254 153 60.236 -Itkonen 12.345.67.1 - 12.345.67.254 254 142 55.906 -Itkonen 12.345.67.1 - 12.345.67.254 254 178 70.079 -Itkonen 12.345.67.1 - 12.345.67.254 254 163 64.173 -Itkonen 12.345.67.1 - 12.345.67.254 254 165 64.961 -Itkonen 12.345.67.1 - 12.345.67.254 254 175 68.898 -Itkonen 12.345.67.1 - 12.345.67.254 254 161 63.386 -Huttunen 12.345.678.3 - 12.345.678.254 252 39 15.476 -Huttunen 12.345.678.1 - 12.345.678.254 254 44 17.323 -Huttunen 12.345.678.1 - 12.345.678.254 254 43 16.929 -Huttunen 12.345.678.1 - 12.345.678.254 254 45 17.717 -Huttunen 12.345.678.1 - 12.345.678.254 254 49 19.291 -Huttunen 12.345.678.1 - 12.345.678.254 254 50 19.685 -Huttunen 12.345.678.1 - 12.345.678.254 254 48 18.898 -Huttunen 12.345.678.1 - 12.345.678.254 254 53 20.866 -Holappa 12.345.678.3 - 12.345.678.254 252 179 71.032 -Holappa 12.345.678.1 - 12.345.678.254 254 156 61.417 -Holappa 12.345.678.1 - 12.345.678.254 254 172 67.717 -Holappa 12.345.678.1 - 12.345.678.254 254 166 65.354 -Holappa 12.345.678.1 - 12.345.678.254 254 156 61.417 -Holappa 12.345.678.1 - 12.345.678.254 254 162 63.780 -Holappa 12.345.678.1 - 12.345.678.254 254 162 63.780 -Holappa 12.345.678.1 - 12.345.678.254 254 159 62.598 -Holappa 12.345.678.1 - 12.345.678.254 254 179 70.472 -Holappa 12.345.678.1 - 12.345.678.254 254 164 64.567 -Holappa 12.345.678.1 - 12.345.678.254 254 165 64.961 -Holappa 12.345.678.1 - 12.345.678.254 254 162 63.780 -Holappa 12.345.678.1 - 12.345.678.254 254 171 67.323 -Holappa 12.345.678.1 - 12.345.678.254 254 171 67.323 -Holappa 12.345.678.1 - 12.345.678.254 254 163 64.173 -Holappa 12.345.678.1 - 12.345.678.254 254 156 61.417 -Holopainen 123.45.198.2 - 124.56.198.254 253 2 0.791 - -Shared networks: -name max cur percent -Hynninen 0 0 nan -Hyttinen 0 0 nan -Hyytinen 0 0 nan -Atjonen 252 1 0.397 -Auvinen 4568 1812 39.667 -Harakka 4062 1934 47.612 -Eronen 4568 1565 34.260 -Haavikko 4315 1585 36.732 -Hakkarainen 4062 540 13.294 -Halonen 20314 12514 61.603 -Halttunen 20304 13619 67.075 -Hokkanen 4062 1186 29.197 -Huttunen 2030 371 18.276 -Honkipuro 4568 1765 38.638 -Huhtala 4062 1616 39.783 -Hult 4823 1657 34.356 -Huohvanainen 4062 677 16.667 -Husso 20306 10971 54.028 -Holappa 4062 2643 65.066 -Jelonen 4062 931 22.920 -Honkanen 4568 1901 41.616 -Huusko 4062 1532 37.715 -Huuskonen 3809 2098 55.080 -Ilarionova 520 255 49.038 -Ikonen 4062 0 0.000 -Ilmovuori 4315 0 0.000 -Hyle 4062 1 0.025 -Aatamila 252 33 13.095 -Hattunen 2030 0 0.000 -Harkovski 2028 1573 77.564 -Happo 1014 663 65.385 -Happonen 1014 726 71.598 -Harakka 1014 803 79.191 -Harjunen 1014 818 80.671 -Haukka 1014 345 34.024 -Hautanen 1014 408 40.237 -Havu 1014 404 39.842 -Heiskanen 1014 452 44.576 -Hietanen 1014 395 38.955 -Hiiliaho 1014 408 40.237 -Hilonen 1014 323 31.854 -Hirvonen 1014 714 70.414 -Hoivassilta 507 0 0.000 -Jaskanen 28181 19262 68.351 -Itkonen-temp 3556 0 0.000 -Itkonen 4312 2788 64.657 -Ahtonen 1014 266 26.233 -Arviluoma 252 3 1.190 -Ahosvaara 1014 420 41.420 -Holopainen 253 2 0.791 -Anttila 505 0 0.000 -Janhonen 16253 1344 8.269 -Asikainen 8125 900 11.077 -Jehkinen 8125 207 2.548 - -Sum of all: -name max cur percent -All networks 228455 94431 41.335 diff --git a/webpages/sitemap.txt b/webpages/sitemap.txt index 60a6df9..5fbac09 100644 --- a/webpages/sitemap.txt +++ b/webpages/sitemap.txt @@ -1,7 +1,7 @@ http://dhcpd-pools.sourceforge.net/ http://dhcpd-pools.sourceforge.net/dhcpd-pools.awk http://dhcpd-pools.sourceforge.net/man.html -http://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.txt +http://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.html http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c_ae4a0e5747966cb33e459ccd1039d1761_cgraph.md5 http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a17de1b2b624a2ffc25dff9fabd2aab87_cgraph.md5 http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c.html From 27c70a0efed51039ed94fe6537ad7c736e18403a Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 23 Jul 2018 21:33:25 +0100 Subject: [PATCH 12/53] fix switch missing default case warnings src/other.c:387:3: warning: switch missing default case [-Wswitch-default] The one in do_counting() should be unreachable, so add abort() call to it. Signed-off-by: Sami Kerola --- src/analyze.c | 3 +++ src/other.c | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/analyze.c b/src/analyze.c index 7d7ac72..0dcd8e7 100644 --- a/src/analyze.c +++ b/src/analyze.c @@ -84,6 +84,9 @@ void do_counting(struct conf_t *state) case BACKUP: range_p->backups++; break; + default: + abort(); + break; } } /* Size of range size. */ diff --git a/src/other.c b/src/other.c index 2b2cbf9..63d094b 100644 --- a/src/other.c +++ b/src/other.c @@ -411,6 +411,8 @@ int if (!memcmp(" hardware ethernet", str, 19)) return PREFIX_HARDWARE_ETHERNET; break; + default: + break; } } if (!memcmp("lease ", str, 6)) @@ -464,6 +466,8 @@ int if (!memcmp(" hardware ethernet", str, 19)) return PREFIX_HARDWARE_ETHERNET; break; + default: + break; } } if (!memcmp(" iaaddr ", str, 9)) From 5027b50adee47c3cbd99c6cc67ddb23340dbf2cd Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 23 Jul 2018 21:41:59 +0100 Subject: [PATCH 13/53] sort: ensure NaN will not trip over comp_double() In unlikely event of NaN being compared avoid exception. If NaN appears in input data it will be evaluated as equal with any value. Signed-off-by: Sami Kerola --- src/sort.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/sort.c b/src/sort.c index 4fdb4e0..2c3a05f 100644 --- a/src/sort.c +++ b/src/sort.c @@ -40,6 +40,7 @@ #include +#include #include #include #include @@ -118,9 +119,14 @@ int rangecomp(const void *restrict r1, const void *restrict r2) */ int comp_double(double f1, double f2) { - return f1 < f2 ? -1 : f1 > f2 ? 1 : 0; + if (isless(f1, f2)) + return -1; + else if (isless(f2, f1)) + return 1; + return 0; } + /*! \brief Compare two range_t by their first_ip. * \param r1,r2 Pointers to data to compare. * \return Like strcmp. From 9727bb28b92b307aa9cb235f6ad8b80c6db048ee Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 26 Aug 2018 09:32:15 +0100 Subject: [PATCH 14/53] drop images, java scripts, and such from web sitemap file Signed-off-by: Sami Kerola --- webpages/sitemap.txt | 2619 +++++++++--------------------------------- 1 file changed, 535 insertions(+), 2084 deletions(-) diff --git a/webpages/sitemap.txt b/webpages/sitemap.txt index 5fbac09..f1f9fb4 100644 --- a/webpages/sitemap.txt +++ b/webpages/sitemap.txt @@ -1,2095 +1,546 @@ http://dhcpd-pools.sourceforge.net/ http://dhcpd-pools.sourceforge.net/dhcpd-pools.awk http://dhcpd-pools.sourceforge.net/man.html -http://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.html -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c_ae4a0e5747966cb33e459ccd1039d1761_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a17de1b2b624a2ffc25dff9fabd2aab87_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af74bd088df09d457cf83a3d42ac29e3b_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a92db6afbd39d70dde0f830daaaa89be5_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/filename_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aea4e0ee59e46ba5b8970e2386302d997_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_b.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a8912a4a34bc9896f479a861fb2abf26c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_a656c0014bca06d6d9fd748a2f9dc4ab9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a59193ccd2c0f374087081ef2fd2b08ed_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c_a8d4943c8a1e25200292b4ef049634914_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_a0c17a0b44f572941d9f73518f99ea7ed_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/realloc_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a8f31a939021567d81aecc876a322f2cd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a3326aee231570141ab97e7f6b41248a2_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a27e69f6fec7e64d52e1fdc49c8c813d0_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c_a7d205fd04850ed90bf8bc835ea126c30_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac_dep.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a447fa12ac876b90a916a3c3c9ca2ae38_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c_a3c20039c03aa27eb189d2f616c7e4ea7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a731587e35c47ecf04885633b03599652_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a42ca40e01f90e40ebc5f81b046a8c3f9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_ad37d1cbb778ea31fcf392d01168e4582_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2682e4efd0b883d164311ca95d0ae4a0_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/jquery.js -http://dhcpd-pools.sourceforge.net/doxygen/files.html -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_a5d6e2957d43a40a81ccf80939bc88417_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_ac965ebad2452d2e0a6a0167730dbb39f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_a0b95b4561242161bc9984852693ba646_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2d914d8e43d80a7682f1e8d283bc098c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/tab_a.png -http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a5d6e2957d43a40a81ccf80939bc88417_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a9b5c96cfa1dddfcf68c0e4efce1c3ff1_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a40233e26691ff7d661683d61fda5ab38_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a50e26cb469c276b6d8be436982f6eddd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a0e9add19c779ddf55db924975784bb9a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/streq_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a795f2801e747615274e2386df5c2a2a7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af79cc26a51f94400dad990aa12ee9cc9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a02757b15583c2226e307a507fda96d43_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_h.html -http://dhcpd-pools.sourceforge.net/doxygen/structconf__t__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_af106eda28a6b6a87e46539163466cad9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_m.html -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c_ad7e2b66799fbd125c246f6342990194c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals.html -http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/math_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_d.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_adf3e6cacc74ba08a64f7dcf71e5e713b_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_u.html -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a9ab94edcc74b781cabd8dc1f99e931e3_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c_a91f60ad5697278e44ceb08d1270de3c0_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/menu.js -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a72c8d2fcdbf2e7ab207d35a1f4d5d21c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_a85a3b1ee67d77fe6bbaf272856d09875_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a8f31a939021567d81aecc876a322f2cd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_ac965ebad2452d2e0a6a0167730dbb39f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_ad34540a9deac940fc7ab265da606d484_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a41c1f91a38be989ef5e8fbb52444501f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a10d3215fb947c2b6546716333fa88c45_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2a7fec798c8ed14d05e54b7263ee5a2c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2d914d8e43d80a7682f1e8d283bc098c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c_a2fe5b0b4f6e117319dd79f867d0b0d71_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mktime_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a3326aee231570141ab97e7f6b41248a2_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structconf__t__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aeca9b417e9fd54335f9f505a322dfdf9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c_a2fe5b0b4f6e117319dd79f867d0b0d71_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a326c24d8ac30f57dc1093a8d892a63f2_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_aba0174c597c07f99509871850bd91540_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_acac91d3fab9431e9feadfa8bee0d669c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ae7bcd169e2b0ff19a30e39f399aa3256_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_ad2fa1bc4e69b1dc43ebfd8d3267ed503_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/ftello_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2d9e24bfed149261c782fcab4ce8692a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/folderclosed.png -http://dhcpd-pools.sourceforge.net/doxygen/structmsghdr.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_ab098119eda4ff6b9e9a2688d236fd087_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a731587e35c47ecf04885633b03599652_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structexpl__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_t.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a9a0561234d71d331325249e4433c2236_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aee6e269dac533178d61f95b6e40bca68_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a45d904cf0131976ce46045fd06edba81_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a6c59fc7c009709f28ae4ac9d4eb03337_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a8da7481eade065aeac55ce7888d89f4e_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_af26c9be673bce92b08b2360f243fe82b_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dynsections.js -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a9a0561234d71d331325249e4433c2236_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aa675337e02b12f20e5c7db26e55dbc15_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af74bd088df09d457cf83a3d42ac29e3b_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/strdup_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/structmsghdr__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c_abb7b88116dfb59ee81e338cc78863ba2_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a3738c2bfd96d1421c8328fc59754def3_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_ab2204a6c14ad7ce72a7e1c3a3c77fd06_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aa9c700b9dc1b7a0ef866f39c53bb597f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a3f2949cd831a86aa5c94637f731dbabb_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a8077600735c5be8a8eb6a1bc629d913d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c_aae4231ac8066eb54ea1d9d12d551605c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_a71fcb729570934d0d3449417ceafcc36_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a45d904cf0131976ce46045fd06edba81_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/float_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a45866115a49b918fa6bbd5c32a5afe4f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c_a64f71c9ec9854b427c74ba77e614343a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_ac67c11f4ac65504980dd8ba708ed10c6_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_r.html -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_adbb84b1b34e89af30525e680a4da749d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a72c8d2fcdbf2e7ab207d35a1f4d5d21c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_a656c0014bca06d6d9fd748a2f9dc4ab9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_m.html -http://dhcpd-pools.sourceforge.net/doxygen/unionipaddr__t.html -http://dhcpd-pools.sourceforge.net/doxygen/time_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af69f81b09ea8f7dda0047edd06c717ec_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ad24097c0e33982e7feba6d944de6c79b_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_ac55e14bbdafa3785df1c60c6d247eb61_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af90ebdd5ec007dce3b05cdb440aca915_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/progname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_d.html -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/math_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c_ade80c9f68ef6d6aa778ae83a8ffa505f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aea4e0ee59e46ba5b8970e2386302d997_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dir_000001_000002.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a41c1f91a38be989ef5e8fbb52444501f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2d914d8e43d80a7682f1e8d283bc098c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strdup_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a44286f6558114fb227424af5af02f3bd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a50e26cb469c276b6d8be436982f6eddd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_acac91d3fab9431e9feadfa8bee0d669c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a02d48dd14871b22d59ec6d926585bbc8_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aa9c700b9dc1b7a0ef866f39c53bb597f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/memchr_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac_dep.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_aaa60fcb235125d2c98c600796d09aa64_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a4a72d4df9c2bd3f03842b7b017281ddb_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structexpl__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_af106eda28a6b6a87e46539163466cad9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/string_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a29b6cc93a084b0c7dc561f08d55354d6_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/filename_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/string_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a12d0dc2ac6cfcfb1856516a9f144d831_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a1b62af37280706bf7493743ff3f7b4aa_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c_aa97592674ee46a81121ee904ded69db2_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2682e4efd0b883d164311ca95d0ae4a0_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a8492be59e0766089d64d6e3ccbb0a1dd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/unionmemory__double.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a92db6afbd39d70dde0f830daaaa89be5_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/limits_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_ab2204a6c14ad7ce72a7e1c3a3c77fd06_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/structrange__t__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/close_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_ac55e14bbdafa3785df1c60c6d247eb61_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_t.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_i.html -http://dhcpd-pools.sourceforge.net/doxygen/graph_legend.html -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_ac370a831638bdd942e1624f9bc39f40f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_a65d4f9aeaba39f65092c351c6dfdd509_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/itold_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a626f2d98b1663b423eda295eb3aa2b5d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af74bd088df09d457cf83a3d42ac29e3b_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af74bd088df09d457cf83a3d42ac29e3b_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a44286f6558114fb227424af5af02f3bd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af90ebdd5ec007dce3b05cdb440aca915_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/structleases__t__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_aea890aa67c0b03876f74fe7c5d9b3a21_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_addbac86d87d540f7e0eae5dbfac62c74_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_l.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ad37d1cbb778ea31fcf392d01168e4582_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/config_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c_ad7e2b66799fbd125c246f6342990194c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/struct____time__t__must__be__integral.html http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a873f17992895bdebb3714d48407fd8ee_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_a7ccc330a5672b0630e731e31d7f90cf0_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/nav_g.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2d914d8e43d80a7682f1e8d283bc098c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/types_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a3f6712cd433c2b58096f88d7a4e4c962_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/structslotvec.html -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.png -http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a80b2536bb2d5ebe8dba11661cc041a6b_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c_ad7e2b66799fbd125c246f6342990194c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structleases__t__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c_a40ba0199e64322af4bb99c03bb1c1f82_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a967b15470f160c8fd28c1341724102f7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c_a28038203c46fba44ad2199db0c4f0f0a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a31358cb0cac4ad5800d2a7c1bdb0aa40_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_c.html -http://dhcpd-pools.sourceforge.net/doxygen/float_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a8ded4a0c5645ded15779af1359945baa_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a4a72d4df9c2bd3f03842b7b017281ddb_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a795f2801e747615274e2386df5c2a2a7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_af90ebdd5ec007dce3b05cdb440aca915_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a326c24d8ac30f57dc1093a8d892a63f2_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/nav_f.png -http://dhcpd-pools.sourceforge.net/doxygen/progname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a967b15470f160c8fd28c1341724102f7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a17de1b2b624a2ffc25dff9fabd2aab87_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_a7ccc330a5672b0630e731e31d7f90cf0_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/itold_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c_aed830468f4d74daedeef23fbf3b9ff94_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_ac769cb753ff117e3d678a5eca0014920_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/splitbar.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_ac769cb753ff117e3d678a5eca0014920_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a8077600735c5be8a8eb6a1bc629d913d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c_a3c20039c03aa27eb189d2f616c7e4ea7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_ade80c9f68ef6d6aa778ae83a8ffa505f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/math_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a9a202967000c0f6626da60dfc0820151_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_ad37d1cbb778ea31fcf392d01168e4582_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort.html -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_a3c20039c03aa27eb189d2f616c7e4ea7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_addbac86d87d540f7e0eae5dbfac62c74_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a3f2949cd831a86aa5c94637f731dbabb_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/structconf__t__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_abac51f489527192d5f26f40f22b9bca9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a1b9e84bfc438c0a91dfec1f5610564ff_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_acac91d3fab9431e9feadfa8bee0d669c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a20348831ccdaa3299eca89e4760d10f3_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_adf45b810e736753c178d8d354946bb34_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c_a163324639129ef5e99aa4590d2c3c9a4_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_ade697840b3ffb9c2ee7d9cefbe58edd6_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_ad2fa1bc4e69b1dc43ebfd8d3267ed503_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/progname_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_acfa9c56b79e068f7c66f14e92de9621f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a8da7481eade065aeac55ce7888d89f4e_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ae7bcd169e2b0ff19a30e39f399aa3256_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2a7fec798c8ed14d05e54b7263ee5a2c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/progname_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a50e26cb469c276b6d8be436982f6eddd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_l.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a1605d5d50f449eb8424526003277e547_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_adf3e6cacc74ba08a64f7dcf71e5e713b_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_vars.html -http://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c_a64fec4fca560e8ba4cd06562eb3e638d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2d914d8e43d80a7682f1e8d283bc098c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a9a0561234d71d331325249e4433c2236_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a72c8d2fcdbf2e7ab207d35a1f4d5d21c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a50e26cb469c276b6d8be436982f6eddd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_af465e1e5bdfb04b64ac6a66a49294efb_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/itold_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a98437aeff705113eeee679fadd0659f5_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structquoting__options.html -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_p.html -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/string_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a1a92d0c7a5b5de1bd6ab225ae4afe60a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_p.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af74bd088df09d457cf83a3d42ac29e3b_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_acd3044aba8bcf32ded0893f0ff7d43b3_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/progname_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_ae7bcd169e2b0ff19a30e39f399aa3256_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/search -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_f.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_d.js -http://dhcpd-pools.sourceforge.net/doxygen/search/search_r.png -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_13.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_15.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_9.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_f.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_15.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_9.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_12.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_9.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_a.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_10.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_9.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_18.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_a.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_b.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_9.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_16.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_15.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_11.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_10.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_16.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_c.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_12.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_e.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_11.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_b.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_12.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_18.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_b.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_a.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_14.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_d.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_c.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_b.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_10.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/close.png -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_11.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_17.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_c.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_e.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_14.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_16.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_a.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_d.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_14.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_14.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_b.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_17.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_13.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_a.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_e.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_13.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_c.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_17.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_15.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_d.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_12.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_f.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_11.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/mag_sel.png -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_10.js -http://dhcpd-pools.sourceforge.net/doxygen/search/search.css -http://dhcpd-pools.sourceforge.net/doxygen/search/files_8.js -http://dhcpd-pools.sourceforge.net/doxygen/search/nomatches.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_7.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_d.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_f.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_9.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_b.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_10.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/search.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_9.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/search_l.png -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/search_m.png -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_e.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_a.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_d.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_a.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_17.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_13.js -http://dhcpd-pools.sourceforge.net/doxygen/search/searchdata.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_13.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_12.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_f.js -http://dhcpd-pools.sourceforge.net/doxygen/search/all_e.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_c.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_14.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_5.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_4.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_16.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_2.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_e.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_6.js -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_c.js -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_1.js -http://dhcpd-pools.sourceforge.net/doxygen/search/files_0.js -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_3.js -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_f.js -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_11.js -http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_y.html -http://dhcpd-pools.sourceforge.net/doxygen/streq_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_af53677934cc325455ae08fd8d7b63e73_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_ade697840b3ffb9c2ee7d9cefbe58edd6_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_d.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a731587e35c47ecf04885633b03599652_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a3f2949cd831a86aa5c94637f731dbabb_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_o.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_aeca9b417e9fd54335f9f505a322dfdf9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_e.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a72a13ff831bb5a94d321d64b60e6414f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c_a64fec4fca560e8ba4cd06562eb3e638d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a3326aee231570141ab97e7f6b41248a2_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a3326aee231570141ab97e7f6b41248a2_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a9b5c96cfa1dddfcf68c0e4efce1c3ff1_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c_a7d205fd04850ed90bf8bc835ea126c30_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_ade80c9f68ef6d6aa778ae83a8ffa505f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c_aed830468f4d74daedeef23fbf3b9ff94_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9_dep.map -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a6c41b841ecaf10025444de83ee2c8baa_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/freading_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/structmsghdr__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a92db6afbd39d70dde0f830daaaa89be5_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/index.html -http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c_aa97592674ee46a81121ee904ded69db2_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_aea4e0ee59e46ba5b8970e2386302d997_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2682e4efd0b883d164311ca95d0ae4a0_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a2f3ce877a460c8045e5ff1c0fc972ae9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a215b255f971df37ace7b513eb17fe1c5_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a0e9add19c779ddf55db924975784bb9a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a1b62af37280706bf7493743ff3f7b4aa_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_ad2fa1bc4e69b1dc43ebfd8d3267ed503_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a795f2801e747615274e2386df5c2a2a7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a9f53f329ff6ddd0dcfb9327733ddda26_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c_aa97592674ee46a81121ee904ded69db2_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_a65d4f9aeaba39f65092c351c6dfdd509_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aeca9b417e9fd54335f9f505a322dfdf9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af79cc26a51f94400dad990aa12ee9cc9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_acfa9c56b79e068f7c66f14e92de9621f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_af465e1e5bdfb04b64ac6a66a49294efb_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_abb353ec32fd152026c853fea429fe857_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a9ab94edcc74b781cabd8dc1f99e931e3_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af9d8c46bd7f7597671518cd88751edf8_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c_abb7b88116dfb59ee81e338cc78863ba2_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/limits_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_ab44c3ee94dab0397f09be71dbaa822e1_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structleases__t__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_ad70ef2af443d8846d200a4d3f2228be1_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_a8f20e7eee29fd0718ff7ccf4488a123e_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a731587e35c47ecf04885633b03599652_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_acfa9c56b79e068f7c66f14e92de9621f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_a85a3b1ee67d77fe6bbaf272856d09875_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_a5d2c0879045afdfa6c14fab0ef874190_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_ab0c2382566dfdc1ca0533662069707fc_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structexpl.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c_a65d4f9aeaba39f65092c351c6dfdd509_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/types_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_a0b225ff0b5eabfd0121833eada84bc90_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aba0174c597c07f99509871850bd91540_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a10d3215fb947c2b6546716333fa88c45_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_ac18804b8270ca7e5842c347ea81ba1c3_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dir_000000_000001.html -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_a5d6e2957d43a40a81ccf80939bc88417_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a0b225ff0b5eabfd0121833eada84bc90_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a72c8d2fcdbf2e7ab207d35a1f4d5d21c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_s.html -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aa675337e02b12f20e5c7db26e55dbc15_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_add5e5c22a85f4544a1157876ac6bd561_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_a5d6e2957d43a40a81ccf80939bc88417_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_a8f20e7eee29fd0718ff7ccf4488a123e_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_af106eda28a6b6a87e46539163466cad9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_a.html -http://dhcpd-pools.sourceforge.net/doxygen/tzset_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/types_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c_ae0637f730cb7e22a3fc395f915de4c4c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a3326aee231570141ab97e7f6b41248a2_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a10d3215fb947c2b6546716333fa88c45_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_aba0174c597c07f99509871850bd91540_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_a6b7d00933208bc409f540a94c2bf037e_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a69334a531533dbafdeb52429a03a8db7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a0e9add19c779ddf55db924975784bb9a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_ab2204a6c14ad7ce72a7e1c3a3c77fd06_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c_a69d9fadc7a8a192c18a135bfd9fcd477_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/tzset_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_adbb84b1b34e89af30525e680a4da749d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a9ab94edcc74b781cabd8dc1f99e931e3_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a914cc22e26f85a8e7f1f1e0183981817_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a9003c507b2b2aa94774d12dc792c4644_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_a85a3b1ee67d77fe6bbaf272856d09875_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a873f17992895bdebb3714d48407fd8ee_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/freading_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a5d6e2957d43a40a81ccf80939bc88417_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a4a72d4df9c2bd3f03842b7b017281ddb_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_ac3f4051200261d4de4d7ae14499f7552_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c_a0bbc1c19c9c5d102bee9dc35629ddb68_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af79cc26a51f94400dad990aa12ee9cc9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c_af106eda28a6b6a87e46539163466cad9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a72c8d2fcdbf2e7ab207d35a1f4d5d21c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_ae7bcd169e2b0ff19a30e39f399aa3256_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2682e4efd0b883d164311ca95d0ae4a0_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2a7fec798c8ed14d05e54b7263ee5a2c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/tzset_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_af465e1e5bdfb04b64ac6a66a49294efb_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a2f3ce877a460c8045e5ff1c0fc972ae9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/limits_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_aba0174c597c07f99509871850bd91540_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af79cc26a51f94400dad990aa12ee9cc9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_add5e5c22a85f4544a1157876ac6bd561_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_a6b7d00933208bc409f540a94c2bf037e_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_ad2fa1bc4e69b1dc43ebfd8d3267ed503_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a06bd8ee5bc9f5675f98e84908c0822e0_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/progname_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a45d904cf0131976ce46045fd06edba81_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/malloc_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/unionrpl__max__align__t.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a33dd4780047eb59063b6b353d6b08111_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a13a5debfccee08fbf18b13489836d223_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/lseek_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a5a8f2bad2fdbc52980d30b10a5ab33be_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a7be120852e24cbfe79867e585061e6b1_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a50e26cb469c276b6d8be436982f6eddd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af9d8c46bd7f7597671518cd88751edf8_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2d9e24bfed149261c782fcab4ce8692a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_a0b225ff0b5eabfd0121833eada84bc90_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_a479425784d9994068114922b90b31cb3_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/functions_func.html -http://dhcpd-pools.sourceforge.net/doxygen/menudata.js -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a326c24d8ac30f57dc1093a8d892a63f2_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/lseek_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_a0b95b4561242161bc9984852693ba646_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_aea890aa67c0b03876f74fe7c5d9b3a21_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/filename_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a72a13ff831bb5a94d321d64b60e6414f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ad24097c0e33982e7feba6d944de6c79b_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/structoption.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a98437aeff705113eeee679fadd0659f5_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2682e4efd0b883d164311ca95d0ae4a0_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/memchr_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a1b070d7bdd59b4657266dbc7211bb637_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2d914d8e43d80a7682f1e8d283bc098c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c_a40ba0199e64322af4bb99c03bb1c1f82_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_u.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ab19a868b6a6e09347b26d089a2cc85fd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_aea890aa67c0b03876f74fe7c5d9b3a21_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_n.html -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c_a57b5e6142bca46d9c0c6cfaeac9c7d72_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_aa352612502255860e778bbcbabaf9ffa_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a795f2801e747615274e2386df5c2a2a7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/tzset_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/config_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c_a28038203c46fba44ad2199db0c4f0f0a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a7833a96194cc3bbd0d700eee41ced554_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a5de8be832ce3447e5017d3015083e514_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_af26c9be673bce92b08b2360f243fe82b_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a31358cb0cac4ad5800d2a7c1bdb0aa40_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a1b070d7bdd59b4657266dbc7211bb637_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a626f2d98b1663b423eda295eb3aa2b5d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_abb353ec32fd152026c853fea429fe857_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a59193ccd2c0f374087081ef2fd2b08ed_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/math_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/closed.png -http://dhcpd-pools.sourceforge.net/doxygen/structtm__zone__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_aae4b54f2efc61bb94ad2c47303d624ad_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_g.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af53677934cc325455ae08fd8d7b63e73_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_af53677934cc325455ae08fd8d7b63e73_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/tab_b.png -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_ade80c9f68ef6d6aa778ae83a8ffa505f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_o.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/classes.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_v.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_x.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_ad70ef2af443d8846d200a4d3f2228be1_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/timegm_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_x.html -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aee6e269dac533178d61f95b6e40bca68_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/types_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_addbac86d87d540f7e0eae5dbfac62c74_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a479425784d9994068114922b90b31cb3_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ac2aea1f150dd3ed22f0e3b18e32a113e_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a8492be59e0766089d64d6e3ccbb0a1dd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/freading_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_e.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a8f4657ffdde1bf309ad71aa33db18607_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a06bd8ee5bc9f5675f98e84908c0822e0_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac_dep.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_aea890aa67c0b03876f74fe7c5d9b3a21_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a0e9add19c779ddf55db924975784bb9a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a06bd8ee5bc9f5675f98e84908c0822e0_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a44286f6558114fb227424af5af02f3bd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/structrange__t.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a0b95b4561242161bc9984852693ba646_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a2d9e24bfed149261c782fcab4ce8692a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/math_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a27e69f6fec7e64d52e1fdc49c8c813d0_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/streq_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_n.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a215b255f971df37ace7b513eb17fe1c5_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_addbac86d87d540f7e0eae5dbfac62c74_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/timegm_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a80b2536bb2d5ebe8dba11661cc041a6b_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_ac965ebad2452d2e0a6a0167730dbb39f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c_aec069b4e8b397362f89086c53b93fd6a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a3c04138a5bfe5d72780bb7e82a18e627_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_m.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a70c83b9ed7b98f15659fcc495c0c33e7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_af69f81b09ea8f7dda0047edd06c717ec_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a1bc967d5ea7fe0eb36434dbd8d691363_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a3f6712cd433c2b58096f88d7a4e4c962_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/isnand_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a40233e26691ff7d661683d61fda5ab38_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a70c83b9ed7b98f15659fcc495c0c33e7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a9a0561234d71d331325249e4433c2236_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a72c8d2fcdbf2e7ab207d35a1f4d5d21c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a3c04138a5bfe5d72780bb7e82a18e627_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a9f53f329ff6ddd0dcfb9327733ddda26_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_a65d4f9aeaba39f65092c351c6dfdd509_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c_a5bfd13c5fa75b56081afbca8926ef270_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_abea862091e8ea669bdb0f61d796cf883_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af9d8c46bd7f7597671518cd88751edf8_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/float_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_acf43aaf176da8efb115f944f5c0b3c97_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_acf43aaf176da8efb115f944f5c0b3c97_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c_a5d2c0879045afdfa6c14fab0ef874190_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c_aece5d6e00c239ffd0847d8d2ef65bd57_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sync_off.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a17de1b2b624a2ffc25dff9fabd2aab87_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a8a497ca6c728daf89446401e2bdda8a8_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/malloc_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a3c04138a5bfe5d72780bb7e82a18e627_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_enum.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a5de8be832ce3447e5017d3015083e514_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a8da7481eade065aeac55ce7888d89f4e_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/ftello_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a8da7481eade065aeac55ce7888d89f4e_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c_a5d2c0879045afdfa6c14fab0ef874190_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/limits_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2a7fec798c8ed14d05e54b7263ee5a2c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a1a92d0c7a5b5de1bd6ab225ae4afe60a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_af53677934cc325455ae08fd8d7b63e73_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a13a5debfccee08fbf18b13489836d223_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_aa9630c1943de96498e73fd63cd3aeea9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_ad70ef2af443d8846d200a4d3f2228be1_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ac2aea1f150dd3ed22f0e3b18e32a113e_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_ac3f4051200261d4de4d7ae14499f7552_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a98437aeff705113eeee679fadd0659f5_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a2d9e24bfed149261c782fcab4ce8692a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af9d8c46bd7f7597671518cd88751edf8_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_aaa60fcb235125d2c98c600796d09aa64_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_ac18804b8270ca7e5842c347ea81ba1c3_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a1bc967d5ea7fe0eb36434dbd8d691363_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a70c83b9ed7b98f15659fcc495c0c33e7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a8912a4a34bc9896f479a861fb2abf26c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a5a8f2bad2fdbc52980d30b10a5ab33be_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/structiovec.html -http://dhcpd-pools.sourceforge.net/doxygen/functions_vars.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_r.html -http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_i.html -http://dhcpd-pools.sourceforge.net/doxygen/structexpl__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a8ded4a0c5645ded15779af1359945baa_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_ab44c3ee94dab0397f09be71dbaa822e1_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mktime_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a8ded4a0c5645ded15779af1359945baa_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af79cc26a51f94400dad990aa12ee9cc9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_aa9c700b9dc1b7a0ef866f39c53bb597f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a06bd8ee5bc9f5675f98e84908c0822e0_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c_a5d6ffddd86bd0d0ead58247b1a80e486_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a80b2536bb2d5ebe8dba11661cc041a6b_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_ab098119eda4ff6b9e9a2688d236fd087_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_acfa9c56b79e068f7c66f14e92de9621f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_w.html -http://dhcpd-pools.sourceforge.net/doxygen/open.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a10d3215fb947c2b6546716333fa88c45_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/streq_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c_a69d9fadc7a8a192c18a135bfd9fcd477_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_af69f81b09ea8f7dda0047edd06c717ec_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_ac4e38cd69abc98687080df02690b0a13_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_a6ff7f501e817a6d5708dd08021c2e421_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_ac2aea1f150dd3ed22f0e3b18e32a113e_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_eval.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a215b255f971df37ace7b513eb17fe1c5_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a326c24d8ac30f57dc1093a8d892a63f2_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a70c83b9ed7b98f15659fcc495c0c33e7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ab9ea58385c07f1cc5b25c984f3863d09_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a731587e35c47ecf04885633b03599652_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/realloc_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c_a8d4943c8a1e25200292b4ef049634914_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a13a5debfccee08fbf18b13489836d223_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/structtm__zone__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/annotated.html -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a967b15470f160c8fd28c1341724102f7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a1b070d7bdd59b4657266dbc7211bb637_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a02d48dd14871b22d59ec6d926585bbc8_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/close_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a447fa12ac876b90a916a3c3c9ca2ae38_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/time_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_abc5552dd3521f63af288765527ac58dd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_addbac86d87d540f7e0eae5dbfac62c74_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a326c24d8ac30f57dc1093a8d892a63f2_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c_a69d9fadc7a8a192c18a135bfd9fcd477_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a1bc967d5ea7fe0eb36434dbd8d691363_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_a479425784d9994068114922b90b31cb3_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/structmsghdr__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/string_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a0452a2ed54f78a15653afbf6332392eb_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_af26c9be673bce92b08b2360f243fe82b_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_aea890aa67c0b03876f74fe7c5d9b3a21_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c_a0bbc1c19c9c5d102bee9dc35629ddb68_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a8f4657ffdde1bf309ad71aa33db18607_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_ad2fa1bc4e69b1dc43ebfd8d3267ed503_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a8ded4a0c5645ded15779af1359945baa_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a8f6a5574ee6b32ba0f8c4d5479f0be57_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/memchr_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ac2aea1f150dd3ed22f0e3b18e32a113e_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a8da7481eade065aeac55ce7888d89f4e_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/math_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/structrange__t__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a8ded4a0c5645ded15779af1359945baa_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a8f4657ffdde1bf309ad71aa33db18607_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a0b95b4561242161bc9984852693ba646_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/lseek_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/close_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a33dd4780047eb59063b6b353d6b08111_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_ac370a831638bdd942e1624f9bc39f40f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a716fdc0e8e9f8eb875ae2eb3843ecc6d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c_aec069b4e8b397362f89086c53b93fd6a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a69334a531533dbafdeb52429a03a8db7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a7833a96194cc3bbd0d700eee41ced554_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2d9e24bfed149261c782fcab4ce8692a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a72a13ff831bb5a94d321d64b60e6414f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c_a40ba0199e64322af4bb99c03bb1c1f82_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a3326aee231570141ab97e7f6b41248a2_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_e.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_aeca9b417e9fd54335f9f505a322dfdf9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_func.html -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ad37d1cbb778ea31fcf392d01168e4582_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_q.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_ab0c2382566dfdc1ca0533662069707fc_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_abea862091e8ea669bdb0f61d796cf883_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/doxygen.css -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/ftello_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a6c41b841ecaf10025444de83ee2c8baa_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a6c59fc7c009709f28ae4ac9d4eb03337_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_ac67c11f4ac65504980dd8ba708ed10c6_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_a71fcb729570934d0d3449417ceafcc36_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/string_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a6c41b841ecaf10025444de83ee2c8baa_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c_a0076f520c787a3e5bf7f93f8fed92b2d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a33dd4780047eb59063b6b353d6b08111_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c_abea862091e8ea669bdb0f61d796cf883_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structsockaddr__storage.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/mktime_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a1b62af37280706bf7493743ff3f7b4aa_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a1605d5d50f449eb8424526003277e547_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/string_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c_a5d6ffddd86bd0d0ead58247b1a80e486_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_g.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a7be120852e24cbfe79867e585061e6b1_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a0452a2ed54f78a15653afbf6332392eb_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/math_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_f.html -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a9003c507b2b2aa94774d12dc792c4644_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_aea4e0ee59e46ba5b8970e2386302d997_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_adf45b810e736753c178d8d354946bb34_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a0e9add19c779ddf55db924975784bb9a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/streq_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_b.html -http://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort__coll__graph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_s.html -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a42ca40e01f90e40ebc5f81b046a8c3f9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a005ad8f66c61b37e97cb88265a1ed9e8_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/filename_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/isnand_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a479425784d9994068114922b90b31cb3_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c_a91f60ad5697278e44ceb08d1270de3c0_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_a0b95b4561242161bc9984852693ba646_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a0b225ff0b5eabfd0121833eada84bc90_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a70c83b9ed7b98f15659fcc495c0c33e7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c_a65d4f9aeaba39f65092c351c6dfdd509_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_aa9630c1943de96498e73fd63cd3aeea9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_acd3044aba8bcf32ded0893f0ff7d43b3_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_ab098119eda4ff6b9e9a2688d236fd087_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/math_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aee6e269dac533178d61f95b6e40bca68_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_af69f81b09ea8f7dda0047edd06c717ec_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af79cc26a51f94400dad990aa12ee9cc9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a873f17992895bdebb3714d48407fd8ee_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/malloc_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_ac3f4051200261d4de4d7ae14499f7552_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a9a202967000c0f6626da60dfc0820151_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_ac370a831638bdd942e1624f9bc39f40f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/introduction_8dox.html -http://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a3f2949cd831a86aa5c94637f731dbabb_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a3738c2bfd96d1421c8328fc59754def3_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a8912a4a34bc9896f479a861fb2abf26c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_a3c20039c03aa27eb189d2f616c7e4ea7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c_a5bfd13c5fa75b56081afbca8926ef270_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_a8d477cdb5babb71198db76942cf221ba_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_aea890aa67c0b03876f74fe7c5d9b3a21_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/ftello_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/structrange__t__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_ac965ebad2452d2e0a6a0167730dbb39f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c_abea862091e8ea669bdb0f61d796cf883_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c_a0bbc1c19c9c5d102bee9dc35629ddb68_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af53677934cc325455ae08fd8d7b63e73_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a12d0dc2ac6cfcfb1856516a9f144d831_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519_dep.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_abac51f489527192d5f26f40f22b9bca9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_ac3e38df28a8ab7d155dc6a519678463e_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c_a163324639129ef5e99aa4590d2c3c9a4_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a0bb0a1acabaea7c747a7c91faa7021b9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a3f2949cd831a86aa5c94637f731dbabb_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_adf45b810e736753c178d8d354946bb34_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_o.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_adbb84b1b34e89af30525e680a4da749d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a0e9add19c779ddf55db924975784bb9a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac.html -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_a6ff7f501e817a6d5708dd08021c2e421_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_aa9c700b9dc1b7a0ef866f39c53bb597f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a8f6a5574ee6b32ba0f8c4d5479f0be57_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_y.html -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_abb353ec32fd152026c853fea429fe857_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a0b95b4561242161bc9984852693ba646_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/structtm__zone.html -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_a8d477cdb5babb71198db76942cf221ba_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_ac769cb753ff117e3d678a5eca0014920_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_aa9630c1943de96498e73fd63cd3aeea9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a12d0dc2ac6cfcfb1856516a9f144d831_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ad24097c0e33982e7feba6d944de6c79b_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c_aece5d6e00c239ffd0847d8d2ef65bd57_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_acd1779a64a391e86585be63f19e02b84_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_aeca9b417e9fd54335f9f505a322dfdf9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_abea862091e8ea669bdb0f61d796cf883_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_a0c17a0b44f572941d9f73518f99ea7ed_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a7833a96194cc3bbd0d700eee41ced554_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_adf3e6cacc74ba08a64f7dcf71e5e713b_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_abc5552dd3521f63af288765527ac58dd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a447fa12ac876b90a916a3c3c9ca2ae38_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strdup_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a8f31a939021567d81aecc876a322f2cd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a7833a96194cc3bbd0d700eee41ced554_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aa675337e02b12f20e5c7db26e55dbc15_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_k.html -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c_aec069b4e8b397362f89086c53b93fd6a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_a6b7d00933208bc409f540a94c2bf037e_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sync_on.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c_a5d6ffddd86bd0d0ead58247b1a80e486_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a795f2801e747615274e2386df5c2a2a7_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_h.html -http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strdup_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_f.html -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a795f2801e747615274e2386df5c2a2a7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a9a202967000c0f6626da60dfc0820151_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a9a202967000c0f6626da60dfc0820151_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/tabs.css -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/structtimespec.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aba0174c597c07f99509871850bd91540_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a914cc22e26f85a8e7f1f1e0183981817_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a1605d5d50f449eb8424526003277e547_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_i.html -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/malloc_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_ad2fa1bc4e69b1dc43ebfd8d3267ed503_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_ab0c2382566dfdc1ca0533662069707fc_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/doc.png -http://dhcpd-pools.sourceforge.net/doxygen/folderopen.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_acfa9c56b79e068f7c66f14e92de9621f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a9003c507b2b2aa94774d12dc792c4644_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c_aae4231ac8066eb54ea1d9d12d551605c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c_aece5d6e00c239ffd0847d8d2ef65bd57_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_u.html -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a5de8be832ce3447e5017d3015083e514_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c_a28038203c46fba44ad2199db0c4f0f0a_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2682e4efd0b883d164311ca95d0ae4a0_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aea4e0ee59e46ba5b8970e2386302d997_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_ade697840b3ffb9c2ee7d9cefbe58edd6_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/bc_s.png -http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a9f53f329ff6ddd0dcfb9327733ddda26_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/structleases__t.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a92db6afbd39d70dde0f830daaaa89be5_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c_aed830468f4d74daedeef23fbf3b9ff94_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a447fa12ac876b90a916a3c3c9ca2ae38_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c_abc5552dd3521f63af288765527ac58dd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a2d9e24bfed149261c782fcab4ce8692a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_ab150a3babfe529a34363379756778161_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/tab_s.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_ac18804b8270ca7e5842c347ea81ba1c3_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c_ade80c9f68ef6d6aa778ae83a8ffa505f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/memchr_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_adbb84b1b34e89af30525e680a4da749d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a2f3ce877a460c8045e5ff1c0fc972ae9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a1a92d0c7a5b5de1bd6ab225ae4afe60a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c_a2fe5b0b4f6e117319dd79f867d0b0d71_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a9a202967000c0f6626da60dfc0820151_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_acd1779a64a391e86585be63f19e02b84_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_acad466143bdf98a55f3b27dc2b106a67_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a06bd8ee5bc9f5675f98e84908c0822e0_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a716fdc0e8e9f8eb875ae2eb3843ecc6d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a0b225ff0b5eabfd0121833eada84bc90_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c_af106eda28a6b6a87e46539163466cad9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a9f53f329ff6ddd0dcfb9327733ddda26_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_ad34540a9deac940fc7ab265da606d484_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/types_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_a86399f38d27baaa31f48be22a403b94f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a7833a96194cc3bbd0d700eee41ced554_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/progname_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_a86399f38d27baaa31f48be22a403b94f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519_dep.map -http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a005ad8f66c61b37e97cb88265a1ed9e8_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/structoutput__helper__t.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a10d3215fb947c2b6546716333fa88c45_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_addbac86d87d540f7e0eae5dbfac62c74_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_aa352612502255860e778bbcbabaf9ffa_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a0bb0a1acabaea7c747a7c91faa7021b9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_abac51f489527192d5f26f40f22b9bca9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ad37d1cbb778ea31fcf392d01168e4582_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a8077600735c5be8a8eb6a1bc629d913d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_a.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a2f3ce877a460c8045e5ff1c0fc972ae9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_af90ebdd5ec007dce3b05cdb440aca915_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c_af106eda28a6b6a87e46539163466cad9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_acfa9c56b79e068f7c66f14e92de9621f_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a3f2949cd831a86aa5c94637f731dbabb_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c_ade80c9f68ef6d6aa778ae83a8ffa505f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/time_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c_a5d2c0879045afdfa6c14fab0ef874190_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_abc5552dd3521f63af288765527ac58dd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a13a5debfccee08fbf18b13489836d223_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_s.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_aea4e0ee59e46ba5b8970e2386302d997_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_acd3044aba8bcf32ded0893f0ff7d43b3_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a3f6712cd433c2b58096f88d7a4e4c962_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_a.html -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af53677934cc325455ae08fd8d7b63e73_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/structmustach__itf.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a5d6e2957d43a40a81ccf80939bc88417_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_add5e5c22a85f4544a1157876ac6bd561_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_n.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_a8f20e7eee29fd0718ff7ccf4488a123e_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a45866115a49b918fa6bbd5c32a5afe4f_cgraph.md5 http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a1b9e84bfc438c0a91dfec1f5610564ff_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a1b62af37280706bf7493743ff3f7b4aa_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_adbb84b1b34e89af30525e680a4da749d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/isnand_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_a0b225ff0b5eabfd0121833eada84bc90_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a50e26cb469c276b6d8be436982f6eddd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_q.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_acf43aaf176da8efb115f944f5c0b3c97_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a447fa12ac876b90a916a3c3c9ca2ae38_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/timegm_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c_ae0637f730cb7e22a3fc395f915de4c4c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a06bd8ee5bc9f5675f98e84908c0822e0_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/filename_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a8da7481eade065aeac55ce7888d89f4e_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_ab150a3babfe529a34363379756778161_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a6c59fc7c009709f28ae4ac9d4eb03337_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a1b9e84bfc438c0a91dfec1f5610564ff_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a9a202967000c0f6626da60dfc0820151_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a914cc22e26f85a8e7f1f1e0183981817_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a20348831ccdaa3299eca89e4760d10f3_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c_a57b5e6142bca46d9c0c6cfaeac9c7d72_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a7833a96194cc3bbd0d700eee41ced554_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/doxygen.png -http://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a2a7fec798c8ed14d05e54b7263ee5a2c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a42ca40e01f90e40ebc5f81b046a8c3f9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a10d3215fb947c2b6546716333fa88c45_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c_a479425784d9994068114922b90b31cb3_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c_ae7bcd169e2b0ff19a30e39f399aa3256_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af9d8c46bd7f7597671518cd88751edf8_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_a5d2c0879045afdfa6c14fab0ef874190_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a13a5debfccee08fbf18b13489836d223_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_aaa60fcb235125d2c98c600796d09aa64_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/isnand_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a0bb0a1acabaea7c747a7c91faa7021b9_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c_a5bfd13c5fa75b56081afbca8926ef270_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a7be120852e24cbfe79867e585061e6b1_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a3f6712cd433c2b58096f88d7a4e4c962_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c_a64fec4fca560e8ba4cd06562eb3e638d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_v.html -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/progname_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a8a497ca6c728daf89446401e2bdda8a8_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c_ae0637f730cb7e22a3fc395f915de4c4c_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_a8d477cdb5babb71198db76942cf221ba_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_ac4e38cd69abc98687080df02690b0a13_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_ac3e38df28a8ab7d155dc6a519678463e_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/graph_legend.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a3f6712cd433c2b58096f88d7a4e4c962_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_w.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a873f17992895bdebb3714d48407fd8ee_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a3f6712cd433c2b58096f88d7a4e4c962_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/structtm__zone__coll__graph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c_a65d4f9aeaba39f65092c351c6dfdd509_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aba0174c597c07f99509871850bd91540_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a2f3ce877a460c8045e5ff1c0fc972ae9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519_dep.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_l.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/string_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/math_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c_a7d205fd04850ed90bf8bc835ea126c30_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c_ae4a0e5747966cb33e459ccd1039d1761_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_ac965ebad2452d2e0a6a0167730dbb39f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_acd1779a64a391e86585be63f19e02b84_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af90ebdd5ec007dce3b05cdb440aca915_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a1b62af37280706bf7493743ff3f7b4aa_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a9f53f329ff6ddd0dcfb9327733ddda26_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c_abea862091e8ea669bdb0f61d796cf883_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_af74bd088df09d457cf83a3d42ac29e3b_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_a5d2c0879045afdfa6c14fab0ef874190_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a69334a531533dbafdeb52429a03a8db7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_p.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c_a64f71c9ec9854b427c74ba77e614343a_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c_a91f60ad5697278e44ceb08d1270de3c0_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_a6ff7f501e817a6d5708dd08021c2e421_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_ac2aea1f150dd3ed22f0e3b18e32a113e_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af69f81b09ea8f7dda0047edd06c717ec_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/realloc_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c_a8d4943c8a1e25200292b4ef049634914_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/progname_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a40233e26691ff7d661683d61fda5ab38_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a8ded4a0c5645ded15779af1359945baa_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_a70c83b9ed7b98f15659fcc495c0c33e7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/bdwn.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a29b6cc93a084b0c7dc561f08d55354d6_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c_a0076f520c787a3e5bf7f93f8fed92b2d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mktime_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a02757b15583c2226e307a507fda96d43_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_ac55e14bbdafa3785df1c60c6d247eb61_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_ac3e38df28a8ab7d155dc6a519678463e_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_aae4b54f2efc61bb94ad2c47303d624ad_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_k.html -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a0452a2ed54f78a15653afbf6332392eb_cgraph.map +http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/annotated.html +http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h.html http://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a8077600735c5be8a8eb6a1bc629d913d_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a9b5c96cfa1dddfcf68c0e4efce1c3ff1_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_ac4e38cd69abc98687080df02690b0a13_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h__dep__incl.md5 +http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c.html http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a13a5debfccee08fbf18b13489836d223_cgraph.map +http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/classes.html +http://dhcpd-pools.sourceforge.net/doxygen/close_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/config_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/config_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_000000_000001.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_000001_000002.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9.html +http://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac.html +http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h.html http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_ab44c3ee94dab0397f09be71dbaa822e1_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_aa352612502255860e778bbcbabaf9ffa_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a326c24d8ac30f57dc1093a8d892a63f2_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_aa9c700b9dc1b7a0ef866f39c53bb597f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_type.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ab19a868b6a6e09347b26d089a2cc85fd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_x.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a29b6cc93a084b0c7dc561f08d55354d6_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/error_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_ad34540a9deac940fc7ab265da606d484_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c_a8492be59e0766089d64d6e3ccbb0a1dd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/other_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a20348831ccdaa3299eca89e4760d10f3_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c_a02d48dd14871b22d59ec6d926585bbc8_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_t.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a2a7fec798c8ed14d05e54b7263ee5a2c_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/error_8c_a59193ccd2c0f374087081ef2fd2b08ed_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_acad466143bdf98a55f3b27dc2b106a67_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_a31358cb0cac4ad5800d2a7c1bdb0aa40_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_f.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a716fdc0e8e9f8eb875ae2eb3843ecc6d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a447fa12ac876b90a916a3c3c9ca2ae38_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a9a0561234d71d331325249e4433c2236_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/float_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/itold_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/close_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/timegm_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ab9ea58385c07f1cc5b25c984f3863d09_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_af9d8c46bd7f7597671518cd88751edf8_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a873f17992895bdebb3714d48407fd8ee_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c_abb7b88116dfb59ee81e338cc78863ba2_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_adbb84b1b34e89af30525e680a4da749d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_af69f81b09ea8f7dda0047edd06c717ec_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_acad466143bdf98a55f3b27dc2b106a67_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a02757b15583c2226e307a507fda96d43_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/nav_h.png -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c_a64f71c9ec9854b427c74ba77e614343a_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_aae4b54f2efc61bb94ad2c47303d624ad_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a479425784d9994068114922b90b31cb3_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a9f53f329ff6ddd0dcfb9327733ddda26_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a41c1f91a38be989ef5e8fbb52444501f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a5a8f2bad2fdbc52980d30b10a5ab33be_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_ac2aea1f150dd3ed22f0e3b18e32a113e_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a731587e35c47ecf04885633b03599652_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a92db6afbd39d70dde0f830daaaa89be5_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c_abc5552dd3521f63af288765527ac58dd_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_a9a0561234d71d331325249e4433c2236_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a626f2d98b1663b423eda295eb3aa2b5d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/tab_h.png -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/limits_8h__dep__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c_a92db6afbd39d70dde0f830daaaa89be5_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/lseek_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_a45866115a49b918fa6bbd5c32a5afe4f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c_ae4a0e5747966cb33e459ccd1039d1761_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_ac67c11f4ac65504980dd8ba708ed10c6_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_ae7bcd169e2b0ff19a30e39f399aa3256_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_a8f6a5574ee6b32ba0f8c4d5479f0be57_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h__dep__incl.md5 +http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/doxygen.css +http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/error_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/error_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/error_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h.html http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/realloc_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_ab150a3babfe529a34363379756778161_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c_a0076f520c787a3e5bf7f93f8fed92b2d_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c__incl.md5 +http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h_source.html http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c_a873f17992895bdebb3714d48407fd8ee_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c_abc5552dd3521f63af288765527ac58dd_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_r.html -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_a3c20039c03aa27eb189d2f616c7e4ea7_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_aeca9b417e9fd54335f9f505a322dfdf9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_a8077600735c5be8a8eb6a1bc629d913d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c_a57b5e6142bca46d9c0c6cfaeac9c7d72_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort__coll__graph.map -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c_a656c0014bca06d6d9fd748a2f9dc4ab9_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_aa9c700b9dc1b7a0ef866f39c53bb597f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ab9ea58385c07f1cc5b25c984f3863d09_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_g.html -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h__dep__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_b.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_a7ccc330a5672b0630e731e31d7f90cf0_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c_a3c20039c03aa27eb189d2f616c7e4ea7_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c_a86399f38d27baaa31f48be22a403b94f_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_a2f3ce877a460c8045e5ff1c0fc972ae9_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_ab19a868b6a6e09347b26d089a2cc85fd_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a005ad8f66c61b37e97cb88265a1ed9e8_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/functions.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c_a8a497ca6c728daf89446401e2bdda8a8_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_ad37d1cbb778ea31fcf392d01168e4582_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c_a0c17a0b44f572941d9f73518f99ea7ed_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/graph_legend.png -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c_aae4231ac8066eb54ea1d9d12d551605c_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/time_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/structconf__t.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/output_8c_a1b62af37280706bf7493743ff3f7b4aa_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/struct__getopt__data.html -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c_af90ebdd5ec007dce3b05cdb440aca915_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_ac965ebad2452d2e0a6a0167730dbb39f_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c__incl.md5 -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c_a3738c2bfd96d1421c8328fc59754def3_cgraph.map -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a8077600735c5be8a8eb6a1bc629d913d_cgraph.png -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c_a163324639129ef5e99aa4590d2c3c9a4_cgraph.md5 -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/freading_8c__incl.map -http://dhcpd-pools.sourceforge.net/doxygen/string_8h__dep__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_a71fcb729570934d0d3449417ceafcc36_cgraph.png +http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/filename_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/filename_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/files.html +http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/float_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fpending_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/freading_8c.html http://dhcpd-pools.sourceforge.net/doxygen/freading_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c__incl.png -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c_a27e69f6fec7e64d52e1fdc49c8c813d0_cgraph.png +http://dhcpd-pools.sourceforge.net/doxygen/freading_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/ftello_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/functions_func.html +http://dhcpd-pools.sourceforge.net/doxygen/functions.html +http://dhcpd-pools.sourceforge.net/doxygen/functions_vars.html +http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_a.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_b.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_c.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_a.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_b.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_c.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_d.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_e.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_f.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_g.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_h.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_i.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_k.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_l.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_m.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_n.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_o.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_p.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_r.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_s.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_t.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_u.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_v.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_w.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_x.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_y.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_d.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_e.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_enum.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_eval.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_f.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_a.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_b.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_c.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_d.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_e.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_f.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_g.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_h.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_i.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_l.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_m.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_n.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_o.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_p.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_q.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_r.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_s.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_t.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_u.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_func_x.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_g.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_h.html +http://dhcpd-pools.sourceforge.net/doxygen/globals.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_i.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_k.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_l.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_m.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_n.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_o.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_p.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_q.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_r.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_s.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_t.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_type.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_u.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_vars.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_v.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_w.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_x.html +http://dhcpd-pools.sourceforge.net/doxygen/globals_y.html +http://dhcpd-pools.sourceforge.net/doxygen/graph_legend.html +http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/hash_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/index.html +http://dhcpd-pools.sourceforge.net/doxygen/inet_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/inet_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/introduction_8dox.html +http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/isnand_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/itold_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/lseek_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/malloc_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/malloca_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/memchr_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mktime_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/other_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/output_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/progname_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/progname_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/progname_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/quote_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/realloc_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.html +http://dhcpd-pools.sourceforge.net/doxygen/search +http://dhcpd-pools.sourceforge.net/doxygen/search/all_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_17.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_18.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/all_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/classes_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_17.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/defines_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enums_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/files_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/functions_f.html +http://dhcpd-pools.sourceforge.net/doxygen/search/nomatches.html +http://dhcpd-pools.sourceforge.net/doxygen/search/search.css +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_0.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_10.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_11.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_12.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_13.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_14.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_15.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_16.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_1.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_2.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_3.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_4.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_5.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_6.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_7.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_8.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_9.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_a.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_b.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_c.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_d.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_e.html +http://dhcpd-pools.sourceforge.net/doxygen/search/variables_f.html +http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/socket_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/socket_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sort_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/stat_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/stat_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stat_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strdup_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/streq_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/streq_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/structconf__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structexpl.html +http://dhcpd-pools.sourceforge.net/doxygen/struct__getopt__data.html +http://dhcpd-pools.sourceforge.net/doxygen/structiovec.html +http://dhcpd-pools.sourceforge.net/doxygen/structleases__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structmsghdr.html +http://dhcpd-pools.sourceforge.net/doxygen/structmustach__itf.html +http://dhcpd-pools.sourceforge.net/doxygen/structoption.html +http://dhcpd-pools.sourceforge.net/doxygen/structoutput__helper__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort.html +http://dhcpd-pools.sourceforge.net/doxygen/structquoting__options.html +http://dhcpd-pools.sourceforge.net/doxygen/structrange__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t.html +http://dhcpd-pools.sourceforge.net/doxygen/structslotvec.html +http://dhcpd-pools.sourceforge.net/doxygen/structsockaddr__storage.html +http://dhcpd-pools.sourceforge.net/doxygen/structtimespec.html +http://dhcpd-pools.sourceforge.net/doxygen/struct____time__t__must__be__integral.html +http://dhcpd-pools.sourceforge.net/doxygen/structtm__zone.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/tabs.css +http://dhcpd-pools.sourceforge.net/doxygen/time_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/time_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/timegm_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/types_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/types_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/tzset_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/uio_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/uio_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/unionipaddr__t.html +http://dhcpd-pools.sourceforge.net/doxygen/unionmemory__double.html +http://dhcpd-pools.sourceforge.net/doxygen/unionrpl__max__align__t.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/verify_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/verify_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h.html +http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h_source.html +http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c.html From 4befdeeb47aac3d8f69f9be88b05a79345572545 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Fri, 26 Oct 2018 22:01:26 +0100 Subject: [PATCH 15/53] getdata: remote dead code These few lines has been part of code without any point in releases 2.17 to 3.0 and six and half years. Oops. Reference: ae7747db876a6c2aaaaa2f1815d9f41b89c28826 Signed-off-by: Sami Kerola --- src/getdata.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/getdata.c b/src/getdata.c index b513d5d..36a9c9e 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -84,7 +84,6 @@ int parse_leases(struct conf_t *state) FILE *dhcpd_leases; char *line, *ipstring, macstring[20], *stop; union ipaddr_t addr; - struct stat lease_file_stats; struct leases_t *lease; dhcpd_leases = fopen(state->dhcpdlease_file, "r"); @@ -96,12 +95,6 @@ int parse_leases(struct conf_t *state) error(EXIT_FAILURE, errno, "parse_leases: fadvise %s", state->dhcpdlease_file); # endif /* POSIX_FADV_SEQUENTIAL */ #endif /* HAVE_POSIX_FADVISE */ - /* I found out that there's one lease address per 300 bytes in - * dhcpd.leases file. Malloc is little bit pessimistic and uses 250. - * If someone has higher density in lease file I'm interested to - * hear about that. */ - if (stat(state->dhcpdlease_file, &lease_file_stats)) - error(EXIT_FAILURE, errno, "parse_leases: %s", state->dhcpdlease_file); line = xmalloc(sizeof(char) * MAXLEN); line[0] = '\0'; ipstring = xmalloc(sizeof(char) * MAXLEN); From 48e46e8698545ef61b57a7e5dacd10a167820d9b Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Fri, 4 Jan 2019 22:18:53 +0000 Subject: [PATCH 16/53] other: use strftime() to generate date-time string It is better to use library function to create date-time string than sprintf various struct tm members. In same go retire time() call that is obsoleted by clock_gettime(). Signed-off-by: Sami Kerola --- src/other.c | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/src/other.c b/src/other.c index 63d094b..50f2380 100644 --- a/src/other.c +++ b/src/other.c @@ -551,31 +551,23 @@ void clean_up(struct conf_t *state) } /*! \brief Print a time stamp of a path or now to output file. */ -void dp_time_tool(FILE *file, const char *path, int epoch) +void dp_time_tool(FILE *file, const char *path, const int epoch) { - time_t t; - - /* a file or now */ - if (path) { - struct stat st; + struct stat st; + if (path) stat(path, &st); - t = st.st_mtime; - } else - t = time(NULL); - /* epoc or iso time stamp */ + else + clock_gettime(CLOCK_REALTIME, &st.st_mtim); if (epoch) - fprintf(file, "%ld", t); + fprintf(file, "%ld", st.st_mtim.tv_sec); else { char time_stamp[64]; + const time_t mtime = st.st_mtim.tv_sec; struct tm tm; - int len; - localtime_r(&t, &tm); - len = snprintf(time_stamp, sizeof(time_stamp), "%4d-%.2d-%.2dT%02d:%02d:%02d", - tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, - tm.tm_hour, tm.tm_min, tm.tm_sec); - strftime(time_stamp + len, sizeof(time_stamp) - len, "%z", &tm); + localtime_r(&mtime, &tm); + strftime(time_stamp, sizeof(time_stamp), "%FT%T%z", &tm); fprintf(file, "%s", time_stamp); } } From d29b498cae07ff4a169b3f561b83b27cd7c4f8f3 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Fri, 4 Jan 2019 22:39:19 +0000 Subject: [PATCH 17/53] lib: update .gitignore Signed-off-by: Sami Kerola --- lib/.gitignore | 62 +++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 34 deletions(-) diff --git a/lib/.gitignore b/lib/.gitignore index 8d9f964..521a078 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -1,30 +1,26 @@ /*.lo /.libs/ -/Makefile.am -/_Noreturn.h /alloca.h /alloca.in.h /arg-nonnull.h /arpa/inet.h /arpa_inet.in.h /basename-lgpl.c -/c++defs.h /c-ctype.c /c-ctype.h -/c-strcase.h -/c-strcasecmp.c -/c-strcaseeq.h -/c-strncasecmp.c -/charset.alias -/close-stream.c -/close-stream.h +/c++defs.h +/cdefs.h /close.c /closeout.c /closeout.h -/config.charset -/configmake.h -/dirname-lgpl.c +/close-stream.c +/close-stream.h +/c-strcasecmp.c +/c-strcaseeq.h +/c-strcase.h +/c-strncasecmp.c /dirname.h +/dirname-lgpl.c /dosname.h /errno.in.h /error.c @@ -40,8 +36,8 @@ /fflush.c /filename.h /flexmember.h -/float+.h /float.c +/float+.h /float.in.h /fopen.c /fpending.c @@ -54,15 +50,15 @@ /fstat.c /ftell.c /ftello.c +/getopt1.c +/getopt.c /getopt-cdefs.in.h /getopt-core.h /getopt-ext.h +/getopt.in.h +/getopt_int.h /getopt-pfx-core.h /getopt-pfx-ext.h -/getopt.c -/getopt.in.h -/getopt1.c -/getopt_int.h /getprogname.c /getprogname.h /gettext.h @@ -75,6 +71,7 @@ /isnanf.c /isnanl.c /itold.c +/libc-config.h /libdhcpd_pools.la /limits.h /limits.in.h @@ -83,10 +80,10 @@ /localtime-buffer.c /localtime-buffer.h /lseek.c -/malloc.c +/Makefile.am /malloca.c /malloca.h -/malloca.valgrind +/malloc.c /math.c /math.h /math.in.h @@ -95,53 +92,50 @@ /memchr.c /memchr.valgrind /minmax.h -/mktime-internal.h /mktime.c +/mktime-internal.h /msvc-inval.c /msvc-inval.h /msvc-nothrow.c /msvc-nothrow.h /netinet_in.in.h +/_Noreturn.h /nstrftime.c /pathmax.h /progname.c /progname.h -/quote.h /quotearg.c /quotearg.h +/quote.h /realloc.c -/ref-add.sed -/ref-add.sin -/ref-del.sed -/ref-del.sin /setenv.c +/stat.c /stat-time.c /stat-time.h /stat-w32.c /stat-w32.h -/stat.c /stdalign.in.h /stdbool.in.h /stddef.in.h /stdint.in.h -/stdio-impl.h /stdio.h +/stdio-impl.h /stdio.in.h /stdlib.h /stdlib.in.h /stpncpy.c -/str-two-way.h /strdup.c /streq.h +/strerror.c /strerror-override.c /strerror-override.h -/strerror.c /strftime.h /string.h /string.in.h /stripslash.c /strstr.c /strtod.c +/str-two-way.h /sys/socket.h /sys/stat.h /sys/types.h @@ -151,12 +145,12 @@ /sys_stat.in.h /sys_types.in.h /sys_uio.in.h -/time-internal.h +/timegm.c /time.h /time.in.h +/time-internal.h /time_r.c /time_rz.c -/timegm.c /tzset.c /unistd.c /unistd.h @@ -167,10 +161,10 @@ /warn-on-use.h /wchar.h /wchar.in.h -/wctype-h.c /wctype.h +/wctype-h.c /wctype.in.h /xalloc-die.c -/xalloc-oversized.h /xalloc.h +/xalloc-oversized.h /xmalloc.c From 8731c6a11fa24560fd17c780f290642bf67c5391 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 14 Jan 2019 22:59:13 +0000 Subject: [PATCH 18/53] fix typos Signed-off-by: Sami Kerola --- src/getdata.c | 2 +- src/mustach-dhcpd-pools.c | 2 +- src/mustach.h | 6 +++--- src/output.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/getdata.c b/src/getdata.c index 36a9c9e..9d4e288 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -377,7 +377,7 @@ void parse_config(struct conf_t *state, const int is_include, const char *restri newclause = 1; break; case ITS_A_RANGE_FIRST_IP: - /* printf ("range 1nd ip: %s\n", word); */ + /* printf ("range 1st ip: %s\n", word); */ range_p = state->ranges + state->num_ranges; if (!(parse_ipaddr(state, word, &addr))) /* word was not ip, try again */ diff --git a/src/mustach-dhcpd-pools.c b/src/mustach-dhcpd-pools.c index d152938..9a8ec37 100644 --- a/src/mustach-dhcpd-pools.c +++ b/src/mustach-dhcpd-pools.c @@ -362,7 +362,7 @@ static int must_enter(void *closure, const char *name) return 1; } -/*! \brief Function that is called when all elements within a print loop are outputed. */ +/*! \brief Function that is called when all elements within a print loop are outputted. */ static int must_leave(void *closure) { struct expl *e = closure; diff --git a/src/mustach.h b/src/mustach.h index 8196679..716d7e3 100644 --- a/src/mustach.h +++ b/src/mustach.h @@ -71,7 +71,7 @@ struct mustach_itf { /** * fmustach - Renders the mustache 'template' in 'file' for 'itf' and 'closure'. * - * @template: the template string to instanciate + * @template: the template string to instantiate * @itf: the interface to the functions that mustach calls * @closure: the closure to pass to functions called * @file: the file where to write the result @@ -84,7 +84,7 @@ extern int fmustach(const char *template, struct mustach_itf *itf, void *closure /** * fmustach - Renders the mustache 'template' in 'fd' for 'itf' and 'closure'. * - * @template: the template string to instanciate + * @template: the template string to instantiate * @itf: the interface to the functions that mustach calls * @closure: the closure to pass to functions called * @fd: the file descriptor number where to write the result @@ -97,7 +97,7 @@ extern int fdmustach(const char *template, struct mustach_itf *itf, void *closur /** * fmustach - Renders the mustache 'template' in 'result' for 'itf' and 'closure'. * - * @template: the template string to instanciate + * @template: the template string to instantiate * @itf: the interface to the functions that mustach calls * @closure: the closure to pass to functions called * @result: the pointer receiving the result when 0 is returned diff --git a/src/output.c b/src/output.c index 264a970..c99eba2 100644 --- a/src/output.c +++ b/src/output.c @@ -82,7 +82,7 @@ enum count_status_t { }; /*! \var color_tags - * \brief Array of stings that make colors to start and end in different + * \brief Array of strings that make colors to start and end in different * schemas per array column. */ static const char *color_tags[][NUM_OF_OUT_FORMS] = { [STATUS_OK] = { "", "" }, From 6f6369f517b19a65ea332ae762d33f310e0185a3 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 9 Feb 2019 17:41:39 +0000 Subject: [PATCH 19/53] various: fix few warnings -Wmissing-variable-declarations -Wunreachable-code-break and -Wshadow. Signed-off-by: Sami Kerola --- src/analyze.c | 1 - src/dhcpd-pools.c | 6 +++--- src/getdata.c | 7 +++++-- src/other.c | 10 +++++----- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/analyze.c b/src/analyze.c index 0dcd8e7..6721761 100644 --- a/src/analyze.c +++ b/src/analyze.c @@ -86,7 +86,6 @@ void do_counting(struct conf_t *state) break; default: abort(); - break; } } /* Size of range size. */ diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index dd52fe9..8e12750 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -89,7 +89,7 @@ static void prepare_memory(struct conf_t *state) } /*! \brief The --skip option argument parser. */ -static void skip_arg_parse(struct conf_t *state, char *optarg) +static void skip_arg_parse(struct conf_t *state, char *arg) { enum { OPT_ARG_OK = 0, @@ -109,8 +109,8 @@ static void skip_arg_parse(struct conf_t *state, char *optarg) }; char *value; - while (*optarg != '\0') { - switch (getsubopt(&optarg, tokens, &value)) { + while (*arg != '\0') { + switch (getsubopt(&arg, tokens, &value)) { case OPT_ARG_OK: state->skip_ok = 1; break; diff --git a/src/getdata.c b/src/getdata.c index 9d4e288..7863a6b 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -220,9 +221,11 @@ void parse_config(struct conf_t *state, const int is_include, const char *restri #endif /* HAVE_POSIX_FADVISE */ /* Very hairy stuff begins. */ while (unlikely(!feof(dhcpd_config))) { - char c; + int c; c = fgetc(dhcpd_config); + if (CHAR_MAX < c) + continue; /* Certain characters are magical */ switch (c) { /* Handle comments if they are not quoted */ @@ -317,7 +320,7 @@ void parse_config(struct conf_t *state, const int is_include, const char *restri /* Save to word which clause this is. */ if ((newclause == 1 || argument != ITS_NOTHING_INTERESTING) && (!isspace(c) || 0 < quote)) { - word[i] = c; + word[i] = (char) c; i++; /* Long word which is almost causing overflow. None * of words are this long which the program is diff --git a/src/other.c b/src/other.c index 50f2380..f9df885 100644 --- a/src/other.c +++ b/src/other.c @@ -58,7 +58,7 @@ #include "dhcpd-pools.h" -char *(*cidr_last) (union ipaddr_t *restrict addr, const int mask); +static char *(*cidr_last) (union ipaddr_t *restrict addr, const int mask); static char *cidr_last_v4(union ipaddr_t *restrict addr, const int mask); static char *cidr_last_v6(union ipaddr_t *restrict addr, const int mask); @@ -480,13 +480,13 @@ int * \param Color mode string. * \return color mode enum. */ -int parse_color_mode(const char *restrict optarg) +int parse_color_mode(const char *restrict arg) { - if (!strcmp(optarg, "always")) + if (!strcmp(arg, "always")) return color_on; - if (!strcmp(optarg, "auto")) + if (!strcmp(arg, "auto")) return color_auto; - if (!strcmp(optarg, "never")) + if (!strcmp(arg, "never")) return color_off; return color_unknown; } From 71714a0993f7e2d7738378a32f3368eb3537ba4e Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 17 Feb 2019 11:25:09 +0000 Subject: [PATCH 20/53] warnings: ensure optimal packing in structures 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 --- src/dhcpd-pools.c | 2 +- src/dhcpd-pools.h | 20 ++++++++++++-------- src/mustach-dhcpd-pools.c | 1 + 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index 8e12750..4bea2ee 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -340,9 +340,9 @@ int main(int argc, char **argv) .warn_count = 0x100000000, /* == 2^32 that is the entire IPv4 space */ .crit_count = 0x100000000, /* basically turns off the count criteria */ .header_limit = 8, - .color_mode = color_auto, .ranges_size = 64, .ip_version = IPvUNKNOWN, + .color_mode = color_auto, 0 }; int ret_val; diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 4556e06..80e422d 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -125,8 +125,9 @@ struct shared_network_t { double used; double touched; double backups; - int netmask; struct shared_network_t *next; + int netmask; + uint32_t pad; }; /*! \struct range_t @@ -145,12 +146,13 @@ struct range_t { * \brief Various per range and shared net temporary calculation results. */ struct output_helper_t { - int status; double range_size; double percent; double tc; double tcp; double bup; + int status; + uint32_t pad; }; /*! \enum ltype @@ -167,9 +169,10 @@ enum ltype { */ struct leases_t { union ipaddr_t ip; /* ip as key */ - enum ltype type; char *ethernet; UT_hash_handle hh; + enum ltype type; + uint32_t pad; }; /*! \enum limbits @@ -209,22 +212,22 @@ struct conf_t { struct shared_network_t *shared_net_head; /*!< Last entry in shared network linked list. */ struct range_t *ranges; /*!< Array of ranges. */ unsigned int num_ranges; /*!< Number of ranges in the ranges array. */ + enum dhcp_version ip_version; /*!< Designator if the dhcpd is running in IPv4 or IPv6 mode. */ size_t ranges_size; /*!< Size of the ranges array. */ struct leases_t *leases; /*!< An array of individual leases from dhcpd.leases file. */ - enum dhcp_version ip_version; /*!< Designator if the dhcpd is running in IPv4 or IPv6 mode. */ const char *dhcpdconf_file; /*!< Path to dhcpd.conf file. */ const char *dhcpdlease_file; /*!< Path to dhcpd.leases file. */ - int color_format; /*!< Column to use in color_tags array. */ struct output_sort *sorts; /*!< Linked list how to sort ranges. */ const char *output_file; /*!< Output file path. */ - char output_format; /*!< Output format, such as text, json, xml, .... */ const char *mustach_template; /*!< Mustach template file path. */ double warning; /*!< Warning percent threshold. */ double critical; /*!< Critical percent threshold. */ double warn_count; /*!< Maximum number of free IP's before warning. */ double crit_count; /*!< Maximum number of free IP's before critical. */ double minsize; /*!< Minimum size of range or shared network to be considered exceeding threshold. */ - unsigned int + int color_format; /*!< Column to use in color_tags array. */ + char output_format; /*!< Output format, such as text, json, xml, .... */ + uint32_t print_mac_addreses:1, /*!< Print mac address in xml or json. */ reverse_order:1, /*!< Reverse sort order. */ backups_found:1, /*!< Indicator if dhcpd.leases file has leases in backup state. */ @@ -238,7 +241,8 @@ struct conf_t { skip_critical:1, /*!< Skip critical values from output. */ skip_minsize:1, /*!< Skip alarming values that are below minsize from output. */ skip_suppressed:1, /*!< Skip alarming values that are suppressed with --snet-alarms option, or they are shared networks without IP availability. */ - color_mode:2; /*!< Indicator if colors should be used in output. */ + color_mode:2, /*!< Indicator if colors should be used in output. */ + pad_bits:4; }; /* Function prototypes */ diff --git a/src/mustach-dhcpd-pools.c b/src/mustach-dhcpd-pools.c index 9a8ec37..8aa412a 100644 --- a/src/mustach-dhcpd-pools.c +++ b/src/mustach-dhcpd-pools.c @@ -62,6 +62,7 @@ struct expl { struct shared_network_t *shnet_p; struct output_helper_t oh; int current; + uint32_t pad; }; static int must_enter(void *closure, const char *name); From 008e9f17c1ce9433134a592e8179e4976185f68c Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 23 Mar 2019 22:19:13 +0000 Subject: [PATCH 21/53] other: use IP string lengths from netinet/in.h Signed-off-by: Sami Kerola --- src/other.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/other.c b/src/other.c index f9df885..21a19f4 100644 --- a/src/other.c +++ b/src/other.c @@ -298,7 +298,7 @@ const char *ntop_ipaddr_init(const union ipaddr_t *ip __attribute__ ((unused))) const char *ntop_ipaddr_v4(const union ipaddr_t *ip) { - static char buffer[sizeof("255.255.255.255")]; + static char buffer[INET_ADDRSTRLEN]; struct in_addr addr; addr.s_addr = htonl(ip->v4); @@ -307,7 +307,7 @@ const char *ntop_ipaddr_v4(const union ipaddr_t *ip) const char *ntop_ipaddr_v6(const union ipaddr_t *ip) { - static char buffer[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")]; + static char buffer[INET6_ADDRSTRLEN]; struct in6_addr addr; memcpy(addr.s6_addr, ip->v6, sizeof(addr.s6_addr)); From 4f64902a9e66a7356c4772b064e3bd1c2936db40 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 26 Mar 2019 21:00:40 +0000 Subject: [PATCH 22/53] mustach: sync with most recent mustach upstream changes Git: https://gitlab.com/jobol/mustach.git Commit: 3a694bdc6cdd374358a30949206e315ed3428cf9 Signed-off-by: Sami Kerola --- src/mustach-dhcpd-pools.c | 2 +- src/mustach.c | 127 ++++++++++++++++++++++++++++---------- src/mustach.h | 18 ++++-- 3 files changed, 110 insertions(+), 37 deletions(-) diff --git a/src/mustach-dhcpd-pools.c b/src/mustach-dhcpd-pools.c index 8aa412a..00e1b8b 100644 --- a/src/mustach-dhcpd-pools.c +++ b/src/mustach-dhcpd-pools.c @@ -441,7 +441,7 @@ int mustach_dhcpd_pools(struct conf_t *state) case MUSTACH_ERROR_BAD_SEPARATORS: error(EXIT_FAILURE, 0, "mustach_dhcpd_pools: fmustach: bad separator"); break; - case MUSTACH_ERROR_TOO_DEPTH: + case MUSTACH_ERROR_TOO_DEEP: error(EXIT_FAILURE, 0, "mustach_dhcpd_pools: fmustach: too deep"); break; case MUSTACH_ERROR_CLOSING: diff --git a/src/mustach.c b/src/mustach.c index 9868cff..45eb7a4 100644 --- a/src/mustach.c +++ b/src/mustach.c @@ -30,6 +30,76 @@ #define NAME_LENGTH_MAX 1024 #define DEPTH_MAX 256 +#if !defined(NO_OPEN_MEMSTREAM) +static FILE *memfile_open(char **buffer, size_t *size) +{ + return open_memstream(buffer, size); +} +static void memfile_abort(FILE *file, char **buffer, size_t *size) +{ + fclose(file); + free(*buffer); + *buffer = NULL; + *size = 0; +} +static int memfile_close(FILE *file, char **buffer, size_t *size) +{ + int rc; + + /* adds terminating null */ + rc = fputc(0, file) ? MUSTACH_ERROR_SYSTEM : 0; + fclose(file); + if (rc == 0) + /* removes terminating null of the length */ + (*size)--; + else { + free(*buffer); + *buffer = NULL; + *size = 0; + } + return rc; +} +#else +static FILE *memfile_open(char **buffer, size_t *size) +{ + return tmpfile(); +} +static void memfile_abort(FILE *file, char **buffer, size_t *size) +{ + fclose(file); + *buffer = NULL; + *size = 0; +} +static int memfile_close(FILE *file, char **buffer, size_t *size) +{ + int rc; + size_t s; + char *b; + + s = (size_t)ftell(file); + b = malloc(s + 1); + if (b == NULL) { + rc = MUSTACH_ERROR_SYSTEM; + errno = ENOMEM; + s = 0; + } else { + rewind(file); + if (1 == fread(b, s, 1, file)) { + rc = 0; + b[s] = 0; + } else { + rc = MUSTACH_ERROR_SYSTEM; + free(b); + b = NULL; + s = 0; + } + } + *buffer = b; + *size = s; + return rc; +} +#endif + static int getpartial(struct mustach_itf *itf, void *closure, const char *name, char **result) { int rc; @@ -37,26 +107,22 @@ static int getpartial(struct mustach_itf *itf, void *closure, const char *name, size_t size; *result = NULL; - file = open_memstream(result, &size); + file = memfile_open(result, &size); if (file == NULL) rc = MUSTACH_ERROR_SYSTEM; else { rc = itf->put(closure, name, 0, file); - if (rc == 0) - /* adds terminating null */ - rc = fputc(0, file) ? MUSTACH_ERROR_SYSTEM : 0; - fclose(file); - if (rc < 0) { - free(*result); - *result = NULL; - } + if (rc < 0) + memfile_abort(file, result, &size); + else + rc = memfile_close(file, result, &size); } return rc; } static int process(const char *template, struct mustach_itf *itf, void *closure, FILE *file, const char *opstr, const char *clstr) { - char name[NAME_LENGTH_MAX + 1], *partial, c; + char name[NAME_LENGTH_MAX + 1], *partial, c, *tmp; const char *beg, *term; struct { const char *name, *again; size_t length; int emit, entered; } stack[DEPTH_MAX]; size_t oplen, cllen, len, l; @@ -112,8 +178,10 @@ static int process(const char *template, struct mustach_itf *itf, void *closure, default: while (len && isspace(beg[0])) { beg++; len--; } while (len && isspace(beg[len-1])) len--; +#if defined(NO_EXTENSION_FOR_MUSTACH) || defined(NO_ALLOW_EMPTY_TAG) if (len == 0) return MUSTACH_ERROR_EMPTY_TAG; +#endif if (len > NAME_LENGTH_MAX) return MUSTACH_ERROR_TAG_TOO_LONG; memcpy(name, beg, len); @@ -134,19 +202,25 @@ static int process(const char *template, struct mustach_itf *itf, void *closure, for (l = 0; l < len && !isspace(beg[l]) ; l++); if (l == len) return MUSTACH_ERROR_BAD_SEPARATORS; - opstr = strndupa(beg, l); + oplen = l; + tmp = alloca(oplen + 1); + memcpy(tmp, beg, oplen); + tmp[oplen] = 0; + opstr = tmp; while (l < len && isspace(beg[l])) l++; if (l == len) return MUSTACH_ERROR_BAD_SEPARATORS; - clstr = strndupa(beg + l, len - l); - oplen = strlen(opstr); - cllen = strlen(clstr); + cllen = len - l; + tmp = alloca(cllen + 1); + memcpy(tmp, beg + l, cllen); + tmp[cllen] = 0; + clstr = tmp; break; case '^': case '#': /* begin section */ if (depth == DEPTH_MAX) - return MUSTACH_ERROR_TOO_DEPTH; + return MUSTACH_ERROR_TOO_DEEP; rc = emit; if (rc) { rc = itf->enter(closure, name); @@ -234,24 +308,15 @@ int mustach(const char *template, struct mustach_itf *itf, void *closure, char * *result = NULL; if (size == NULL) size = &s; - file = open_memstream(result, size); - if (file == NULL) { + file = memfile_open(result, size); + if (file == NULL) rc = MUSTACH_ERROR_SYSTEM; - errno = ENOMEM; - } else { + else { rc = fmustach(template, itf, closure, file); - if (rc == 0) - /* adds terminating null */ - rc = fputc(0, file) ? MUSTACH_ERROR_SYSTEM : 0; - fclose(file); - if (rc >= 0) - /* removes terminating null of the length */ - (*size)--; - else { - free(*result); - *result = NULL; - *size = 0; - } + if (rc < 0) + memfile_abort(file, result, size); + else + rc = memfile_close(file, result, size); } return rc; } diff --git a/src/mustach.h b/src/mustach.h index 716d7e3..32288a1 100644 --- a/src/mustach.h +++ b/src/mustach.h @@ -29,12 +29,17 @@ * * The functions enter and next should return 0 or 1. * - * All other functions should normally return 0. + * All other functions should normally return 0. If it returns + * a negative value, it means an error that stop the process + * and that is reported to the caller. * * @start: Starts the mustach processing of the closure * 'start' is optional (can be NULL) * * @put: Writes the value of 'name' to 'file' with 'escape' or not + * As an extension (see NO_ALLOW_EMPTY_TAG), the 'name' can be + * the empty string. In that later case an implemntation can + * return MUSTACH_ERROR_EMPTY_TAG to refuse empty names. * * @enter: Enters the section of 'name' if possible. * Musts return 1 if entered or 0 if not entered. @@ -64,14 +69,17 @@ struct mustach_itf { #define MUSTACH_ERROR_EMPTY_TAG -3 #define MUSTACH_ERROR_TAG_TOO_LONG -4 #define MUSTACH_ERROR_BAD_SEPARATORS -5 -#define MUSTACH_ERROR_TOO_DEPTH -6 +#define MUSTACH_ERROR_TOO_DEEP -6 #define MUSTACH_ERROR_CLOSING -7 #define MUSTACH_ERROR_BAD_UNESCAPE_TAG -8 +/* compatibility with older bad name */ +#define MUSTACH_ERROR_TOO_DEPTH MUSTACH_ERROR_TOO_DEEP + /** * fmustach - Renders the mustache 'template' in 'file' for 'itf' and 'closure'. * - * @template: the template string to instantiate + * @template: the template string to instanciate * @itf: the interface to the functions that mustach calls * @closure: the closure to pass to functions called * @file: the file where to write the result @@ -84,7 +92,7 @@ extern int fmustach(const char *template, struct mustach_itf *itf, void *closure /** * fmustach - Renders the mustache 'template' in 'fd' for 'itf' and 'closure'. * - * @template: the template string to instantiate + * @template: the template string to instanciate * @itf: the interface to the functions that mustach calls * @closure: the closure to pass to functions called * @fd: the file descriptor number where to write the result @@ -97,7 +105,7 @@ extern int fdmustach(const char *template, struct mustach_itf *itf, void *closur /** * fmustach - Renders the mustache 'template' in 'result' for 'itf' and 'closure'. * - * @template: the template string to instantiate + * @template: the template string to instanciate * @itf: the interface to the functions that mustach calls * @closure: the closure to pass to functions called * @result: the pointer receiving the result when 0 is returned From 17d68b7e3e09977a4b3e726dc27888acef3a7756 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 26 Mar 2019 21:26:51 +0000 Subject: [PATCH 23/53] various: tidy up variable scopes, and one name mismatch Signed-off-by: Sami Kerola --- src/dhcpd-pools.h | 2 +- src/output.c | 8 ++++---- src/sort.c | 3 ++- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 80e422d..2bb365c 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -279,7 +279,7 @@ extern void set_ipv_functions(struct conf_t *state, int version); extern void flip_ranges(struct conf_t *state); extern void clean_up(struct conf_t *state); extern void parse_cidr(struct conf_t *state, struct range_t *range_p, const char *word); -extern int parse_color_mode(const char *restrict optarg); +extern int parse_color_mode(const char *restrict arg); extern double strtod_or_err(const char *restrict str, const char *restrict errmesg); extern void __attribute__ ((noreturn)) print_version(void); extern void __attribute__ ((noreturn)) usage(int status); diff --git a/src/output.c b/src/output.c index c99eba2..a2f0c29 100644 --- a/src/output.c +++ b/src/output.c @@ -219,7 +219,6 @@ static void close_outfile(FILE *outfile) /*! \brief Text output format, which is the default. */ static int output_txt(struct conf_t *state) { - unsigned int i; struct range_t *range_p; struct shared_network_t *shared_p; struct output_helper_t oh; @@ -249,6 +248,7 @@ static int output_txt(struct conf_t *state) fprintf(outfile, "\n"); } if (state->number_limit & R_BIT) { + unsigned int i; for (i = 0; i < state->num_ranges; i++) { int color_set = 0; @@ -366,7 +366,6 @@ static int output_txt(struct conf_t *state) /*! \brief The xml output formats. */ static int output_xml(struct conf_t *state) { - unsigned int i; struct range_t *range_p; struct shared_network_t *shared_p; struct output_helper_t oh; @@ -394,6 +393,7 @@ static int output_xml(struct conf_t *state) } if (state->number_limit & R_BIT) { + unsigned int i; for (i = 0; i < state->num_ranges; i++) { if (range_output_helper(state, &oh, range_p)) { range_p++; @@ -762,7 +762,6 @@ static void newsection(FILE *restrict f, char const *restrict title) /*! \brief Output html format. */ static int output_html(struct conf_t *state) { - unsigned int i; struct range_t *range_p; struct shared_network_t *shared_p; struct output_helper_t oh; @@ -877,6 +876,7 @@ static int output_html(struct conf_t *state) end_tag(outfile, "thead"); } if (state->number_limit & R_BIT) { + unsigned int i; start_tag(outfile, "tbody"); for (i = 0; i < state->num_ranges; i++) { if (range_output_helper(state, &oh, range_p)) { @@ -916,7 +916,6 @@ static int output_html(struct conf_t *state) /*! \brief Output cvs format. */ static int output_csv(struct conf_t *state) { - unsigned int i; struct range_t *range_p; struct shared_network_t *shared_p; struct output_helper_t oh; @@ -935,6 +934,7 @@ static int output_csv(struct conf_t *state) fprintf(outfile, "\n"); } if (state->number_limit & R_BIT) { + unsigned int i; for (i = 0; i < state->num_ranges; i++) { if (range_output_helper(state, &oh, range_p)) { range_p++; diff --git a/src/sort.c b/src/sort.c index 2c3a05f..ab252c0 100644 --- a/src/sort.c +++ b/src/sort.c @@ -286,7 +286,6 @@ void mergesort_ranges(struct conf_t *state, struct range_t *restrict orig, unsig struct range_t *restrict temp, const int root_call) { unsigned int left, i, u_right; - int s_right; struct range_t hold; /* Merge sort split size */ static const unsigned int MIN_MERGE_SIZE = 8; @@ -296,6 +295,8 @@ void mergesort_ranges(struct conf_t *state, struct range_t *restrict orig, unsig if (size < MIN_MERGE_SIZE) { for (left = 0; left < size; left++) { + int s_right; + hold = *(orig + left); for (s_right = left - 1; 0 <= s_right; s_right--) { if (merge(state, (orig + s_right), &hold)) From 07b4eaa480ad4c6b37387ba0fc44105c8f99e7d7 Mon Sep 17 00:00:00 2001 From: Mark Sangster Date: Mon, 15 Apr 2019 15:15:58 +0100 Subject: [PATCH 24/53] output: fix warn and crit counts on shared networks The crit/warn_count is tested against used rather than free. It is only for shared networks, the range correctly subtracts count from size to get its free. Signed-off-by: Sami Kerola --- THANKS | 1 + src/output.c | 4 ++-- tests/alarm-count-option | 7 +++++++ tests/expected/alarm-count-option | 18 ++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/THANKS b/THANKS index 6e76373..a1ba2bc 100644 --- a/THANKS +++ b/THANKS @@ -45,3 +45,4 @@ Boris Lytochkin Jeff Bailey José Bollo Sebastián Cramatte +Mark Sangster diff --git a/src/output.c b/src/output.c index a2f0c29..275e431 100644 --- a/src/output.c +++ b/src/output.c @@ -158,11 +158,11 @@ int shnet_output_helper(struct conf_t *state, struct output_helper_t *oh, oh->status = STATUS_IGNORED; if (state->skip_minsize) return 1; - } else if (state->critical < oh->percent && shared_p->used < state->crit_count) { + } else if (state->critical < oh->percent && (shared_p->available - shared_p->used) < state->crit_count) { oh->status = STATUS_CRIT; if (state->skip_critical) return 1; - } else if (state->warning < oh->percent && shared_p->used < state->warn_count) { + } else if (state->warning < oh->percent && (shared_p->available - shared_p->used) < state->warn_count) { oh->status = STATUS_WARN; if (state->skip_warning) return 1; diff --git a/tests/alarm-count-option b/tests/alarm-count-option index 763af1b..37d894d 100755 --- a/tests/alarm-count-option +++ b/tests/alarm-count-option @@ -32,6 +32,13 @@ dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/comp echo $? >> tests/outputs/$IAM-too cat tests/outputs/$IAM-too >> tests/outputs/$IAM +echo '== shared net count alarms ==' >> tests/outputs/$IAM +dhcpd-pools -c $top_srcdir/tests/confs/complete -l $top_srcdir/tests/leases/complete \ + --color=always --format t --crit-count=20 --critical=0 --warning=0 --warn-count=24 \ + --output=tests/outputs/$IAM-too +echo $? >> tests/outputs/$IAM-too +cat tests/outputs/$IAM-too >> tests/outputs/$IAM + rm -f tests/outputs/$IAM-too diff -u $top_srcdir/tests/expected/$IAM tests/outputs/$IAM exit $? diff --git a/tests/expected/alarm-count-option b/tests/expected/alarm-count-option index 3e9b76d..c2f466e 100644 --- a/tests/expected/alarm-count-option +++ b/tests/expected/alarm-count-option @@ -14,3 +14,21 @@ Shared nets - crit: 0 warn: 0 ok: 0 ignored: 2; | snet_crit=0 snet_warn=0 snet_o WARNING: dhcpd-pools: Ranges - crit: 0 warn: 0 ok: 2; | range_crit=0 range_warn=0 range_ok=2 Shared nets - crit: 0 warn: 2 ok: 0; | snet_crit=0 snet_warn=2 snet_ok=0 1 +== shared net count alarms == +Ranges: +shared net name first ip last ip max cur percent touch t+c t+c perc +example1 10.0.0.1 - 10.0.0.20 20 11 55.000 0 11 55.000 +example1 10.1.0.1 - 10.1.0.20 20 10 50.000 0 10 50.000 +example2 10.2.0.1 - 10.2.0.20 20 8 40.000 0 8 40.000 +example2 10.3.0.1 - 10.3.0.20 20 9 45.000 0 9 45.000 +All networks 10.4.0.1 - 10.4.0.20 20 5 25.000 0 5 25.000 + +Shared networks: +name max cur percent touch t+c t+c perc +example1 40 21 52.500 0 21 52.500 +example2 40 17 42.500 0 17 42.500 + +Sum of all ranges: +name max cur percent touch t+c t+c perc +All networks 100 43 43.000 0 43 43.000 +0 From 707eafa67040659da363d3a8060c4b737eb21801 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 27 Jul 2019 21:17:45 +0100 Subject: [PATCH 25/53] build-sys: update .gitignore files Signed-off-by: Sami Kerola --- build-aux/.gitignore | 1 + lib/.gitignore | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/build-aux/.gitignore b/build-aux/.gitignore index a85ce13..1d51c02 100644 --- a/build-aux/.gitignore +++ b/build-aux/.gitignore @@ -1,6 +1,7 @@ /ar-lib /compile /config.guess +/config.rpath /config.sub /depcomp /install-sh diff --git a/lib/.gitignore b/lib/.gitignore index 521a078..0dd8aa6 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -1,5 +1,3 @@ -/*.lo -/.libs/ /alloca.h /alloca.in.h /arg-nonnull.h @@ -62,6 +60,7 @@ /getprogname.c /getprogname.h /gettext.h +/glthread/* /hard-locale.c /hard-locale.h /inet_pton.c @@ -73,8 +72,10 @@ /itold.c /libc-config.h /libdhcpd_pools.la +/.libs/ /limits.h /limits.in.h +/*.lo /localcharset.c /localcharset.h /localtime-buffer.c @@ -136,14 +137,14 @@ /strstr.c /strtod.c /str-two-way.h -/sys/socket.h -/sys/stat.h -/sys/types.h -/sys/uio.h /sys_socket.c +/sys/socket.h /sys_socket.in.h +/sys/stat.h /sys_stat.in.h +/sys/types.h /sys_types.in.h +/sys/uio.h /sys_uio.in.h /timegm.c /time.h @@ -164,6 +165,15 @@ /wctype.h /wctype-h.c /wctype.in.h +/windows-initguard.h +/windows-mutex.c +/windows-mutex.h +/windows-once.c +/windows-once.h +/windows-recmutex.c +/windows-recmutex.h +/windows-rwlock.c +/windows-rwlock.h /xalloc-die.c /xalloc.h /xalloc-oversized.h From fb518b7a19ba397ccaad500a4bb9964e05d8cd4a Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 27 Jul 2019 21:02:10 +0100 Subject: [PATCH 26/53] output: add warning and critical threshold counts to mustach Signed-off-by: Sami Kerola --- samples/mustach.template | 6 +++ src/dhcpd-pools.h | 12 +++++ src/mustach-dhcpd-pools.c | 42 ++++++++++++---- src/output.c | 100 +++++++++++++++++++++++--------------- tests/expected/mustach | 12 +++++ 5 files changed, 125 insertions(+), 47 deletions(-) diff --git a/samples/mustach.template b/samples/mustach.template index 3c0db39..669910d 100644 --- a/samples/mustach.template +++ b/samples/mustach.template @@ -65,3 +65,9 @@ lease_file_epoch_mtime: {{lease_file_epoch_mtime}} template_file_path: {{template_file_path}} template_file_local_mtime: {{template_file_local_mtime}} template_file_epoch_mtime: {{template_file_epoch_mtime}} + +number_of_ranges_warning: {{number_of_ranges_warning}} +number_of_ranges_critical: {{number_of_ranges_critical}} +number_of_shared_networks: {{number_of_shared_networks}} +number_of_shared_networks_warning: {{number_of_shared_networks_warning}} +number_of_shared_networks_critical: {{number_of_shared_networks_critical}} diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 2bb365c..36ec255 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -155,6 +155,16 @@ struct output_helper_t { uint32_t pad; }; +/*! \struct status_counts_t + * \brief Range and shared network alarming status counts. + */ +struct status_counts_t { + unsigned int warning; + unsigned int critical; + unsigned int ok; + unsigned int ignored; +}; + /*! \enum ltype * \brief Lease state types. These are the possible values in struct leases_t. */ @@ -320,6 +330,8 @@ extern int range_output_helper(struct conf_t *state, struct output_helper_t *oh, extern int shnet_output_helper(struct conf_t *state, struct output_helper_t *oh, struct shared_network_t *shared_p); extern int output_analysis(struct conf_t *state); +extern void range_alarms(struct conf_t *state, struct status_counts_t *rangstat); +extern void shared_net_alarms(struct conf_t *state, struct status_counts_t *sharstat); /* sort.c */ extern void mergesort_ranges(struct conf_t *state, diff --git a/src/mustach-dhcpd-pools.c b/src/mustach-dhcpd-pools.c index 00e1b8b..4e25346 100644 --- a/src/mustach-dhcpd-pools.c +++ b/src/mustach-dhcpd-pools.c @@ -82,21 +82,45 @@ static int must_put_base(void *closure, const char *name, int escape fprintf(file, "%u", e->state->num_ranges); return 0; } + if (!strcmp(name, "number_of_ranges_warning")) { + struct status_counts_t stat = { 0 }; + + range_alarms(e->state, &stat); + fprintf(file, "%u", stat.warning); + return 0; + } + if (!strcmp(name, "number_of_ranges_critical")) { + struct status_counts_t stat = { 0 }; + + range_alarms(e->state, &stat); + fprintf(file, "%u", stat.critical); + return 0; + } if (!strcmp(name, "number_of_shared_networks")) { - static uint32_t num = 0xffffffff; + uint32_t num = 0; + struct shared_network_t *shared_p; - if (num == 0xffffffff) { - /* Use of static num ensures this is done only once. */ - struct shared_network_t *shared_p; - - num = 0; - for (shared_p = e->state->shared_net_root->next; shared_p; - shared_p = shared_p->next) - num++; + for (shared_p = e->state->shared_net_root->next; shared_p; + shared_p = shared_p->next) { + num++; } fprintf(file, "%u", num); return 0; } + if (!strcmp(name, "number_of_shared_networks_warning")) { + struct status_counts_t stat = { 0 }; + + shared_net_alarms(e->state, &stat); + fprintf(file, "%u", stat.warning); + return 0; + } + if (!strcmp(name, "number_of_shared_networks_critical")) { + struct status_counts_t stat = { 0 }; + + shared_net_alarms(e->state, &stat); + fprintf(file, "%u", stat.critical); + return 0; + } if (!strcmp(name, "version")) { fprintf(file, "%s", PACKAGE_VERSION); return 0; diff --git a/src/output.c b/src/output.c index 275e431..bc20d18 100644 --- a/src/output.c +++ b/src/output.c @@ -1024,19 +1024,11 @@ static int output_csv(struct conf_t *state) return 0; } -/*! \brief Output alarm text, and return program exit value. */ -static int output_alarming(struct conf_t *state) +void range_alarms(struct conf_t *state, struct status_counts_t *rangstat) { - FILE *outfile; - struct range_t *range_p; - struct shared_network_t *shared_p; struct output_helper_t oh; + struct range_t *range_p = state->ranges; unsigned int i; - int rw = 0, rc = 0, ro = 0, ri = 0, sw = 0, sc = 0, so = 0, si = 0; - int ret_val; - - outfile = open_outfile(state); - range_p = state->ranges; if (state->number_limit & R_BIT) { for (i = 0; i < state->num_ranges; i++) { @@ -1045,16 +1037,16 @@ static int output_alarming(struct conf_t *state) case STATUS_SUPPRESSED: break; case STATUS_IGNORED: - ri++; + rangstat->ignored++; break; case STATUS_CRIT: - rc++; + rangstat->critical++; break; case STATUS_WARN: - rw++; + rangstat->warning++; break; case STATUS_OK: - ro++; + rangstat->ok++; break; default: abort(); @@ -1062,6 +1054,13 @@ static int output_alarming(struct conf_t *state) range_p++; } } +} + +void shared_net_alarms(struct conf_t *state, struct status_counts_t *sharstat) +{ + struct output_helper_t oh; + struct shared_network_t *shared_p; + if (state->number_limit & S_BIT) { for (shared_p = state->shared_net_root->next; shared_p; shared_p = shared_p->next) { shnet_output_helper(state, &oh, shared_p); @@ -1069,35 +1068,51 @@ static int output_alarming(struct conf_t *state) case STATUS_SUPPRESSED: break; case STATUS_IGNORED: - si++; + sharstat->ignored++; break; case STATUS_CRIT: - sc++; + sharstat->critical++; break; case STATUS_WARN: - sw++; + sharstat->warning++; break; case STATUS_OK: - so++; + sharstat->ok++; break; default: abort(); } } } +} - if (sc || rc) + +/*! \brief Output alarm text, and return program exit value. */ +static int output_alarming(struct conf_t *state) +{ + FILE *outfile; + unsigned int i; + int ret_val; + struct status_counts_t rangstat = { 0 }; + struct status_counts_t sharstat = { 0 }; + + outfile = open_outfile(state); + + range_alarms(state, &rangstat); + shared_net_alarms(state, &sharstat); + + if (rangstat.critical || sharstat.critical) ret_val = STATE_CRITICAL; - else if (sw || rw) + else if (rangstat.warning || sharstat.warning) ret_val = STATE_WARNING; else ret_val = STATE_OK; - if ((0 < rc && state->number_limit & R_BIT) - || (0 < sc && state->number_limit & S_BIT)) { + if ((0 < rangstat.critical && state->number_limit & R_BIT) + || (0 < sharstat.critical && state->number_limit & S_BIT)) { fprintf(outfile, "CRITICAL: %s:", program_name); - } else if ((0 < rw && state->number_limit & R_BIT) - || (0 < sw && state->number_limit & S_BIT)) { + } else if ((0 < rangstat.warning && state->number_limit & R_BIT) + || (0 < sharstat.warning && state->number_limit & S_BIT)) { fprintf(outfile, "WARNING: %s:", program_name); } else { if (state->number_limit & A_BIT) @@ -1110,17 +1125,21 @@ static int output_alarming(struct conf_t *state) } } if (state->header_limit & R_BIT) { - fprintf(outfile, " Ranges - crit: %d warn: %d ok: %d", rc, rw, ro); - if (ri != 0) { - fprintf(outfile, " ignored: %d", ri); + fprintf(outfile, " Ranges - crit: %d warn: %d ok: %d", rangstat.critical, rangstat.warning, rangstat.ok); + if (rangstat.ignored != 0) { + fprintf(outfile, " ignored: %d", rangstat.ignored); } - fprintf(outfile, "; | range_crit=%d range_warn=%d range_ok=%d", rc, rw, ro); - if (ri != 0) { - fprintf(outfile, " range_ignored=%d", ri); + fprintf(outfile, "; | range_crit=%d range_warn=%d range_ok=%d", rangstat.critical, rangstat.warning, rangstat.ok); + if (rangstat.ignored != 0) { + fprintf(outfile, " range_ignored=%d", rangstat.ignored); } if (state->perfdata == 1 && state->number_limit & R_BIT) { - for (i = 0; i < state->num_ranges; i++) { - range_p--; + /* last to first order. too late to fix this after so many years */ + struct range_t *range_p = state->ranges + state->num_ranges - 1; + + for (i = state->num_ranges; i; i--) { + struct output_helper_t oh; + if (range_output_helper(state, &oh, range_p)) continue; if (state->minsize < oh.range_size) { @@ -1137,6 +1156,7 @@ static int output_alarming(struct conf_t *state) range_p->backups); } } + range_p--; } } fprintf(outfile, "\n"); @@ -1144,16 +1164,20 @@ static int output_alarming(struct conf_t *state) fprintf(outfile, " "); } if (state->header_limit & S_BIT) { - fprintf(outfile, "Shared nets - crit: %d warn: %d ok: %d", sc, sw, so); - if (si != 0) { - fprintf(outfile, " ignored: %d", si); + fprintf(outfile, "Shared nets - crit: %d warn: %d ok: %d", sharstat.critical, sharstat.warning, sharstat.ok); + if (sharstat.ignored != 0) { + fprintf(outfile, " ignored: %d", sharstat.ignored); } - fprintf(outfile, "; | snet_crit=%d snet_warn=%d snet_ok=%d", sc, sw, so); - if (si != 0) { - fprintf(outfile, " snet_ignored=%d", si); + fprintf(outfile, "; | snet_crit=%d snet_warn=%d snet_ok=%d", sharstat.critical, sharstat.warning, sharstat.ok); + if (sharstat.ignored != 0) { + fprintf(outfile, " snet_ignored=%d", sharstat.ignored); } if (state->perfdata == 1 && state->header_limit & R_BIT) { + struct shared_network_t *shared_p; + for (shared_p = state->shared_net_root->next; shared_p; shared_p = shared_p->next) { + struct output_helper_t oh; + if (shnet_output_helper(state, &oh, shared_p)) continue; if (state->minsize < shared_p->available) { diff --git a/tests/expected/mustach b/tests/expected/mustach index dddecb0..a8942c6 100644 --- a/tests/expected/mustach +++ b/tests/expected/mustach @@ -120,6 +120,12 @@ number_of_shared_networks: 2 + +number_of_ranges_warning: 0 +number_of_ranges_critical: 0 +number_of_shared_networks: 2 +number_of_shared_networks_warning: 0 +number_of_shared_networks_critical: 0 --- skip ok --- Subnets: location: example1 @@ -201,3 +207,9 @@ number_of_shared_networks: 2 + +number_of_ranges_warning: 3 +number_of_ranges_critical: 0 +number_of_shared_networks: 2 +number_of_shared_networks_warning: 1 +number_of_shared_networks_critical: 0 From 21194d2e4aa62aabc0bb50f4040422b4426c2761 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 27 Jul 2019 22:53:42 +0100 Subject: [PATCH 27/53] samples: make prometheus template less klunky This should work nicer when displaying various statistics from prometheus with grafana. Signed-off-by: Sami Kerola --- samples/prometheus.template | 35 ++++++++--------------------------- 1 file changed, 8 insertions(+), 27 deletions(-) diff --git a/samples/prometheus.template b/samples/prometheus.template index f8a5726..d48f959 100644 --- a/samples/prometheus.template +++ b/samples/prometheus.template @@ -1,30 +1,11 @@ # This mustach template can be used as Prometheus text file. # https://prometheus.io/ - -# HELP dhcpd_pools_ranges The range statistics. -# TYPE dhcpd_pools_ranges gauge -{{#subnets}}dhcpd_pools_ranges{range="{{first_ip}}",used="1"} {{used}} {{gettimeofday}}000 -dhcpd_pools_ranges{range="{{first_ip}}",touched="1"} {{touched}} {{gettimeofday}}000 -dhcpd_pools_ranges{range="{{first_ip}}",defined="1"} {{defined}} {{gettimeofday}}000 -dhcpd_pools_ranges{range="{{first_ip}}",free="1"} {{free}} {{gettimeofday}}000 -dhcpd_pools_ranges{range="{{first_ip}}",touch_count="1"} {{touch_count}} {{gettimeofday}}000 -dhcpd_pools_ranges{range="{{first_ip}}",status="1"} {{status}} {{gettimeofday}}000 +# HELP dhcpd_pools ISC dhcpd statistics +# TYPE dhcpd_pools gauge +{{#subnets}}dhcpd_pools{location="{{location}}",range="{{first_ip}}",used="1"} {{used}} {{gettimeofday}}000 +dhcpd_pools{location="{{location}}",range="{{first_ip}}",touched="1"} {{touched}} {{gettimeofday}}000 +dhcpd_pools{location="{{location}}",range="{{first_ip}}",defined="1"} {{defined}} {{gettimeofday}}000 +dhcpd_pools{location="{{location}}",range="{{first_ip}}",free="1"} {{free}} {{gettimeofday}}000 +dhcpd_pools{location="{{location}}",range="{{first_ip}}",touch_count="1"} {{touch_count}} {{gettimeofday}}000 +dhcpd_pools{location="{{location}}",range="{{first_ip}}",status="1"} {{status}} {{gettimeofday}}000 {{/subnets}} -# HELP dhcpd_pools_shared_nets The shared networks statistics. -# TYPE dhcpd_pools_shared_nets gauge -{{#shared-networks}}dhcpd_pools_shared_nets{location="{{location}}",defined="1"} {{defined}} {{gettimeofday}}000 -dhcpd_pools_shared_nets{location="{{location}}",used="1"} {{used}} {{gettimeofday}}000 -dhcpd_pools_shared_nets{location="{{location}}",touched="1"} {{touched}} {{gettimeofday}}000 -dhcpd_pools_shared_nets{location="{{location}}",free="1"} {{free}} {{gettimeofday}}000 -dhcpd_pools_shared_nets{location="{{location}}",touch_count="1"} {{touch_count}} {{gettimeofday}}000 -dhcpd_pools_shared_nets{location="{{location}}",status="1"} {{status}} {{gettimeofday}}000 -{{/shared-networks}} -# HELP dhcpd_pools_summary Statistics of the all networks. -# TYPE dhcpd_pools_summary gauge -{{#summary}}dhcpd_pools_summary{location="{{location}}",defined="1"} {{defined}} {{gettimeofday}}000 -dhcpd_pools_summary{location="{{location}}",used="1"} {{used}} {{gettimeofday}}000 -dhcpd_pools_summary{location="{{location}}",touched="1"} {{touched}} {{gettimeofday}}000 -dhcpd_pools_summary{location="{{location}}",free="1"} {{free}} {{gettimeofday}}000 -dhcpd_pools_summary{location="{{location}}",touch_count="1"} {{touch_count}} {{gettimeofday}}000 -dhcpd_pools_summary{location="{{location}}",status="1"} {{status}} {{gettimeofday}}000 -{{/summary}} From b96c6c14d2f31c6ec0530ffad568b94de2bce363 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Thu, 12 Sep 2019 22:27:58 +0100 Subject: [PATCH 28/53] misc: fix spelling issues Signed-off-by: Sami Kerola --- man/dhcpd-pools.1.in | 4 ++-- tests/expected/sorts | 2 +- tests/sorts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/man/dhcpd-pools.1.in b/man/dhcpd-pools.1.in index 91bc53a..2179163 100644 --- a/man/dhcpd-pools.1.in +++ b/man/dhcpd-pools.1.in @@ -156,7 +156,7 @@ printed. .TP \fB\-\-color\fR=\fIwhen\fR Use yellow for warning, red for critical, green for suppressed by \-\-minsize -and blue when \-\-snet\-alarms is the cause of supression or shared network +and blue when \-\-snet\-alarms is the cause of suppression or shared network does not have any ranges. The .I when string can be @@ -183,7 +183,7 @@ can be one of the following: .IR minsize , or .IR suppressed . -The skipping criterias are exact match with colors in \-\-color option. +The skipping criteria is exact match with colors in \-\-color option. .TP \fB\-\-warning\fR=\fIpercent\fR Turn on alarm output format, and specify percentage number which will diff --git a/tests/expected/sorts b/tests/expected/sorts index c6a6f21..b5f1dc7 100644 --- a/tests/expected/sorts +++ b/tests/expected/sorts @@ -34,7 +34,7 @@ Sum of all ranges: name max cur percent touch t+c t+c perc All networks 100 43 43.000 0 43 43.000 0 -== maxium == +== maximum == Ranges: shared net name first ip last ip max cur percent touch t+c t+c perc All networks 10.4.0.1 - 10.4.0.20 20 5 25.000 0 5 25.000 diff --git a/tests/sorts b/tests/sorts index 74185cb..bc6b9be 100755 --- a/tests/sorts +++ b/tests/sorts @@ -20,7 +20,7 @@ dhcpd-pools --config $top_srcdir/tests/confs/complete --leases $top_srcdir/tests echo $? >> tests/outputs/$IAM-too cat tests/outputs/$IAM-too >> tests/outputs/$IAM -echo '== maxium ==' >> tests/outputs/$IAM +echo '== maximum ==' >> tests/outputs/$IAM dhcpd-pools --config $top_srcdir/tests/confs/complete --leases $top_srcdir/tests/leases/complete \ --sort=m --output=tests/outputs/$IAM-too echo $? >> tests/outputs/$IAM-too From 544e7ec0a594c4cfe56d647d532f105895d3b3d9 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 26 Oct 2019 21:50:48 +0100 Subject: [PATCH 29/53] output: add ethernet address priting support to --mustach Signed-off-by: Sami Kerola --- samples/mustach.template | 3 ++ src/dhcpd-pools.c | 1 + src/mustach-dhcpd-pools.c | 38 ++++++++++++++ tests/expected/mustach | 102 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 144 insertions(+) diff --git a/samples/mustach.template b/samples/mustach.template index 669910d..ed4561e 100644 --- a/samples/mustach.template +++ b/samples/mustach.template @@ -1,3 +1,6 @@ +Ethernets:{{#active_lease}} + macaddress: {{macaddress}} ip: {{ip}}{{/active_lease}} + Subnets:{{#subnets}} location: {{location}} range: {{range}} diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index 4bea2ee..1488541 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -231,6 +231,7 @@ static void parse_command_line_opts(struct conf_t *state, int argc, char **argv) #ifdef BUILD_MUSTACH state->mustach_template = optarg; state->output_format = 'm'; + state->print_mac_addreses = 1; #else error(EXIT_FAILURE, 0, "compiled without mustach support"); #endif diff --git a/src/mustach-dhcpd-pools.c b/src/mustach-dhcpd-pools.c index 4e25346..625588e 100644 --- a/src/mustach-dhcpd-pools.c +++ b/src/mustach-dhcpd-pools.c @@ -58,6 +58,7 @@ */ struct expl { struct conf_t *state; + struct leases_t *lease_p; struct range_t *range_p; struct shared_network_t *shnet_p; struct output_helper_t oh; @@ -178,6 +179,36 @@ static struct mustach_itf itf = { .leave = must_leave }; +/*! \brief Mustach active lease aka {{#active_lease}} tag parser and printer. */ +static int must_put_active_lease(void *closure, const char *name, int escape + __attribute__((unused)), FILE *file) +{ + struct expl *e = closure; + + if (!strcmp(name, "ip")) { + fprintf(file, "%s", ntop_ipaddr(&e->lease_p->ip)); + return 0; + } + if (!strcmp(name, "macaddress")) { + fprintf(file, "%s", e->lease_p->ethernet); + return 0; + } + error(EXIT_FAILURE, 0, "mustach_dhcpd_pools: fmustach: unexpected tag: %s", name); + return 1; +} + +/*! \brief A function to move to next lease when {{/active_lease}} is encountered. */ +static int must_next_active_lease(void *closure) +{ + struct expl *e = closure; + + e->lease_p = e->lease_p->hh.next; + if (e->lease_p == NULL) + return 0; + return 1; +} + + /*! \brief Mustach range aka {{#subnets}} tag parser and printer. */ static int must_put_range(void *closure, const char *name, int escape __attribute__ ((unused)), FILE *file) @@ -359,6 +390,13 @@ static int must_enter(void *closure, const char *name) { struct expl *e = closure; + if (!strcmp(name, "active_lease")) { + itf.put = must_put_active_lease; + itf.next = must_next_active_lease; + e->current = 0; + e->lease_p = e->state->leases; + return must_next_active_lease(closure); + } if (!strcmp(name, "subnets")) { itf.put = must_put_range; itf.next = must_next_range; diff --git a/tests/expected/mustach b/tests/expected/mustach index a8942c6..f4df432 100644 --- a/tests/expected/mustach +++ b/tests/expected/mustach @@ -1,3 +1,54 @@ +Ethernets: + macaddress: 00:00:00:00:00:01 ip: 10.0.0.1 + macaddress: 00:00:00:00:00:02 ip: 10.0.0.2 + macaddress: 00:00:00:00:00:03 ip: 10.0.0.3 + macaddress: 00:00:00:00:00:04 ip: 10.0.0.4 + macaddress: 00:00:00:00:00:05 ip: 10.0.0.5 + macaddress: 00:00:00:00:00:06 ip: 10.0.0.6 + macaddress: 00:00:00:00:00:07 ip: 10.0.0.7 + macaddress: 00:00:00:00:00:08 ip: 10.0.0.8 + macaddress: 00:00:00:00:00:09 ip: 10.0.0.9 + macaddress: 00:00:00:00:00:10 ip: 10.0.0.10 + macaddress: 00:00:00:00:00:11 ip: 10.0.0.11 + macaddress: 00:00:00:00:00:12 ip: 10.0.0.12 + macaddress: 00:00:00:00:01:00 ip: 10.1.0.0 + macaddress: 00:00:00:00:01:01 ip: 10.1.0.1 + macaddress: 00:00:00:00:01:02 ip: 10.1.0.2 + macaddress: 00:00:00:00:01:03 ip: 10.1.0.3 + macaddress: 00:00:00:00:01:04 ip: 10.1.0.4 + macaddress: 00:00:00:00:01:05 ip: 10.1.0.5 + macaddress: 00:00:00:00:01:06 ip: 10.1.0.6 + macaddress: 00:00:00:00:01:07 ip: 10.1.0.7 + macaddress: 00:00:00:00:01:08 ip: 10.1.0.8 + macaddress: 00:00:00:00:01:09 ip: 10.1.0.9 + macaddress: 00:00:00:00:01:10 ip: 10.1.0.10 + macaddress: 00:00:00:00:02:00 ip: 10.2.0.0 + macaddress: 00:00:00:00:02:01 ip: 10.2.0.1 + macaddress: 00:00:00:00:02:02 ip: 10.2.0.2 + macaddress: 00:00:00:00:02:03 ip: 10.2.0.3 + macaddress: 00:00:00:00:02:04 ip: 10.2.0.4 + macaddress: 00:00:00:00:02:05 ip: 10.2.0.5 + macaddress: 00:00:00:00:02:06 ip: 10.2.0.6 + macaddress: 00:00:00:00:02:07 ip: 10.2.0.7 + macaddress: 00:00:00:00:02:08 ip: 10.2.0.8 + macaddress: 00:00:00:00:03:00 ip: 10.3.0.0 + macaddress: 00:00:00:00:03:01 ip: 10.3.0.1 + macaddress: 00:00:00:00:03:02 ip: 10.3.0.2 + macaddress: 00:00:00:00:03:03 ip: 10.3.0.3 + macaddress: 00:00:00:00:03:04 ip: 10.3.0.4 + macaddress: 00:00:00:00:03:05 ip: 10.3.0.5 + macaddress: 00:00:00:00:03:06 ip: 10.3.0.6 + macaddress: 00:00:00:00:03:07 ip: 10.3.0.7 + macaddress: 00:00:00:00:03:08 ip: 10.3.0.8 + macaddress: 00:00:00:00:03:09 ip: 10.3.0.9 + macaddress: 00:00:00:00:04:00 ip: 10.4.0.0 + macaddress: 00:00:00:00:04:01 ip: 10.4.0.1 + macaddress: 00:00:00:00:04:02 ip: 10.4.0.2 + macaddress: 00:00:00:00:04:03 ip: 10.4.0.3 + macaddress: 00:00:00:00:04:04 ip: 10.4.0.4 + macaddress: 00:00:00:00:04:05 ip: 10.4.0.5 + macaddress: 00:00:00:00:04:06 ip: 10.4.0.6 + Subnets: location: example1 range: 10.0.0.1 - 10.0.0.20 @@ -127,6 +178,57 @@ number_of_shared_networks: 2 number_of_shared_networks_warning: 0 number_of_shared_networks_critical: 0 --- skip ok --- +Ethernets: + macaddress: 00:00:00:00:00:01 ip: 10.0.0.1 + macaddress: 00:00:00:00:00:02 ip: 10.0.0.2 + macaddress: 00:00:00:00:00:03 ip: 10.0.0.3 + macaddress: 00:00:00:00:00:04 ip: 10.0.0.4 + macaddress: 00:00:00:00:00:05 ip: 10.0.0.5 + macaddress: 00:00:00:00:00:06 ip: 10.0.0.6 + macaddress: 00:00:00:00:00:07 ip: 10.0.0.7 + macaddress: 00:00:00:00:00:08 ip: 10.0.0.8 + macaddress: 00:00:00:00:00:09 ip: 10.0.0.9 + macaddress: 00:00:00:00:00:10 ip: 10.0.0.10 + macaddress: 00:00:00:00:00:11 ip: 10.0.0.11 + macaddress: 00:00:00:00:00:12 ip: 10.0.0.12 + macaddress: 00:00:00:00:01:00 ip: 10.1.0.0 + macaddress: 00:00:00:00:01:01 ip: 10.1.0.1 + macaddress: 00:00:00:00:01:02 ip: 10.1.0.2 + macaddress: 00:00:00:00:01:03 ip: 10.1.0.3 + macaddress: 00:00:00:00:01:04 ip: 10.1.0.4 + macaddress: 00:00:00:00:01:05 ip: 10.1.0.5 + macaddress: 00:00:00:00:01:06 ip: 10.1.0.6 + macaddress: 00:00:00:00:01:07 ip: 10.1.0.7 + macaddress: 00:00:00:00:01:08 ip: 10.1.0.8 + macaddress: 00:00:00:00:01:09 ip: 10.1.0.9 + macaddress: 00:00:00:00:01:10 ip: 10.1.0.10 + macaddress: 00:00:00:00:02:00 ip: 10.2.0.0 + macaddress: 00:00:00:00:02:01 ip: 10.2.0.1 + macaddress: 00:00:00:00:02:02 ip: 10.2.0.2 + macaddress: 00:00:00:00:02:03 ip: 10.2.0.3 + macaddress: 00:00:00:00:02:04 ip: 10.2.0.4 + macaddress: 00:00:00:00:02:05 ip: 10.2.0.5 + macaddress: 00:00:00:00:02:06 ip: 10.2.0.6 + macaddress: 00:00:00:00:02:07 ip: 10.2.0.7 + macaddress: 00:00:00:00:02:08 ip: 10.2.0.8 + macaddress: 00:00:00:00:03:00 ip: 10.3.0.0 + macaddress: 00:00:00:00:03:01 ip: 10.3.0.1 + macaddress: 00:00:00:00:03:02 ip: 10.3.0.2 + macaddress: 00:00:00:00:03:03 ip: 10.3.0.3 + macaddress: 00:00:00:00:03:04 ip: 10.3.0.4 + macaddress: 00:00:00:00:03:05 ip: 10.3.0.5 + macaddress: 00:00:00:00:03:06 ip: 10.3.0.6 + macaddress: 00:00:00:00:03:07 ip: 10.3.0.7 + macaddress: 00:00:00:00:03:08 ip: 10.3.0.8 + macaddress: 00:00:00:00:03:09 ip: 10.3.0.9 + macaddress: 00:00:00:00:04:00 ip: 10.4.0.0 + macaddress: 00:00:00:00:04:01 ip: 10.4.0.1 + macaddress: 00:00:00:00:04:02 ip: 10.4.0.2 + macaddress: 00:00:00:00:04:03 ip: 10.4.0.3 + macaddress: 00:00:00:00:04:04 ip: 10.4.0.4 + macaddress: 00:00:00:00:04:05 ip: 10.4.0.5 + macaddress: 00:00:00:00:04:06 ip: 10.4.0.6 + Subnets: location: example1 range: 10.0.0.1 - 10.0.0.20 From e48768b041a117a6794d5da0602042cc5ed4d903 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 31 Mar 2020 19:55:33 +0100 Subject: [PATCH 30/53] build-sys: update bootstrap from gnulib Signed-off-by: Sami Kerola --- THANKS | 1 + bootstrap | 299 ++++++++++++++++++++++++++++--------------------- bootstrap.conf | 4 +- lib/.gitignore | 13 +++ 4 files changed, 188 insertions(+), 129 deletions(-) diff --git a/THANKS b/THANKS index a1ba2bc..e91502a 100644 --- a/THANKS +++ b/THANKS @@ -46,3 +46,4 @@ Jeff Bailey José Bollo Sebastián Cramatte Mark Sangster +Brent Swingle diff --git a/bootstrap b/bootstrap index 43c8545..3d1bc08 100755 --- a/bootstrap +++ b/bootstrap @@ -1,10 +1,10 @@ #! /bin/sh # Print a version string. -scriptversion=2017-09-13.06; # UTC +scriptversion=2019-01-04.17; # UTC # Bootstrap this package from checked-out sources. -# Copyright (C) 2003-2017 Free Software Foundation, Inc. +# Copyright (C) 2003-2020 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -47,6 +47,8 @@ PERL="${PERL-perl}" me=$0 +default_gnulib_url=git://git.sv.gnu.org/gnulib + usage() { cat </dev/null; then - echo "$0: getting gnulib files..." - git submodule init -- "$gnulib_path" || exit $? - git submodule update -- "$gnulib_path" || exit $? - - elif [ ! -d "$gnulib_path" ]; then - echo "$0: getting gnulib files..." - - trap cleanup_gnulib 1 2 13 15 - - shallow= - git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' - git clone $shallow git://git.sv.gnu.org/gnulib "$gnulib_path" || - cleanup_gnulib - - trap - 1 2 13 15 +if $use_gnulib; then + if $use_git; then + gnulib_path=$(git_modules_config submodule.gnulib.path) + test -z "$gnulib_path" && gnulib_path=gnulib fi - GNULIB_SRCDIR=$gnulib_path - ;; -*) - # Use GNULIB_SRCDIR directly or as a reference. - if $use_git && test -d "$GNULIB_SRCDIR"/.git && \ - git_modules_config submodule.gnulib.url >/dev/null; then - echo "$0: getting gnulib files..." - if git submodule -h|grep -- --reference > /dev/null; then - # Prefer the one-liner available in git 1.6.4 or newer. - git submodule update --init --reference "$GNULIB_SRCDIR" \ - "$gnulib_path" || exit $? - else - # This fallback allows at least git 1.5.5. - if test -f "$gnulib_path"/gnulib-tool; then - # Since file already exists, assume submodule init already complete. - git submodule update -- "$gnulib_path" || exit $? - else - # Older git can't clone into an empty directory. - rmdir "$gnulib_path" 2>/dev/null - git clone --reference "$GNULIB_SRCDIR" \ - "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ - && git submodule init -- "$gnulib_path" \ - && git submodule update -- "$gnulib_path" \ - || exit $? + + # Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a + # submodule, for use in the rest of the script. + + case ${GNULIB_SRCDIR--} in + -) + # Note that $use_git is necessarily true in this case. + if git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + git submodule init -- "$gnulib_path" || exit $? + git submodule update -- "$gnulib_path" || exit $? + + elif [ ! -d "$gnulib_path" ]; then + echo "$0: getting gnulib files..." + + trap cleanup_gnulib 1 2 13 15 + + shallow= + if test -z "$GNULIB_REVISION"; then + git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' fi + git clone $shallow ${GNULIB_URL:-$default_gnulib_url} "$gnulib_path" \ + || cleanup_gnulib + + trap - 1 2 13 15 fi GNULIB_SRCDIR=$gnulib_path + ;; + *) + # Use GNULIB_SRCDIR directly or as a reference. + if $use_git && test -d "$GNULIB_SRCDIR"/.git && \ + git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + if git submodule -h|grep -- --reference > /dev/null; then + # Prefer the one-liner available in git 1.6.4 or newer. + git submodule update --init --reference "$GNULIB_SRCDIR" \ + "$gnulib_path" || exit $? + else + # This fallback allows at least git 1.5.5. + if test -f "$gnulib_path"/gnulib-tool; then + # Since file already exists, assume submodule init already complete. + git submodule update -- "$gnulib_path" || exit $? + else + # Older git can't clone into an empty directory. + rmdir "$gnulib_path" 2>/dev/null + git clone --reference "$GNULIB_SRCDIR" \ + "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ + && git submodule init -- "$gnulib_path" \ + && git submodule update -- "$gnulib_path" \ + || exit $? + fi + fi + GNULIB_SRCDIR=$gnulib_path + fi + ;; + esac + + if test -d "$GNULIB_SRCDIR"/.git && test -n "$GNULIB_REVISION" \ + && ! git_modules_config submodule.gnulib.url >/dev/null; then + (cd "$GNULIB_SRCDIR" && git checkout "$GNULIB_REVISION") || cleanup_gnulib fi - ;; -esac -# $GNULIB_SRCDIR now points to the version of gnulib to use, and -# we no longer need to use git or $gnulib_path below here. + # $GNULIB_SRCDIR now points to the version of gnulib to use, and + # we no longer need to use git or $gnulib_path below here. -if $bootstrap_sync; then - cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { - echo "$0: updating bootstrap and restarting..." - case $(sh -c 'echo "$1"' -- a) in - a) ignored=--;; - *) ignored=ignored;; - esac - exec sh -c \ - 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ - $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \ - "$0" "$@" --no-bootstrap-sync - } + if $bootstrap_sync; then + cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { + echo "$0: updating bootstrap and restarting..." + case $(sh -c 'echo "$1"' -- a) in + a) ignored=--;; + *) ignored=ignored;; + esac + exec sh -c \ + 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ + $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \ + "$0" "$@" --no-bootstrap-sync + } + fi + + gnulib_tool=$GNULIB_SRCDIR/gnulib-tool + <$gnulib_tool || exit $? fi -gnulib_tool=$GNULIB_SRCDIR/gnulib-tool -<$gnulib_tool || exit $? - # Get translations. download_po_files() { subdir=$1 domain=$2 echo "$me: getting translations into $subdir for $domain..." - cmd=$(printf "$po_download_command_format" "$domain" "$subdir") - eval "$cmd" && return - # Fallback to HTTP. - cmd=$(printf "$po_download_command_format2" "$subdir" "$domain") + cmd=$(printf "$po_download_command_format" "$subdir" "$domain") eval "$cmd" } @@ -793,7 +827,7 @@ symlink_to_dir() # aren't confused into doing unnecessary builds. Conversely, if the # existing symlink's timestamp is older than the source, make it afresh, # so that broken tools aren't confused into skipping needed builds. See - # . + # . test -h "$dst" && src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 && dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 && @@ -899,36 +933,47 @@ fi # Import from gnulib. -gnulib_tool_options="\ - --import\ - --no-changelog\ - --aux-dir $build_aux\ - --doc-base $doc_base\ - --lib $gnulib_name\ - --m4-base $m4_base/\ - --source-base $source_base/\ - --tests-base $tests_base\ - --local-dir $local_gl_dir\ - $gnulib_tool_option_extras\ -" -if test $use_libtool = 1; then - case "$gnulib_tool_options " in - *' --libtool '*) ;; - *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; - esac -fi -echo "$0: $gnulib_tool $gnulib_tool_options --import ..." -$gnulib_tool $gnulib_tool_options --import $gnulib_modules \ - || die "gnulib-tool failed" +if $use_gnulib; then + gnulib_tool_options="\ + --no-changelog\ + --aux-dir=$build_aux\ + --doc-base=$doc_base\ + --lib=$gnulib_name\ + --m4-base=$m4_base/\ + --source-base=$source_base/\ + --tests-base=$tests_base\ + --local-dir=$local_gl_dir\ + $gnulib_tool_option_extras\ + " + if test $use_libtool = 1; then + case "$gnulib_tool_options " in + *' --libtool '*) ;; + *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; + esac + fi + echo "$0: $gnulib_tool $gnulib_tool_options --import ..." + $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ + || die "gnulib-tool failed" -for file in $gnulib_files; do - symlink_to_dir "$GNULIB_SRCDIR" $file \ - || die "failed to symlink $file" -done + for file in $gnulib_files; do + symlink_to_dir "$GNULIB_SRCDIR" $file \ + || die "failed to symlink $file" + done +fi bootstrap_post_import_hook \ || die "bootstrap_post_import_hook failed" +# Don't proceed if there are uninitialized submodules. In particular, +# the next step will remove dangling links, which might be links into +# uninitialized submodules. +# +# Uninitialized submodules are listed with an initial dash. +if $use_git && git submodule | grep '^-' >/dev/null; then + die "some git submodules are not initialized. " \ + "Run 'git submodule init' and bootstrap again." +fi + # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some # gnulib-populated directories. Such .m4 files would cause aclocal to fail. # The following requires GNU find 4.2.3 or newer. Considering the usual @@ -1021,7 +1066,7 @@ bootstrap_epilogue echo "$0: done. Now you can run './configure'." # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" diff --git a/bootstrap.conf b/bootstrap.conf index bc07e7f..321ed00 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -1,6 +1,6 @@ # Bootstrap configuration. -# Copyright (C) 2006-2017 Free Software Foundation, Inc. +# Copyright (C) 2006-2020 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -13,7 +13,7 @@ # GNU General Public License for more details. # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # gnulib modules used by this package. diff --git a/lib/.gitignore b/lib/.gitignore index 0dd8aa6..03b1c1f 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -65,11 +65,15 @@ /hard-locale.h /inet_pton.c /intprops.h +/inttypes.h +/inttypes.in.h /isnan.c /isnand.c /isnanf.c /isnanl.c /itold.c +/lc-charset-dispatch.c +/lc-charset-dispatch.h /libc-config.h /libdhcpd_pools.la /.libs/ @@ -78,6 +82,8 @@ /*.lo /localcharset.c /localcharset.h +/locale.h +/locale.in.h /localtime-buffer.c /localtime-buffer.h /lseek.c @@ -89,7 +95,11 @@ /math.h /math.in.h /mbrtowc.c +/mbrtowc-impl.h +/mbrtowc-impl-utf8.h /mbsinit.c +/mbtowc-lock.c +/mbtowc-lock.h /memchr.c /memchr.valgrind /minmax.h @@ -110,6 +120,9 @@ /quote.h /realloc.c /setenv.c +/setlocale-lock.c +/setlocale_null.c +/setlocale_null.h /stat.c /stat-time.c /stat-time.h From ec613f762d3bcf299e8a83d3af83c5a48a68d78c Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 31 Mar 2020 20:11:48 +0100 Subject: [PATCH 31/53] output: update javascripts Signed-off-by: Sami Kerola --- src/output.c | 6 +++--- tests/expected/formats | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/output.c b/src/output.c index bc20d18..2d7f28d 100644 --- a/src/output.c +++ b/src/output.c @@ -628,8 +628,8 @@ static void html_header(struct conf_t *state, FILE *restrict f) fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); - fprintf(f, "\n"); - fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); fprintf(f, "\n"); @@ -652,7 +652,7 @@ static void html_footer(FILE *restrict f) fprintf(f, "Generated using %s
\n", PACKAGE_STRING); fprintf(f, "More info at %s\n", PACKAGE_URL, PACKAGE_URL); fprintf(f, "
\n"); - fprintf(f, "\n"); + fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); diff --git a/tests/expected/formats b/tests/expected/formats index 6aa6432..9008b93 100644 --- a/tests/expected/formats +++ b/tests/expected/formats @@ -23,8 +23,8 @@ All networks 100 43 43.000 0 43 43.000 - - + + @@ -178,7 +178,7 @@ table.dhcpd-pools th { text-transform: capitalize }
- + From 45f7fc15142a3e85596e077872e2b049ae08557b Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Tue, 31 Mar 2020 20:19:12 +0100 Subject: [PATCH 32/53] release: 3.1 Signed-off-by: Sami Kerola --- NEWS | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/NEWS b/NEWS index 7022464..7e9a424 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,43 @@ Please send dhcpd-pools bug reports to kerolasa@iki.fi. gpg: Signature is crated using RSA key ID 8ED396E37E38D471A00530D3A9553245FDE9B739. + +Version 3.1 +Mark Sangster (1): + output: fix warn and crit counts on shared networks + +Sami Kerola (31): + webpage: add instructions how to get output you need + build-sys: add coverage files to .gitignore + tests: improve coverage + docs: fix peoples name in THANKS file to have correct characters + add .mailmap + output: fix implicit conversion + main: simplify option parsing + fix typo + main: move print_mac_addreses to state structure + main: move output_format to state, and rename color_format + webpages: use html sample output + fix switch missing default case warnings + sort: ensure NaN will not trip over comp_double() + drop images, java scripts, and such from web sitemap file + getdata: remote dead code + other: use strftime() to generate date-time string + lib: update .gitignore + fix typos + various: fix few warnings + warnings: ensure optimal packing in structures + other: use IP string lengths from netinet/in.h + mustach: sync with most recent mustach upstream changes + various: tidy up variable scopes, and one name mismatch + build-sys: update .gitignore files + output: add warning and critical threshold counts to mustach + samples: make prometheus template less klunky + misc: fix spelling issues + output: add ethernet address priting support to --mustach + build-sys: update bootstrap from gnulib + output: update javascripts + release: 3.1 Version 3.0 Sami Kerola (56): From b005ce9a2572cc0b1b2d9b9082bfd88c9baa68ec Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 29 Aug 2020 09:46:21 +0100 Subject: [PATCH 33/53] contrib: point out where one can find zabbix template Thanks to Mathieu Morier for adding a Zabbix support. Signed-off-by: Sami Kerola --- THANKS | 1 + contrib/zabbix.txt | 4 ++++ 2 files changed, 5 insertions(+) create mode 100644 contrib/zabbix.txt diff --git a/THANKS b/THANKS index e91502a..f5fd050 100644 --- a/THANKS +++ b/THANKS @@ -47,3 +47,4 @@ José Bollo Sebastián Cramatte Mark Sangster Brent Swingle +Mathieu Morier diff --git a/contrib/zabbix.txt b/contrib/zabbix.txt new file mode 100644 index 0000000..9ea279a --- /dev/null +++ b/contrib/zabbix.txt @@ -0,0 +1,4 @@ +Zabbix 5 template, and instructions how to use it, can be found from +Mathieu's repository. + +https://github.com/mmorier86/dhcpd-pools-zabbix-template From 0f19d44c1d03f9db0a68b8a3c3220706dd682ce0 Mon Sep 17 00:00:00 2001 From: Jean Benoit Date: Fri, 4 Sep 2020 19:30:21 +0100 Subject: [PATCH 34/53] contrib: snmptest.pl SNMPwalk can't access to all variables/wrong sort MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Large quantity of data will be missing when snmptest.pl is used. The reason is a sort in lexicographic order: $ snmpwalk -v2c -c public localhost .1.3.6.1.4.1.2021.250.255 |head iso.3.6.1.4.1.2021.250.255.2.1 = STRING:  "10.4.52.1" iso.3.6.1.4.1.2021.250.255.2.10 = STRING: "192.168.35.64" iso.3.6.1.4.1.2021.250.255.2.100 = STRING: "192.168.196.1" iso.3.6.1.4.1.2021.250.255.2.101 = STRING: "192.168.198.1" iso.3.6.1.4.1.2021.250.255.2.102 = STRING: "192.168.209.225" iso.3.6.1.4.1.2021.250.255.2.103 = STRING: "192.168.209.241" SNMPGetNext after "root.2.1" should give "root.2.2". Thus, lots of variables are missing. The function is now dependant on a CPAN module NetSNMP::OID, (debian/ubuntu package is called libsnmp-perl). This is probably not the most efficient way to do it: walking the whole tree will be much slower. Signed-off-by: Jean Benoit --- THANKS | 1 + contrib/snmptest.pl | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/THANKS b/THANKS index f5fd050..4bb123d 100644 --- a/THANKS +++ b/THANKS @@ -48,3 +48,4 @@ Sebastián Cramatte Mark Sangster Brent Swingle Mathieu Morier +Jean Benoit diff --git a/contrib/snmptest.pl b/contrib/snmptest.pl index c77b882..54093c7 100644 --- a/contrib/snmptest.pl +++ b/contrib/snmptest.pl @@ -23,9 +23,10 @@ # you set $dbg to 1 then output will be generated in /tmp. use strict; +use NetSNMP::OID; # Version info: -my $SNMPver = "snmp1.0"; +my $SNMPver = "snmp1.1"; my $DHCPver = "dhcp1.0"; my $VERSION = "$SNMPver/$DHCPver"; # @@ -193,7 +194,7 @@ sub ParseDataFile () { } close IN; if ($dbg) { - foreach (sort @validoidlist) { print DBG "ValidOID: $_\n"; } + foreach (sort Oidcmp @validoidlist) { print DBG "ValidOID: $_\n"; } } if ($dbg) { @@ -370,7 +371,7 @@ sub GetData ($) { @userquery = split (/\./, $userqueryoid); my $found = 0; - foreach (sort @validoidlist) { + foreach (sort Oidcmp @validoidlist) { $next = $_; print DBG "Comparing $userqueryoid vs. $_\n" if $dbg; @validoid = split (/\./, $_); @@ -432,6 +433,12 @@ sub Pong { $line = 0; } +sub Oidcmp { + my $oida = new NetSNMP::OID($a); + my $oidb = new NetSNMP::OID($b); + snmp_oid_compare($oida, $oidb); +} + ################################## START ################################## # # Main From 2ecfc86a06eede846e24942bdbb1d85762b0685c Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Wed, 9 Sep 2020 20:22:37 +0100 Subject: [PATCH 35/53] build-sys: update .gitignore files Signed-off-by: Sami Kerola --- lib/.gitignore | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/.gitignore b/lib/.gitignore index 03b1c1f..382c06d 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -3,11 +3,15 @@ /arg-nonnull.h /arpa/inet.h /arpa_inet.in.h +/attribute.h /basename-lgpl.c +/basename-lgpl.h /c-ctype.c /c-ctype.h /c++defs.h /cdefs.h +/cloexec.c +/cloexec.h /close.c /closeout.c /closeout.h @@ -20,12 +24,14 @@ /dirname.h /dirname-lgpl.c /dosname.h +/dup2.c /errno.in.h /error.c /error.h /exitfail.c /exitfail.h /fclose.c +/fcntl.c /fcntl.h /fcntl.in.h /fd-hook.c @@ -48,6 +54,7 @@ /fstat.c /ftell.c /ftello.c +/getdtablesize.c /getopt1.c /getopt.c /getopt-cdefs.in.h @@ -60,6 +67,7 @@ /getprogname.c /getprogname.h /gettext.h +/.gitignore~ /glthread/* /hard-locale.c /hard-locale.h @@ -112,6 +120,7 @@ /netinet_in.in.h /_Noreturn.h /nstrftime.c +/open.c /pathmax.h /progname.c /progname.h From c7e005899413a22b4e0a241e26b49039e55963ee Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 5 Sep 2021 15:51:29 +0100 Subject: [PATCH 36/53] config: remove unnecessary padding Signed-off-by: Sami Kerola --- src/dhcpd-pools.c | 3 +-- src/dhcpd-pools.h | 6 +----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/src/dhcpd-pools.c b/src/dhcpd-pools.c index 1488541..1373053 100644 --- a/src/dhcpd-pools.c +++ b/src/dhcpd-pools.c @@ -343,8 +343,7 @@ int main(int argc, char **argv) .header_limit = 8, .ranges_size = 64, .ip_version = IPvUNKNOWN, - .color_mode = color_auto, - 0 + .color_mode = color_auto }; int ret_val; diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 36ec255..0f93b80 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -127,7 +127,6 @@ struct shared_network_t { double backups; struct shared_network_t *next; int netmask; - uint32_t pad; }; /*! \struct range_t @@ -152,7 +151,6 @@ struct output_helper_t { double tcp; double bup; int status; - uint32_t pad; }; /*! \struct status_counts_t @@ -182,7 +180,6 @@ struct leases_t { char *ethernet; UT_hash_handle hh; enum ltype type; - uint32_t pad; }; /*! \enum limbits @@ -251,8 +248,7 @@ struct conf_t { skip_critical:1, /*!< Skip critical values from output. */ skip_minsize:1, /*!< Skip alarming values that are below minsize from output. */ skip_suppressed:1, /*!< Skip alarming values that are suppressed with --snet-alarms option, or they are shared networks without IP availability. */ - color_mode:2, /*!< Indicator if colors should be used in output. */ - pad_bits:4; + color_mode:2; /*!< Indicator if colors should be used in output. */ }; /* Function prototypes */ From 5126e636651605bcc008fdcb1f438dc8de76247a Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 5 Sep 2021 15:52:07 +0100 Subject: [PATCH 37/53] build-sys: autotools and gnulib related updates Signed-off-by: Sami Kerola --- Makefile.am | 2 +- lib/.gitignore | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index b1f14be..735e5d9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -40,7 +40,7 @@ edit_cmd = sed \ $(PATHFILES): Makefile @ rm -f $@ $@.tmp - $(AM_V_at) test -d $(dir $@) || mkdir -p $(dir $@) + $(AM_V_at) mkdir -p $(dir $@) $(AM_V_GEN) srcdir=''; \ test -f ./$@.in || srcdir=$(srcdir)/; \ $(edit_cmd) $${srcdir}$@.in >$@.tmp diff --git a/lib/.gitignore b/lib/.gitignore index 382c06d..a066476 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -6,6 +6,7 @@ /attribute.h /basename-lgpl.c /basename-lgpl.h +/calloc.c /c-ctype.c /c-ctype.h /c++defs.h @@ -49,6 +50,7 @@ /fpurge.c /freading.c /freading.h +/free.c /fseek.c /fseeko.c /fstat.c @@ -71,6 +73,9 @@ /glthread/* /hard-locale.c /hard-locale.h +/ialloc.c +/ialloc.h +/idx.h /inet_pton.c /intprops.h /inttypes.h @@ -127,6 +132,7 @@ /quotearg.c /quotearg.h /quote.h +/reallocarray.c /realloc.c /setenv.c /setlocale-lock.c From 1d20604519ccc1e5c4f2686da49ce1c72b7eb9c2 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 4 Jun 2022 12:40:39 +0100 Subject: [PATCH 38/53] build-sys: routine update Signed-off-by: Sami Kerola --- Makefile.am | 1 - bootstrap | 322 ++++++++++++++++++++++---------------- bootstrap.conf | 6 +- build-aux/git-version-gen | 58 +++---- configure.ac | 2 +- lib/.gitignore | 2 + src/output.c | 4 +- tests/expected/formats | 4 +- 8 files changed, 224 insertions(+), 175 deletions(-) diff --git a/Makefile.am b/Makefile.am index 735e5d9..c135236 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,7 +1,6 @@ ## Makefile.am -- Process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = gnu -ACLOCAL_AMFLAGS = -I m4 EXTRA_DIST = \ .version \ diff --git a/bootstrap b/bootstrap index 3d1bc08..864856a 100755 --- a/bootstrap +++ b/bootstrap @@ -1,10 +1,10 @@ #! /bin/sh # Print a version string. -scriptversion=2019-01-04.17; # UTC +scriptversion=2022-06-04.00; # UTC # Bootstrap this package from checked-out sources. -# Copyright (C) 2003-2020 Free Software Foundation, Inc. +# Copyright (C) 2003-2022 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -47,7 +47,7 @@ PERL="${PERL-perl}" me=$0 -default_gnulib_url=git://git.sv.gnu.org/gnulib +default_gnulib_url=https://git.savannah.gnu.org/git/gnulib.git usage() { cat </dev/null) +if test -z "$package"; then + package=$(sed -n "$extract_package_name" configure.ac) \ + || die 'cannot find package name in configure.ac' +fi gnulib_name=lib$package build_aux=build-aux @@ -229,7 +252,7 @@ excluded_files= # File that should exist in the top directory of a checked out hierarchy, # but not in a distribution tarball. -checkout_only_file=TODO +checkout_only_file=src/dhcpd-pools.c # Whether to use copies instead of symlinks. copy=false @@ -291,62 +314,6 @@ find_tool () eval "export $find_tool_envvar" } -# Override the default configuration, if necessary. -# Make sure that bootstrap.conf is sourced from the current directory -# if we were invoked as "sh bootstrap". -case "$0" in - */*) test -r "$0.conf" && . "$0.conf" ;; - *) test -r "$0.conf" && . ./"$0.conf" ;; -esac - -if test "$vc_ignore" = auto; then - vc_ignore= - test -d .git && vc_ignore=.gitignore - test -d CVS && vc_ignore="$vc_ignore .cvsignore" -fi - -if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then - use_gnulib=false -else - use_gnulib=true -fi - -# Translate configuration into internal form. - -# Parse options. - -for option -do - case $option in - --help) - usage - exit;; - --gnulib-srcdir=*) - GNULIB_SRCDIR=${option#--gnulib-srcdir=};; - --skip-po) - SKIP_PO=t;; - --force) - checkout_only_file=;; - --copy) - copy=true;; - --bootstrap-sync) - bootstrap_sync=true;; - --no-bootstrap-sync) - bootstrap_sync=false;; - --no-git) - use_git=false;; - *) - die "$option: unknown option";; - esac -done - -$use_git || test -d "$GNULIB_SRCDIR" \ - || die "Error: --no-git requires --gnulib-srcdir" - -if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then - die "Bootstrapping from a non-checked-out distribution is risky." -fi - # Strip blank and comment lines to leave significant entries. gitignore_entries() { sed '/^#/d; /^$/d' "$@" @@ -388,9 +355,140 @@ insert_vc_ignore() { insert_if_absent "$vc_ignore_file" "$pattern" } +symlink_to_dir() +{ + src=$1/$2 + dst=${3-$2} + + test -f "$src" && { + + # If the destination directory doesn't exist, create it. + # This is required at least for "lib/uniwidth/cjk.h". + dst_dir=$(dirname "$dst") + if ! test -d "$dst_dir"; then + mkdir -p "$dst_dir" + + # If we've just created a directory like lib/uniwidth, + # tell version control system(s) it's ignorable. + # FIXME: for now, this does only one level + parent=$(dirname "$dst_dir") + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + ig=$parent/$dot_ig + insert_vc_ignore $ig "${dst_dir##*/}" + done + fi + + if $copy; then + { + test ! -h "$dst" || { + echo "$me: rm -f $dst" && + rm -f "$dst" + } + } && + test -f "$dst" && + cmp -s "$src" "$dst" || { + echo "$me: cp -fp $src $dst" && + cp -fp "$src" "$dst" + } + else + # Leave any existing symlink alone, if it already points to the source, + # so that broken build tools that care about symlink times + # aren't confused into doing unnecessary builds. Conversely, if the + # existing symlink's timestamp is older than the source, make it afresh, + # so that broken tools aren't confused into skipping needed builds. See + # . + test -h "$dst" && + src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 && + dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 && + test "$src_i" = "$dst_i" && + both_ls=$(ls -dt "$src" "$dst") && + test "X$both_ls" = "X$dst$nl$src" || { + dot_dots= + case $src in + /*) ;; + *) + case /$dst/ in + *//* | */../* | */./* | /*/*/*/*/*/) + die "invalid symlink calculation: $src -> $dst";; + /*/*/*/*/) dot_dots=../../../;; + /*/*/*/) dot_dots=../../;; + /*/*/) dot_dots=../;; + esac;; + esac + + echo "$me: ln -fs $dot_dots$src $dst" && + ln -fs "$dot_dots$src" "$dst" + } + fi + } +} + +# Override the default configuration, if necessary. +# Make sure that bootstrap.conf is sourced from the current directory +# if we were invoked as "sh bootstrap". +case "$0" in + */*) test -r "$0.conf" && . "$0.conf" ;; + *) test -r "$0.conf" && . ./"$0.conf" ;; +esac + +if test "$vc_ignore" = auto; then + vc_ignore= + test -d .git && vc_ignore=.gitignore + test -d CVS && vc_ignore="$vc_ignore .cvsignore" +fi + +if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then + use_gnulib=false +else + use_gnulib=true +fi + +# Translate configuration into internal form. + +# Parse options. + +for option +do + case $option in + --help) + usage + exit;; + --version) + set -e + echo "bootstrap $scriptversion" + echo "$copyright" + exit 0 + ;; + --gnulib-srcdir=*) + GNULIB_SRCDIR=${option#--gnulib-srcdir=};; + --skip-po) + SKIP_PO=t;; + --force) + checkout_only_file=;; + --copy) + copy=true;; + --bootstrap-sync) + bootstrap_sync=true;; + --no-bootstrap-sync) + bootstrap_sync=false;; + --no-git) + use_git=false;; + *) + bootstrap_option_hook $option || die "$option: unknown option";; + esac +done + +$use_git || test -d "$GNULIB_SRCDIR" \ + || die "Error: --no-git requires --gnulib-srcdir" + +if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then + die "Bootstrapping from a non-checked-out distribution is risky." +fi + # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac. found_aux_dir=no -grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'\])' configure.ac \ +grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'])' configure.ac \ >/dev/null && found_aux_dir=yes grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ >/dev/null && found_aux_dir=yes @@ -666,9 +764,26 @@ if $use_gnulib; then shallow= if test -z "$GNULIB_REVISION"; then git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' + git clone $shallow ${GNULIB_URL:-$default_gnulib_url} "$gnulib_path" \ + || cleanup_gnulib + else + git fetch -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' + mkdir -p "$gnulib_path" + # Only want a shallow checkout of $GNULIB_REVISION, but git does not + # support cloning by commit hash. So attempt a shallow fetch by commit + # hash to minimize the amount of data downloaded and changes needed to + # be processed, which can drastically reduce download and processing + # time for checkout. If the fetch by commit fails, a shallow fetch can + # not be performed because we do not know what the depth of the commit + # is without fetching all commits. So fallback to fetching all commits. + git -C "$gnulib_path" init + git -C "$gnulib_path" remote add origin \ + ${GNULIB_URL:-$default_gnulib_url} + git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \ + || git -C "$gnulib_path" fetch origin \ + || cleanup_gnulib + git -C "$gnulib_path" reset --hard FETCH_HEAD fi - git clone $shallow ${GNULIB_URL:-$default_gnulib_url} "$gnulib_path" \ - || cleanup_gnulib trap - 1 2 13 15 fi @@ -785,75 +900,6 @@ case $SKIP_PO in fi;; esac -symlink_to_dir() -{ - src=$1/$2 - dst=${3-$2} - - test -f "$src" && { - - # If the destination directory doesn't exist, create it. - # This is required at least for "lib/uniwidth/cjk.h". - dst_dir=$(dirname "$dst") - if ! test -d "$dst_dir"; then - mkdir -p "$dst_dir" - - # If we've just created a directory like lib/uniwidth, - # tell version control system(s) it's ignorable. - # FIXME: for now, this does only one level - parent=$(dirname "$dst_dir") - for dot_ig in x $vc_ignore; do - test $dot_ig = x && continue - ig=$parent/$dot_ig - insert_vc_ignore $ig "${dst_dir##*/}" - done - fi - - if $copy; then - { - test ! -h "$dst" || { - echo "$me: rm -f $dst" && - rm -f "$dst" - } - } && - test -f "$dst" && - cmp -s "$src" "$dst" || { - echo "$me: cp -fp $src $dst" && - cp -fp "$src" "$dst" - } - else - # Leave any existing symlink alone, if it already points to the source, - # so that broken build tools that care about symlink times - # aren't confused into doing unnecessary builds. Conversely, if the - # existing symlink's timestamp is older than the source, make it afresh, - # so that broken tools aren't confused into skipping needed builds. See - # . - test -h "$dst" && - src_ls=$(ls -diL "$src" 2>/dev/null) && set $src_ls && src_i=$1 && - dst_ls=$(ls -diL "$dst" 2>/dev/null) && set $dst_ls && dst_i=$1 && - test "$src_i" = "$dst_i" && - both_ls=$(ls -dt "$src" "$dst") && - test "X$both_ls" = "X$dst$nl$src" || { - dot_dots= - case $src in - /*) ;; - *) - case /$dst/ in - *//* | */../* | */./* | /*/*/*/*/*/) - die "invalid symlink calculation: $src -> $dst";; - /*/*/*/*/) dot_dots=../../../;; - /*/*/*/) dot_dots=../../;; - /*/*/) dot_dots=../;; - esac;; - esac - - echo "$me: ln -fs $dot_dots$src $dst" && - ln -fs "$dot_dots$src" "$dst" - } - fi - } -} - version_controlled_file() { parent=$1 file=$2 @@ -971,7 +1017,7 @@ bootstrap_post_import_hook \ # Uninitialized submodules are listed with an initial dash. if $use_git && git submodule | grep '^-' >/dev/null; then die "some git submodules are not initialized. " \ - "Run 'git submodule init' and bootstrap again." + "Run 'git submodule update --init' and bootstrap again." fi # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some @@ -1065,7 +1111,7 @@ bootstrap_epilogue echo "$0: done. Now you can run './configure'." -# Local variables: +# Local Variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" diff --git a/bootstrap.conf b/bootstrap.conf index 321ed00..98d0e1c 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -1,10 +1,10 @@ # Bootstrap configuration. -# Copyright (C) 2006-2020 Free Software Foundation, Inc. +# Copyright (C) 2006-2022 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, @@ -64,7 +64,7 @@ XGETTEXT_OPTIONS=$XGETTEXT_OPTIONS'\\\ gettext_external=0 grep '^[ ]*AM_GNU_GETTEXT(external\>' configure.ac > /dev/null && gettext_external=1 -grep '^[ ]*AM_GNU_GETTEXT(\[external\]' configure.ac > /dev/null && +grep '^[ ]*AM_GNU_GETTEXT(\[external]' configure.ac > /dev/null && gettext_external=1 if test $gettext_external = 1; then diff --git a/build-aux/git-version-gen b/build-aux/git-version-gen index 3468247..a44f5d5 100755 --- a/build-aux/git-version-gen +++ b/build-aux/git-version-gen @@ -1,12 +1,12 @@ #!/bin/sh # Print a version string. -scriptversion=2012-12-31.23; # UTC +scriptversion=2022-01-27.18; # UTC -# Copyright (C) 2007-2013 Free Software Foundation, Inc. +# Copyright (C) 2007-2022 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 3 of the License, or +# the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, @@ -15,9 +15,9 @@ scriptversion=2012-12-31.23; # UTC # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . -# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/. +# This script is derived from GIT-VERSION-GEN from GIT: https://git-scm.com/. # It may be run two ways: # - from a git repository in which the "git describe" command below # produces useful output (thus requiring at least one signed tag) @@ -65,19 +65,21 @@ scriptversion=2012-12-31.23; # UTC # EXTRA_DIST = $(top_srcdir)/.version # BUILT_SOURCES = $(top_srcdir)/.version # $(top_srcdir)/.version: -# echo $(VERSION) > $@-t && mv $@-t $@ +# echo '$(VERSION)' > $@-t +# mv $@-t $@ # dist-hook: -# echo $(VERSION) > $(distdir)/.tarball-version +# echo '$(VERSION)' > $(distdir)/.tarball-version me=$0 +year=`expr "$scriptversion" : '\([^-]*\)'` version="git-version-gen $scriptversion -Copyright 2011 Free Software Foundation, Inc. -There is NO warranty. You may redistribute this software -under the terms of the GNU General Public License. -For more information about these matters, see the files named COPYING." +Copyright (C) ${year} Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later . +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law." usage="\ Usage: $me [OPTION]... \$srcdir/.tarball-version [TAG-NORMALIZATION-SED-SCRIPT] @@ -85,8 +87,9 @@ Print a version string. Options: - --prefix prefix of git tags (default 'v') - --fallback fallback version to use if \"git --version\" fails + --prefix PREFIX prefix of git tags (default 'v') + --fallback VERSION + fallback version to use if \"git --version\" fails --help display this help and exit --version output version information and exit @@ -100,8 +103,8 @@ while test $# -gt 0; do case $1 in --help) echo "$usage"; exit 0;; --version) echo "$version"; exit 0;; - --prefix) shift; prefix="$1";; - --fallback) shift; fallback="$1";; + --prefix) shift; prefix=${1?};; + --fallback) shift; fallback=${1?};; -*) echo "$0: Unknown option '$1'." >&2 echo "$0: Try '--help' for more information." >&2 @@ -140,11 +143,9 @@ then v=`cat $tarball_version_file` || v= case $v in *$nl*) v= ;; # reject multi-line output - [0-9]*) ;; - *) v= ;; esac test "x$v" = x \ - && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2 + && echo "$0: WARNING: $tarball_version_file is damaged" 1>&2 fi if test "x$v" != x @@ -166,9 +167,10 @@ then # tag or the previous older version that did not? # Newer: v6.10-77-g0f8faeb # Older: v6.10-g0f8faeb - case $v in - *-*-*) : git describe is okay three part flavor ;; - *-*) + vprefix=`expr "X$v" : 'X\(.*\)-g[^-]*$'` || vprefix=$v + case $vprefix in + *-*) : git describe is probably okay three part flavor ;; + *) : git describe is older two part flavor # Recreate the number of commits and rewrite such that the # result is the same as if we were using the newer version @@ -183,9 +185,9 @@ then ;; esac - # Change the first '-' to a '.', so version-comparing tools work properly. - # Remove the "g" in git describe's output string, to save a byte. - v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`; + # Change the penultimate "-" to ".", for version-comparing tools. + # Remove the "g" to save a byte. + v=`echo "$v" | sed 's/-\([^-]*\)-g\([^-]*\)$/.\1-\2/'`; v_from_git=1 elif test "x$fallback" = x || git --version >/dev/null 2>&1; then v=UNKNOWN @@ -199,7 +201,7 @@ v=`echo "$v" |sed "s/^$prefix//"` # string we're using came from git. I.e., skip the test if it's "UNKNOWN" # or if it came from .tarball-version. if test "x$v_from_git" != x; then - # Don't declare a version "dirty" merely because a time stamp has changed. + # Don't declare a version "dirty" merely because a timestamp has changed. git update-index --refresh > /dev/null 2>&1 dirty=`exec 2>/dev/null;git diff-index --name-only HEAD` || dirty= @@ -214,12 +216,12 @@ if test "x$v_from_git" != x; then fi # Omit the trailing newline, so that m4_esyscmd can use the result directly. -echo "$v" | tr -d "$nl" +printf %s "$v" # Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" +# time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: diff --git a/configure.ac b/configure.ac index 92ff82c..8e4eba6 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ([2.69]) -AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_MACRO_DIRS([m4]) AC_INIT([dhcpd-pools], [m4_esyscmd([build-aux/git-version-gen .tarball-version])], [kerolasa@iki.fi],[], diff --git a/lib/.gitignore b/lib/.gitignore index a066476..daef416 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -150,6 +150,8 @@ /stdio.h /stdio-impl.h /stdio.in.h +/stdio-read.c +/stdio-write.c /stdlib.h /stdlib.in.h /stpncpy.c diff --git a/src/output.c b/src/output.c index 2d7f28d..4cd0226 100644 --- a/src/output.c +++ b/src/output.c @@ -628,8 +628,8 @@ static void html_header(struct conf_t *state, FILE *restrict f) fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); - fprintf(f, "\n"); - fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); fprintf(f, "\n"); diff --git a/tests/expected/formats b/tests/expected/formats index 9008b93..9948c70 100644 --- a/tests/expected/formats +++ b/tests/expected/formats @@ -23,8 +23,8 @@ All networks 100 43 43.000 0 43 43.000 - - + + From 0c5b8301ddb88b6fbfbd5b556d81e28fd15b7f07 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 4 Jun 2022 12:42:00 +0100 Subject: [PATCH 39/53] release: 3.2 Signed-off-by: Sami Kerola --- NEWS | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/NEWS b/NEWS index 7e9a424..ec50e67 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,18 @@ Please send dhcpd-pools bug reports to kerolasa@iki.fi. gpg: Signature is crated using RSA key ID 8ED396E37E38D471A00530D3A9553245FDE9B739. + +Version 3.2 +Jean Benoit (1): + contrib: snmptest.pl SNMPwalk can't access to all variables/wrong sort + +Sami Kerola (5): + contrib: point out where one can find zabbix template + build-sys: update .gitignore files + config: remove unnecessary padding + build-sys: autotools and gnulib related updates + build-sys: routine update + release: 3.2 Version 3.1 Mark Sangster (1): From 501bc15b43ab398b97c65994cefc33055aa90fb9 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 26 Nov 2022 10:00:53 +0000 Subject: [PATCH 40/53] update project web page Signed-off-by: Sami Kerola --- webpages/dhcpd-pools.awk | 1 - webpages/index.html | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/webpages/dhcpd-pools.awk b/webpages/dhcpd-pools.awk index 38d5f18..ac23431 100644 --- a/webpages/dhcpd-pools.awk +++ b/webpages/dhcpd-pools.awk @@ -9,7 +9,6 @@ # # Sami Kerola # -# Latest version is available from http://www.iki.fi/kerolasa/dhcp/ # This is version 1.4 BEGIN { diff --git a/webpages/index.html b/webpages/index.html index 088c546..446dcf2 100644 --- a/webpages/index.html +++ b/webpages/index.html @@ -80,8 +80,8 @@ try:
  • Start filtering output. Options to try:
    --skip --limit
  • Change --format -option to what you need, and maybe include --perfdata if you want nagios alarm +option to what you need, and maybe include +--perfdata if you want nagios alarm format.
  • Done.
  • @@ -104,11 +104,11 @@ that is maintained by Trond Hasle Amundsen.

    Just for laugh, obsolete awk proof of concept (version 1.4) dhcpd-pools.awk

    Where to send questions, bug reports, code contributions...

    -

    Sami Kerola +

    Sami Kerola <kerolasa@iki.fi>

    -Wed Nov 15 12:47:30 GMT 2017 +Sat Nov 26 09:58:28 GMT 2022 3.0 FreeBSD License From 102d017ed53222600d2a4e6fc376f98dc9f295cb Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 26 Mar 2023 11:12:11 +0100 Subject: [PATCH 41/53] website: use https Signed-off-by: Sami Kerola --- webpages/index.html | 30 +- webpages/robots.txt | 2 +- webpages/sampleoutput.html | 2 +- webpages/sitemap.txt | 1092 ++++++++++++++++++------------------ 4 files changed, 563 insertions(+), 563 deletions(-) diff --git a/webpages/index.html b/webpages/index.html index 446dcf2..839ba82 100644 --- a/webpages/index.html +++ b/webpages/index.html @@ -30,7 +30,7 @@ font-variant: normal; -
    +

    ISC dhcpd lease analysis and reporting

    This is dhcpd-pools ISC dhcp @@ -49,7 +49,7 @@ any significant difference in getting analysis done.

    prompt> ./dhcpd-pools --config=/etc/dhcpd.conf --leases=/var/lib/dhcp/dhcpd.leases --format=H --color=always --warning=40 --critical=50 --output=sampleoutput.html +href="https://dhcpd-pools.sourceforge.net/sampleoutput.html">sampleoutput.html

    Where I can get dhcpd-pools?

    @@ -61,11 +61,11 @@ file.

    git clone git://git.code.sf.net/p/dhcpd-pools/code dhcpd-pools

    See also -SourceForge project page.

    +SourceForge project page.

    Documentation

    The dhcpd-pools -manual page, and -Doxygen software +manual page, and +Doxygen software reference documentation are available online.

    Getting the output you need

      @@ -90,19 +90,19 @@ format.

      The program was written because -DHCPStatus, -DHCP Usage Statistics, -reportdhcp.pl, -lease_analyzer and -dhcpd-snmp +DHCPStatus, +DHCP Usage Statistics, +reportdhcp.pl, +lease_analyzer and +dhcpd-snmp where too slow to handle huge number of leases. There is also difference in printed details. The dhcpd-pools does not print quite as much information as some other tools.

      Notice that this utility is not the same as -dhcpd-pool +dhcpd-pool that is maintained by Trond Hasle Amundsen.

      Just for laugh, obsolete awk proof of concept (version 1.4) -dhcpd-pools.awk

      +dhcpd-pools.awk

      Where to send questions, bug reports, code contributions...

      Sami Kerola <kerolasa@iki.fi>

      @@ -111,12 +111,12 @@ that is maintained by Trond Hasle Amundsen.

      Sat Nov 26 09:58:28 GMT 2022 3.0 FreeBSD License - -
      + +
      0
      -
      +
      5 ( 2 ratings )
      diff --git a/webpages/robots.txt b/webpages/robots.txt index 25e6762..c9eedb4 100644 --- a/webpages/robots.txt +++ b/webpages/robots.txt @@ -1,3 +1,3 @@ -Sitemap: http://dhcpd-pools.sourceforge.net/sitemap.txt +Sitemap: https://dhcpd-pools.sourceforge.net/sitemap.txt User-agent: * Disallow: diff --git a/webpages/sampleoutput.html b/webpages/sampleoutput.html index af4d3d8..521b086 100644 --- a/webpages/sampleoutput.html +++ b/webpages/sampleoutput.html @@ -182,7 +182,7 @@ table.dhcpd-pools th { text-transform: capitalize }
      Generated using dhcpd-pools 3.0
      -More info at http://dhcpd-pools.sourceforge.net/ +More info at https://dhcpd-pools.sourceforge.net/
      diff --git a/webpages/sitemap.txt b/webpages/sitemap.txt index f1f9fb4..28f6306 100644 --- a/webpages/sitemap.txt +++ b/webpages/sitemap.txt @@ -1,546 +1,546 @@ -http://dhcpd-pools.sourceforge.net/ -http://dhcpd-pools.sourceforge.net/dhcpd-pools.awk -http://dhcpd-pools.sourceforge.net/man.html -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/analyze_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/annotated.html -http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/classes.html -http://dhcpd-pools.sourceforge.net/doxygen/close_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/config_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/config_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/configmake_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/dir_000000_000001.html -http://dhcpd-pools.sourceforge.net/doxygen/dir_000001_000002.html -http://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519.html -http://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9.html -http://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/dosname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/doxygen.css -http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/error_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fclose_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fflush_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/filename_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/filename_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/files.html -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/float_09_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/float_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fopen_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/fpending_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/freading_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/freading_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/fseek_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/fstat_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/ftell_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/ftello_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/functions_func.html -http://dhcpd-pools.sourceforge.net/doxygen/functions.html -http://dhcpd-pools.sourceforge.net/doxygen/functions_vars.html -http://dhcpd-pools.sourceforge.net/doxygen/getdata_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/gettext_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_a.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_b.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_a.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_b.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_d.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_e.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_f.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_g.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_h.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_i.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_k.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_l.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_m.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_n.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_o.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_p.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_r.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_s.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_t.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_u.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_v.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_w.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_x.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_defs_y.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_d.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_e.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_enum.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_eval.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_f.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_a.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_b.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_c.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_d.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_e.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_f.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_g.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_h.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_i.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_l.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_m.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_n.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_o.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_p.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_q.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_r.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_s.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_t.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_u.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_func_x.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_g.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_h.html -http://dhcpd-pools.sourceforge.net/doxygen/globals.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_i.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_k.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_l.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_m.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_n.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_o.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_p.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_q.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_r.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_s.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_t.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_type.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_u.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_vars.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_v.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_w.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_x.html -http://dhcpd-pools.sourceforge.net/doxygen/globals_y.html -http://dhcpd-pools.sourceforge.net/doxygen/graph_legend.html -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/hash_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/index.html -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/inet_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/intprops_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/introduction_8dox.html -http://dhcpd-pools.sourceforge.net/doxygen/isnan_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/isnand_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/itold_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/limits_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/limits_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/lseek_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/malloc_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/malloca_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/math_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/math_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/math_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/memchr_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/minmax_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mktime_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/other_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/output_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/progname_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/progname_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/progname_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quote_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/realloc_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.html -http://dhcpd-pools.sourceforge.net/doxygen/search -http://dhcpd-pools.sourceforge.net/doxygen/search/all_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_17.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_18.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/all_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/classes_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_17.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/defines_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enums_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/files_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/functions_f.html -http://dhcpd-pools.sourceforge.net/doxygen/search/nomatches.html -http://dhcpd-pools.sourceforge.net/doxygen/search/search.css -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_0.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_10.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_11.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_12.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_13.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_14.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_15.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_16.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_1.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_2.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_3.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_4.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_5.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_6.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_7.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_8.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_9.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_a.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_b.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_c.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_d.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_e.html -http://dhcpd-pools.sourceforge.net/doxygen/search/variables_f.html -http://dhcpd-pools.sourceforge.net/doxygen/setenv_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/socket_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/sort_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/stat_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stat_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strdup_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/streq_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/streq_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/strerror_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/strftime_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/string_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/string_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strstr_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/strtod_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/structconf__t.html -http://dhcpd-pools.sourceforge.net/doxygen/structexpl.html -http://dhcpd-pools.sourceforge.net/doxygen/struct__getopt__data.html -http://dhcpd-pools.sourceforge.net/doxygen/structiovec.html -http://dhcpd-pools.sourceforge.net/doxygen/structleases__t.html -http://dhcpd-pools.sourceforge.net/doxygen/structmsghdr.html -http://dhcpd-pools.sourceforge.net/doxygen/structmustach__itf.html -http://dhcpd-pools.sourceforge.net/doxygen/structoption.html -http://dhcpd-pools.sourceforge.net/doxygen/structoutput__helper__t.html -http://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort.html -http://dhcpd-pools.sourceforge.net/doxygen/structquoting__options.html -http://dhcpd-pools.sourceforge.net/doxygen/structrange__t.html -http://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t.html -http://dhcpd-pools.sourceforge.net/doxygen/structslotvec.html -http://dhcpd-pools.sourceforge.net/doxygen/structsockaddr__storage.html -http://dhcpd-pools.sourceforge.net/doxygen/structtimespec.html -http://dhcpd-pools.sourceforge.net/doxygen/struct____time__t__must__be__integral.html -http://dhcpd-pools.sourceforge.net/doxygen/structtm__zone.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/tabs.css -http://dhcpd-pools.sourceforge.net/doxygen/time_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/time_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/timegm_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/time__r_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/types_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/types_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/tzset_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/uio_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/unionipaddr__t.html -http://dhcpd-pools.sourceforge.net/doxygen/unionmemory__double.html -http://dhcpd-pools.sourceforge.net/doxygen/unionrpl__max__align__t.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/verify_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h.html -http://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h_source.html -http://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c.html +https://dhcpd-pools.sourceforge.net/ +https://dhcpd-pools.sourceforge.net/dhcpd-pools.awk +https://dhcpd-pools.sourceforge.net/man.html +https://dhcpd-pools.sourceforge.net/doxygen/alloca_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/alloca_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/alloca_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/analyze_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/annotated.html +https://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/arg-nonnull_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/arpa__inet_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/basename-lgpl_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/c_09_09defs_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/c-ctype_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/classes.html +https://dhcpd-pools.sourceforge.net/doxygen/close_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/closeout_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/closeout_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/closeout_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/close-stream_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/close-stream_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/config_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/config_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/configmake_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/configmake_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/c-strcase_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/c-strcasecmp_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/c-strcaseeq_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/c-strncasecmp_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/dhcpd-pools_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/dir_000000_000001.html +https://dhcpd-pools.sourceforge.net/doxygen/dir_000001_000002.html +https://dhcpd-pools.sourceforge.net/doxygen/dir_1dacc5f4fcb865f1d9e042339dad3519.html +https://dhcpd-pools.sourceforge.net/doxygen/dir_97aefd0d527b934f1d99a682da8fe6a9.html +https://dhcpd-pools.sourceforge.net/doxygen/dir_fb441f6c77667ce4c9ebd4a5c47eafac.html +https://dhcpd-pools.sourceforge.net/doxygen/dirname_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/dirname_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/dirname-lgpl_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/dosname_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/dosname_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/doxygen.css +https://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/errno_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/error_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/error_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/error_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/exitfail_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/exitfail_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/fclose_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/fcntl_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/fd-hook_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/fdopen_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/fflush_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/filename_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/filename_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/files.html +https://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/flexmember_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/float_09_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/float_09_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/float_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/float_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/fopen_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/fpending_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/fpending_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/fpending_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/fpurge_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/freading_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/freading_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/freading_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/fseek_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/fseeko_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/fstat_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/ftell_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/ftello_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/functions_func.html +https://dhcpd-pools.sourceforge.net/doxygen/functions.html +https://dhcpd-pools.sourceforge.net/doxygen/functions_vars.html +https://dhcpd-pools.sourceforge.net/doxygen/getdata_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt1_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-cdefs_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-core_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-ext_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt__int_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-core_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getopt-pfx-ext_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/getprogname_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/getprogname_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/gettext_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/gettext_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_a.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_b.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_c.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_a.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_b.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_c.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_d.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_e.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_f.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_g.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_h.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_i.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_k.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_l.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_m.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_n.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_o.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_p.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_r.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_s.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_t.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_u.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_v.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_w.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_x.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_defs_y.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_d.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_e.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_enum.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_eval.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_f.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_a.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_b.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_c.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_d.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_e.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_f.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_g.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_h.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_i.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_l.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_m.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_n.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_o.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_p.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_q.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_r.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_s.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_t.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_u.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_func_x.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_g.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_h.html +https://dhcpd-pools.sourceforge.net/doxygen/globals.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_i.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_k.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_l.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_m.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_n.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_o.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_p.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_q.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_r.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_s.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_t.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_type.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_u.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_vars.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_v.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_w.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_x.html +https://dhcpd-pools.sourceforge.net/doxygen/globals_y.html +https://dhcpd-pools.sourceforge.net/doxygen/graph_legend.html +https://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/hard-locale_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/hash_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/index.html +https://dhcpd-pools.sourceforge.net/doxygen/inet_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/inet_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/inet__pton_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/intprops_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/intprops_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/introduction_8dox.html +https://dhcpd-pools.sourceforge.net/doxygen/isnan_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/isnand_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/isnanf_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/isnanl_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/itold_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/limits_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/limits_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/limits_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/localcharset_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/localcharset_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/localtime-buffer_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/lseek_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/malloc_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/malloca_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/malloca_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/malloca_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/math_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/math_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/math_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/math_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/mbrtowc_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/mbsinit_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/memchr_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/minmax_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/minmax_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/mktime_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/mktime-internal_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/msvc-inval_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/msvc-nothrow_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/mustach_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/mustach_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/mustach_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/mustach-dhcpd-pools_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/netinet__in_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/__Noreturn_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/nstrftime_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/other_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/output_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/pathmax_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/progname_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/progname_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/progname_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/quote_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/quote_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/quotearg_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/quotearg_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/realloc_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/sampleoutput.html +https://dhcpd-pools.sourceforge.net/doxygen/search +https://dhcpd-pools.sourceforge.net/doxygen/search/all_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_10.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_11.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_12.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_13.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_14.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_15.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_16.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_17.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_18.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_9.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_a.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_b.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_c.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_d.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_e.html +https://dhcpd-pools.sourceforge.net/doxygen/search/all_f.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_9.html +https://dhcpd-pools.sourceforge.net/doxygen/search/classes_a.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_10.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_11.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_12.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_13.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_14.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_15.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_16.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_17.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_9.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_a.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_b.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_c.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_d.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_e.html +https://dhcpd-pools.sourceforge.net/doxygen/search/defines_f.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enums_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enums_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enums_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enums_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enums_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enums_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enums_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_9.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_a.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_b.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_c.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_d.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_e.html +https://dhcpd-pools.sourceforge.net/doxygen/search/enumvalues_f.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_10.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_11.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_12.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_13.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_14.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_15.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_16.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_9.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_a.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_b.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_c.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_d.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_e.html +https://dhcpd-pools.sourceforge.net/doxygen/search/files_f.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_10.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_11.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_12.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_13.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_14.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_9.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_a.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_b.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_c.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_d.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_e.html +https://dhcpd-pools.sourceforge.net/doxygen/search/functions_f.html +https://dhcpd-pools.sourceforge.net/doxygen/search/nomatches.html +https://dhcpd-pools.sourceforge.net/doxygen/search/search.css +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/typedefs_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_0.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_10.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_11.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_12.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_13.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_14.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_15.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_16.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_1.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_2.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_3.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_4.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_5.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_6.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_7.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_8.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_9.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_a.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_b.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_c.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_d.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_e.html +https://dhcpd-pools.sourceforge.net/doxygen/search/variables_f.html +https://dhcpd-pools.sourceforge.net/doxygen/setenv_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/socket_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/socket_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/sort_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/stat_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/stat_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stat_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stat-w32_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdalign_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdbool_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stddef_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdint_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdio_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdio_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdio_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdio-impl_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/stdlib_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stpncpy_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/strdup_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/streq_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/streq_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/strerror_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/strerror-override_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/strftime_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/strftime_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/string_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/string_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/string_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/stripslash_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/strstr_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/strtod_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/str-two-way_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/structconf__t.html +https://dhcpd-pools.sourceforge.net/doxygen/structexpl.html +https://dhcpd-pools.sourceforge.net/doxygen/struct__getopt__data.html +https://dhcpd-pools.sourceforge.net/doxygen/structiovec.html +https://dhcpd-pools.sourceforge.net/doxygen/structleases__t.html +https://dhcpd-pools.sourceforge.net/doxygen/structmsghdr.html +https://dhcpd-pools.sourceforge.net/doxygen/structmustach__itf.html +https://dhcpd-pools.sourceforge.net/doxygen/structoption.html +https://dhcpd-pools.sourceforge.net/doxygen/structoutput__helper__t.html +https://dhcpd-pools.sourceforge.net/doxygen/structoutput__sort.html +https://dhcpd-pools.sourceforge.net/doxygen/structquoting__options.html +https://dhcpd-pools.sourceforge.net/doxygen/structrange__t.html +https://dhcpd-pools.sourceforge.net/doxygen/structshared__network__t.html +https://dhcpd-pools.sourceforge.net/doxygen/structslotvec.html +https://dhcpd-pools.sourceforge.net/doxygen/structsockaddr__storage.html +https://dhcpd-pools.sourceforge.net/doxygen/structtimespec.html +https://dhcpd-pools.sourceforge.net/doxygen/struct____time__t__must__be__integral.html +https://dhcpd-pools.sourceforge.net/doxygen/structtm__zone.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__socket_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__stat_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__types_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/sys__uio_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/tabs.css +https://dhcpd-pools.sourceforge.net/doxygen/time_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/time_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/time_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/timegm_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/time-internal_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/time__r_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/time__rz_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/types_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/types_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/tzset_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/uio_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/uio_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/unionipaddr__t.html +https://dhcpd-pools.sourceforge.net/doxygen/unionmemory__double.html +https://dhcpd-pools.sourceforge.net/doxygen/unionrpl__max__align__t.html +https://dhcpd-pools.sourceforge.net/doxygen/unistd_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/unistd_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/unistd_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/unistd_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/unsetenv_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/unused-parameter_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/verify_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/verify_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/warn-on-use_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/wchar_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/wchar_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/wchar_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/wctype_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/wctype_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/wctype_8in_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/wctype-h_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/xalloc_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/xalloc-die_8c.html +https://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h.html +https://dhcpd-pools.sourceforge.net/doxygen/xalloc-oversized_8h_source.html +https://dhcpd-pools.sourceforge.net/doxygen/xmalloc_8c.html From 3d37ac0a2dc93d102613736b56620cbccf89cfea Mon Sep 17 00:00:00 2001 From: Belkacem Daheb Date: Wed, 26 Jul 2023 09:20:32 +0100 Subject: [PATCH 42/53] add start, end and hostname printing support for xml and json In short it gets these parameters and prints them in json and xml formats. Signed-off-by: Sami Kerola --- THANKS | 1 + src/dhcpd-pools.h | 6 ++++++ src/getdata.c | 31 +++++++++++++++++++++++++++++-- src/hash.c | 15 +++++++++++++++ src/other.c | 12 ++++++++++++ src/output.c | 26 +++++++++++++++++++++++++- tests/expected/same-twice-json | 2 +- tests/expected/same-twice-xml | 3 +++ 8 files changed, 92 insertions(+), 4 deletions(-) diff --git a/THANKS b/THANKS index 4bb123d..8fe47e0 100644 --- a/THANKS +++ b/THANKS @@ -49,3 +49,4 @@ Mark Sangster Brent Swingle Mathieu Morier Jean Benoit +Belkacem Daheb diff --git a/src/dhcpd-pools.h b/src/dhcpd-pools.h index 0f93b80..aff6b6a 100644 --- a/src/dhcpd-pools.h +++ b/src/dhcpd-pools.h @@ -102,6 +102,9 @@ enum prefix_t { PREFIX_BINDING_STATE_ACTIVE, PREFIX_BINDING_STATE_BACKUP, PREFIX_HARDWARE_ETHERNET, + PREFIX_STARTS, + PREFIX_ENDS, + PREFIX_HOSTNAME, NUM_OF_PREFIX }; @@ -180,6 +183,9 @@ struct leases_t { char *ethernet; UT_hash_handle hh; enum ltype type; + char *ends; + char *starts; + char *hostname; }; /*! \enum limbits diff --git a/src/getdata.c b/src/getdata.c index 7863a6b..966fe5d 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -83,7 +83,7 @@ enum isc_conf_parser { int parse_leases(struct conf_t *state) { FILE *dhcpd_leases; - char *line, *ipstring, macstring[20], *stop; + char *line, *ipstring, macstring[20], *stop, endsstr[30], startsstr[30], hostnamestr[MAXLEN]; union ipaddr_t addr; struct leases_t *lease; @@ -100,6 +100,9 @@ int parse_leases(struct conf_t *state) line[0] = '\0'; ipstring = xmalloc(sizeof(char) * MAXLEN); ipstring[0] = '\0'; + endsstr[0] = '\0'; + startsstr[0] = '\0'; + hostnamestr[0] = '\0'; while (!feof(dhcpd_leases)) { if (!fgets(line, MAXLEN, dhcpd_leases) && ferror(dhcpd_leases)) error(EXIT_FAILURE, errno, "parse_leases: %s", state->dhcpdlease_file); @@ -142,8 +145,32 @@ int parse_leases(struct conf_t *state) break; memcpy(macstring, line + 20, 17); macstring[17] = '\0'; - if ((lease = find_lease(state, &addr)) != NULL) + if ((lease = find_lease(state, &addr)) != NULL) { lease->ethernet = xstrdup(macstring); + lease->starts = xstrdup(startsstr); + lease->ends = xstrdup(endsstr); + } + break; + case PREFIX_ENDS: + if (state->print_mac_addreses == 0) + break; + strncpy(endsstr, line + 7, sizeof(endsstr)-1); + endsstr[strlen(endsstr)-2] = '\0'; + break; + case PREFIX_STARTS: + if (state->print_mac_addreses == 0) + break; + strncpy(startsstr, line + 9, sizeof(startsstr)-1); + startsstr[strlen(startsstr)-2] = '\0'; + break; + case PREFIX_HOSTNAME: + if (state->print_mac_addreses == 0) + break; + strncpy(hostnamestr, line + 19, sizeof(hostnamestr)-1); + hostnamestr[strlen(hostnamestr)-3] = '\0'; + if ((lease = find_lease(state, &addr)) != NULL) { + lease->hostname = xstrdup(hostnamestr); + } break; default: /* do nothing */ ; diff --git a/src/hash.c b/src/hash.c index 77ecd79..eb434df 100644 --- a/src/hash.c +++ b/src/hash.c @@ -66,6 +66,9 @@ void add_lease_v4(struct conf_t *state, union ipaddr_t *addr, enum ltype type) l->type = type; HASH_ADD_INT(state->leases, ip.v4, l); l->ethernet = NULL; + l->ends = NULL; + l->starts = NULL; + l->hostname = NULL; } void add_lease_v6(struct conf_t *state, union ipaddr_t *addr, enum ltype type) @@ -77,6 +80,9 @@ void add_lease_v6(struct conf_t *state, union ipaddr_t *addr, enum ltype type) l->type = type; HASH_ADD_V6(state->leases, ip.v6, l); l->ethernet = NULL; + l->ends = NULL; + l->starts = NULL; + l->hostname = NULL; } /*! \brief Find pointer to lease from hash array. @@ -110,6 +116,9 @@ struct leases_t *find_lease_v6(struct conf_t *state, union ipaddr_t *addr) void delete_lease(struct conf_t *state, struct leases_t *lease) { free(lease->ethernet); + free(lease->ends); + free(lease->starts); + free(lease->hostname); HASH_DEL(state->leases, lease); free(lease); } @@ -122,6 +131,9 @@ void delete_all_leases(struct conf_t *state) HASH_ITER(hh, state->leases, l, tmp) { free(l->ethernet); + free(l->ends); + free(l->starts); + free(l->hostname); HASH_DEL(state->leases, l); free(l); } @@ -134,6 +146,9 @@ void delete_all_leases(struct conf_t *state) l = state->leases; free(l->ethernet); + free(l->ends); + free(l->starts); + free(l->hostname); HASH_DEL(state->leases, l); /* leases advances to next on delete */ free(l); } diff --git a/src/other.c b/src/other.c index 21a19f4..b319a2d 100644 --- a/src/other.c +++ b/src/other.c @@ -417,6 +417,12 @@ int } if (!memcmp("lease ", str, 6)) return PREFIX_LEASE; + else if (!memcmp(" starts ", str, 9)) + return PREFIX_STARTS; + else if (!memcmp(" ends ", str, 7)) + return PREFIX_ENDS; + else if (!memcmp(" client-hostname ", str, 18)) + return PREFIX_HOSTNAME; return NUM_OF_PREFIX; } @@ -472,6 +478,12 @@ int } if (!memcmp(" iaaddr ", str, 9)) return PREFIX_LEASE; + else if (!memcmp(" starts ", str, 9)) + return PREFIX_STARTS; + else if (!memcmp(" ends ", str, 7)) + return PREFIX_ENDS; + else if (!memcmp(" client-hostname ", str, 18)) + return PREFIX_HOSTNAME; return NUM_OF_PREFIX; } diff --git a/src/output.c b/src/output.c index 4cd0226..17745d4 100644 --- a/src/output.c +++ b/src/output.c @@ -387,7 +387,19 @@ static int output_xml(struct conf_t *state) if (l->ethernet != NULL) { fputs(l->ethernet, outfile); } - fputs("\n\n", outfile); + fputs("\n\t", outfile); + if (l->starts != NULL) { + fputs(l->starts, outfile); + } + fputs("\n\t", outfile); + if (l->ends != NULL) { + fputs(l->ends, outfile); + } + fputs("\n\t", outfile); + if (l->hostname != NULL) { + fputs(l->hostname, outfile); + } + fputs("\n\n", outfile); } } } @@ -481,6 +493,18 @@ static int output_json(struct conf_t *state) if (l->ethernet != NULL) { fputs(l->ethernet, outfile); } + fputs("\", \"starts\":\"", outfile); + if (l->starts != NULL) { + fputs(l->starts, outfile); + } + fputs("\", \"ends\":\"", outfile); + if (l->ends != NULL) { + fputs(l->ends, outfile); + } + fputs("\", \"hostname\":\"", outfile); + if (l->hostname != NULL) { + fputs(l->hostname, outfile); + } fputs("\" }", outfile); } } diff --git a/tests/expected/same-twice-json b/tests/expected/same-twice-json index f572972..f23d1b0 100644 --- a/tests/expected/same-twice-json +++ b/tests/expected/same-twice-json @@ -1,6 +1,6 @@ { "active_leases": [ - { "ip":"10.0.0.5", "macaddress":"00:00:00:00:00:00" } + { "ip":"10.0.0.5", "macaddress":"00:00:00:00:00:00", "starts":"", "ends":"", "hostname":"" } ], "subnets": [ { "location":"All networks", "range":"10.0.0.1 - 10.0.0.10", "first_ip":"10.0.0.1", "last_ip":"10.0.0.10", "defined":10, "used":1, "touched":0, "free":9, "percent":10, "touch_count":1, "touch_percent":10, "status":0 } diff --git a/tests/expected/same-twice-xml b/tests/expected/same-twice-xml index 93612d6..7897f7f 100644 --- a/tests/expected/same-twice-xml +++ b/tests/expected/same-twice-xml @@ -2,6 +2,9 @@ 10.0.0.5 00:00:00:00:00:00 + + + All networks From dc1f0b9b7625a4b50f8ae8c3fddbefe999c6ad64 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sat, 2 Sep 2023 11:45:27 +0100 Subject: [PATCH 43/53] chore: update web links Signed-off-by: Sami Kerola --- README | 4 ++-- configure.ac | 2 +- contrib/PKGBUILD | 2 +- project.doap | 4 ++-- src/mustach.c | 2 +- src/mustach.h | 2 +- tests/expected/formats | 2 +- webpages/dhcpd-pools.awk | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/README b/README index 6a9ae41..5953fba 100644 --- a/README +++ b/README @@ -28,7 +28,7 @@ Quick start. Dependencies to other projects. - http://www.gnu.org/software/gnulib/ + https://www.gnu.org/software/gnulib/ You can avoid repeated gnulib downloads by setting GNULIB_SRCDIR environment variable. For example: @@ -39,7 +39,7 @@ Dependencies to other projects. Assumign detached gnulib please remember to git pull the latest updates before building dhcpd-pools. - http://uthash.sourceforge.net/ + https://troydhanson.github.io/uthash/ See quick start. diff --git a/configure.ac b/configure.ac index 8e4eba6..818bee9 100644 --- a/configure.ac +++ b/configure.ac @@ -6,7 +6,7 @@ AC_CONFIG_MACRO_DIRS([m4]) AC_INIT([dhcpd-pools], [m4_esyscmd([build-aux/git-version-gen .tarball-version])], [kerolasa@iki.fi],[], - [http://dhcpd-pools.sourceforge.net/]) + [https://dhcpd-pools.sourceforge.net/]) PACKAGE_MAINTAINER="Sami Kerola" AC_SUBST([PACKAGE_MAINTAINER]) AC_CONFIG_AUX_DIR([build-aux]) diff --git a/contrib/PKGBUILD b/contrib/PKGBUILD index 6fbb5cf..08770a4 100644 --- a/contrib/PKGBUILD +++ b/contrib/PKGBUILD @@ -7,7 +7,7 @@ pkgver=0 pkgrel=1 pkgdesc="ISC dhcpd lease status utility" arch=('i686' 'x86_64') -url=http://dhcpd-pools.sourceforge.net/ +url=https://dhcpd-pools.sourceforge.net/ license=('BSD') depends=('pacman') makedepends=('uthash' 'git') diff --git a/project.doap b/project.doap index e3cf0f6..b9f0a8a 100644 --- a/project.doap +++ b/project.doap @@ -3,9 +3,9 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:foaf="http://xmlns.com/foaf/0.1/"> - + dhcpd-pools - + This is dhcpd-pools ISC dhcp shared network and pool range usage analysis tool. Purpose of command is to count usage ratio of each diff --git a/src/mustach.c b/src/mustach.c index 45eb7a4..2af9672 100644 --- a/src/mustach.c +++ b/src/mustach.c @@ -8,7 +8,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/src/mustach.h b/src/mustach.h index 32288a1..0ceba16 100644 --- a/src/mustach.h +++ b/src/mustach.h @@ -8,7 +8,7 @@ you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/tests/expected/formats b/tests/expected/formats index 9948c70..c619ccb 100644 --- a/tests/expected/formats +++ b/tests/expected/formats @@ -176,7 +176,7 @@ table.dhcpd-pools th { text-transform: capitalize }
      diff --git a/webpages/dhcpd-pools.awk b/webpages/dhcpd-pools.awk index ac23431..9c1f299 100644 --- a/webpages/dhcpd-pools.awk +++ b/webpages/dhcpd-pools.awk @@ -4,8 +4,8 @@ # analysis algorithm is sane. This script is no longer # maintained, and can be considered as historic reference. # -# Licensed under the Open Software License version 1.1 -# http://opensource.org/licenses/osl.php +# Licensed under the Open Software License version 1.0 +# https://opensource.org/license/osl-1-0/ # # Sami Kerola # From d94654e1007524604e8b7d36c91083dccc175495 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Sun, 28 Jan 2024 16:04:29 +0000 Subject: [PATCH 44/53] getdata: only emit warning when config include file cannot be read MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not being able to open primary config file will cause fatal error, where as include files will only warn. This is useful for setups that want to publish some of the dhcp lease data, but not all. Such setup obviously required dhcpd server to have differnt account than dhcpd-pools, with carefully managed read permissions. Requested-by: Björn Lässig Signed-off-by: Sami Kerola --- THANKS | 1 + src/getdata.c | 8 +++++++- tests/expected/errors | 11 ++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/THANKS b/THANKS index 8fe47e0..2639556 100644 --- a/THANKS +++ b/THANKS @@ -50,3 +50,4 @@ Brent Swingle Mathieu Morier Jean Benoit Belkacem Daheb +Björn Lässig diff --git a/src/getdata.c b/src/getdata.c index 966fe5d..ff05804 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -238,8 +238,14 @@ void parse_config(struct conf_t *state, const int is_include, const char *restri shared_p->name = state->shared_net_root->name; /* Open configuration file */ dhcpd_config = fopen(config_file, "r"); - if (dhcpd_config == NULL) + if (dhcpd_config == NULL) { + if (is_include) { + error(0, errno, "cannot open inlude: %s", config_file); + return; + } + /* config if from command line, just exit with error */ error(EXIT_FAILURE, errno, "parse_config: %s", config_file); + } #ifdef HAVE_POSIX_FADVISE # ifdef POSIX_FADV_SEQUENTIAL if (posix_fadvise(fileno(dhcpd_config), 0, 0, POSIX_FADV_SEQUENTIAL) != 0) diff --git a/tests/expected/errors b/tests/expected/errors index b85e282..6903ac6 100644 --- a/tests/expected/errors +++ b/tests/expected/errors @@ -7,7 +7,16 @@ dhcpd-pools: unknown color mode: 'sometimes' === IPv5 dhcpd-pools: unknown --ip-version argument: 5 === missing conf -dhcpd-pools: parse_config: ./tests/confs/complete_NXFILE: No such file or directory +dhcpd-pools: cannot open inlude: ./tests/confs/complete_NXFILE: No such file or directory +Ranges: +shared net name first ip last ip max cur percent touch t+c t+c perc + +Shared networks: +name max cur percent touch t+c t+c perc + +Sum of all ranges: +name max cur percent touch t+c t+c perc +All networks 0 0 nan 0 0 nan === missing leases dhcpd-pools: parse_leases: ./tests/leases/complete_NXFILE: No such file or directory === html table From 9c6336e5b6307eb5237b3be05e61ace29dfc81d8 Mon Sep 17 00:00:00 2001 From: "M. van Brummelen" Date: Fri, 9 Aug 2024 10:57:58 +0100 Subject: [PATCH 45/53] docs: fix manual page groff warning The only thing the change does is the way the manpage gets parsed, and fixes follwing warning. "W: dhcpd-pools: groff-message an.tmac::147: warning: tbl preprocessor failed, or it or soelim was not run; table(s) likely not rendered (TE macro called with TW register undefined) [usr/share/man/man1/dhcpd-pools.1.gz:1]" Reference: https://www.mail-archive.com/debian-devel@lists.debian.org/msg377263.html Signed-off-by: M. van Brummelen Reviewed-by: Sami Kerola --- man/dhcpd-pools.1.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/man/dhcpd-pools.1.in b/man/dhcpd-pools.1.in index 2179163..5001e24 100644 --- a/man/dhcpd-pools.1.in +++ b/man/dhcpd-pools.1.in @@ -1,4 +1,5 @@ -.TH DHCPD-POOLS "1" "2017-11-15" "@VERSION@" "User Commands" +'\" t +.TH DHCPD-POOLS "1" "2024-08-09" "@VERSION@" "User Commands" .SH NAME dhcpd-pools \- ISC dhcpd pools usage analysis .SH SYNOPSIS From 5ed6e7688f858ee19094b55f98d3cdeca3eadd74 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Fri, 9 Aug 2024 11:25:31 +0100 Subject: [PATCH 46/53] gnulib: update bootstrap and gitignore files And it turns out mustach.c will not compile without config.h being explicitly included before other headers, so let me do that. Signed-off-by: Sami Kerola --- bootstrap | 1935 ++++++++++++++++++++++++++++++------------------ bootstrap.conf | 4 +- lib/.gitignore | 60 +- src/mustach.c | 2 + 4 files changed, 1223 insertions(+), 778 deletions(-) diff --git a/bootstrap b/bootstrap index 864856a..2e3f036 100755 --- a/bootstrap +++ b/bootstrap @@ -1,34 +1,67 @@ #! /bin/sh -# Print a version string. -scriptversion=2022-06-04.00; # UTC +# DO NOT EDIT! GENERATED AUTOMATICALLY! # Bootstrap this package from checked-out sources. -# Copyright (C) 2003-2022 Free Software Foundation, Inc. +scriptversion=2024-07-04.10; # UTC +# Copyright (C) 2003-2024 Free Software Foundation, Inc. +# # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. - +# # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. - +# # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Originally written by Paul Eggert. The canonical version of this -# script is maintained as build-aux/bootstrap in gnulib, however, to -# be useful to your project, you should place a copy of it under -# version control in the top-level directory of your project. The +# script is maintained as top/bootstrap in gnulib. However, to be +# useful to your package, you should place a copy of it under version +# control in the top-level directory of your package. The intent is +# that all customization can be done with a bootstrap.conf file also +# maintained in your version control; gnulib comes with a template +# build-aux/bootstrap.conf to get you started. + +# Please report bugs or propose patches to bug-gnulib@gnu.org. + +me="$0" +medir=`dirname "$me"` + +# Read the function library and the configuration. + +# A library of shell functions for autopull.sh, autogen.sh, and bootstrap. + +scriptlibversion=2024-07-21.12; # UTC + +# Copyright (C) 2003-2024 Free Software Foundation, Inc. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Originally written by Paul Eggert. The canonical version of this +# script is maintained as top/bootstrap-funclib.sh in gnulib. However, +# to be useful to your package, you should place a copy of it under +# version control in the top-level directory of your package. The # intent is that all customization can be done with a bootstrap.conf # file also maintained in your version control; gnulib comes with a # template build-aux/bootstrap.conf to get you started. -# Please report bugs or propose patches to bug-gnulib@gnu.org. - nl=' ' @@ -36,86 +69,13 @@ nl=' LC_ALL=C export LC_ALL -# Ensure that CDPATH is not set. Otherwise, the output from cd -# would cause trouble in at least one use below. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -local_gl_dir=gl - # Honor $PERL, but work even if there is none. PERL="${PERL-perl}" -me=$0 - default_gnulib_url=https://git.savannah.gnu.org/git/gnulib.git -usage() { - cat </dev/null; then # numeric comparison + echo "$2 $1" + elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison + echo "$1 $2" + else # numeric, then lexicographic comparison + lp=$(printf "%s\n%s\n" "$p1" "$p2" | LANG=C sort -n | tail -n1) + if [ "$lp" = "$p2" ]; then + echo "$1 $2" + else + echo "$2 $1" + fi + fi + break + fi + i=$(($i+1)) + done +} + +get_version_sed=' +# Move version to start of line. +s/.*[v ]\([0-9]\)/\1/ + +# Skip lines that do not start with version. +/^[0-9]/!d + +# Remove characters after the version. +s/[^.a-z0-9-].*// + +# The first component must be digits only. +s/^\([0-9]*\)[a-z-].*/\1/ + +#the following essentially does s/5.005/5.5/ +s/\.0*\([1-9]\)/.\1/g +p +q' + +get_version() { + app=$1 + + $app --version >/dev/null 2>&1 || { $app --version; return 1; } + + $app --version 2>&1 | sed -n "$get_version_sed" +} + +check_versions() { + ret=0 + + while read app req_ver; do + # We only need libtoolize from the libtool package. + if test "$app" = libtool; then + app=libtoolize + fi + # Exempt git if git is not needed. + if test "$app" = git; then + $check_git || continue + fi + # Honor $APP variables ($TAR, $AUTOCONF, etc.) + appvar=$(echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_') + test "$appvar" = TAR && appvar=AMTAR + case $appvar in + GZIP) ;; # Do not use $GZIP: it contains gzip options. + PERL::*) ;; # Keep perl modules as-is + *) eval "app=\${$appvar-$app}" ;; + esac + + # Handle the still-experimental Automake-NG programs specially. + # They remain named as the mainstream Automake programs ("automake", + # and "aclocal") to avoid gratuitous incompatibilities with + # preexisting usages (by, say, autoreconf, or custom autogen.sh + # scripts), but correctly identify themselves (as being part of + # "GNU automake-ng") when asked their version. + case $app in + automake-ng|aclocal-ng) + app=${app%-ng} + ($app --version | grep '(GNU automake-ng)') >/dev/null 2>&1 || { + warn_ "Error: '$app' not found or not from Automake-NG" + ret=1 + continue + } ;; + # Another check is for perl modules. These can be written as + # e.g. perl::XML::XPath in case of XML::XPath module, etc. + perl::*) + # Extract module name + app="${app#perl::}" + if ! $PERL -m"$app" -e 'exit 0' >/dev/null 2>&1; then + warn_ "Error: perl module '$app' not found" + ret=1 + fi + continue + ;; + esac + if [ "$req_ver" = "-" ]; then + # Merely require app to exist; not all prereq apps are well-behaved + # so we have to rely on $? rather than get_version. + if ! check_exists --verbose $app; then + warn_ "Error: '$app' not found" + ret=1 + fi + else + # Require app to produce a new enough version string. + inst_ver=$(get_version $app) + if [ ! "$inst_ver" ]; then + warn_ "Error: '$app' not found" + ret=1 + else + latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2) + if [ ! "$latest_ver" = "$inst_ver" ]; then + warnf_ '%s\n' \ + "Error: '$app' version == $inst_ver is too old" \ + " '$app' version >= $req_ver is required" + ret=1 + fi + fi + fi + done + + return $ret +} + +print_versions() { + echo "Program Min_version" + echo "----------------------" + printf %s "$buildreq" + echo "----------------------" + # can't depend on column -t +} + +# check_build_prerequisites check_git +check_build_prerequisites() +{ + check_git="$1" + + # gnulib-tool requires at least automake and autoconf. + # If either is not listed, add it (with minimum version) as a prerequisite. + case $buildreq in + *automake*) ;; + *) buildreq="automake 1.9 +$buildreq" ;; + esac + case $buildreq in + *autoconf*) ;; + *) buildreq="autoconf 2.59 +$buildreq" ;; + esac + + # When we can deduce that gnulib-tool will require patch, + # and when patch is not already listed as a prerequisite, add it, too. + if test -d "$local_gl_dir" \ + && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then + case $buildreq in + *patch*) ;; + *) buildreq="patch - +$buildreq" ;; + esac + fi + + if ! printf '%s' "$buildreq" | check_versions; then + echo >&2 + if test -f README-prereq; then + die "See README-prereq for how to get the prerequisite programs" + else + die "Please install the prerequisite programs" + fi + fi + + # Warn the user if autom4te appears to be broken; this causes known + # issues with at least gettext 0.18.3. + probe=$(echo 'm4_quote([hi])' | autom4te -l M4sugar -t 'm4_quote:$%' -) + if test "x$probe" != xhi; then + warn_ "WARNING: your autom4te wrapper eats stdin;" + warn_ "if bootstrap fails, consider upgrading your autotools" + fi +} + # find_tool ENVVAR NAMES... # ------------------------- # Search for a required program. Use the value of ENVVAR, if set, @@ -314,6 +476,489 @@ find_tool () eval "export $find_tool_envvar" } +# --------------------- Preparing GNULIB_SRCDIR for use. --------------------- +# This is part of autopull.sh, but bootstrap needs it too, for self-upgrading. + +# cleanup_gnulib fails, removing the directory $gnulib_path first. +cleanup_gnulib() { + status=$? + rm -fr "$gnulib_path" + exit $status +} + +git_modules_config () { + test -f .gitmodules && git config --file .gitmodules "$@" +} + +prepare_GNULIB_SRCDIR () +{ + if test -n "$GNULIB_SRCDIR"; then + # Use GNULIB_SRCDIR directly. + # We already checked that $GNULIB_SRCDIR references a directory. + # Verify that it contains a gnulib checkout. + test -f "$GNULIB_SRCDIR/gnulib-tool" \ + || die "Error: --gnulib-srcdir or \$GNULIB_SRCDIR is specified," \ + "but does not contain gnulib-tool" + if test -n "$GNULIB_REVISION" && $use_git; then + # The 'git checkout "$GNULIB_REVISION"' command succeeds if the + # GNULIB_REVISION is a commit hash that exists locally, or if it is + # branch name that can be fetched from origin. It fails, however, + # if the GNULIB_REVISION is a commit hash that only exists in + # origin. In this case, we need a 'git fetch' and then retry + # 'git checkout "$GNULIB_REVISION"'. + (cd "$GNULIB_SRCDIR" \ + && { git checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git fetch origin && git checkout "$GNULIB_REVISION"; } + } + ) || exit $? + fi + else + if ! $use_git; then + die "Error: --no-git is specified," \ + "but neither --gnulib-srcdir nor \$GNULIB_SRCDIR is specified" + fi + if git submodule -h | grep -- --reference > /dev/null; then + : + else + die "git version is too old, git >= 1.6.4 is required" + fi + gnulib_path=$(git_modules_config submodule.gnulib.path) + if test -n "$gnulib_path"; then + # A submodule 'gnulib' is configured. + # Get gnulib files. Populate $gnulib_path, updating the submodule. + if test -n "$GNULIB_REFDIR" && test -d "$GNULIB_REFDIR"/.git; then + # Use GNULIB_REFDIR as a reference. + echo "$0: getting gnulib files..." + git submodule update --init --reference "$GNULIB_REFDIR" "$gnulib_path"\ + || exit $? + else + # GNULIB_REFDIR is not set or not usable. Ignore it. + if git_modules_config submodule.gnulib.url >/dev/null; then + echo "$0: getting gnulib files..." + git submodule init -- "$gnulib_path" || exit $? + git submodule update -- "$gnulib_path" || exit $? + else + die "Error: submodule 'gnulib' has no configured url" + fi + fi + else + gnulib_path='gnulib' + if test ! -d "$gnulib_path"; then + # The subdirectory 'gnulib' does not yet exist. Clone into it. + echo "$0: getting gnulib files..." + trap cleanup_gnulib HUP INT PIPE TERM + gnulib_url=${GNULIB_URL:-$default_gnulib_url} + shallow= + if test -z "$GNULIB_REVISION"; then + if git clone -h 2>&1 | grep -- --depth > /dev/null; then + shallow='--depth 2' + fi + git clone $shallow "$gnulib_url" "$gnulib_path" \ + || cleanup_gnulib + else + if git fetch -h 2>&1 | grep -- --depth > /dev/null; then + shallow='--depth 2' + fi + mkdir -p "$gnulib_path" + # Only want a shallow checkout of $GNULIB_REVISION, but git does not + # support cloning by commit hash. So attempt a shallow fetch by commit + # hash to minimize the amount of data downloaded and changes needed to + # be processed, which can drastically reduce download and processing + # time for checkout. If the fetch by commit fails, a shallow fetch can + # not be performed because we do not know what the depth of the commit + # is without fetching all commits. So fall back to fetching all + # commits. + git -C "$gnulib_path" init + git -C "$gnulib_path" remote add origin "$gnulib_url" + git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \ + || git -C "$gnulib_path" fetch origin \ + || cleanup_gnulib + git -C "$gnulib_path" reset --hard FETCH_HEAD + (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") \ + || cleanup_gnulib + fi + trap - HUP INT PIPE TERM + else + # The subdirectory 'gnulib' already exists. + if test -n "$GNULIB_REVISION"; then + if test -d "$gnulib_path/.git"; then + # The 'git checkout "$GNULIB_REVISION"' command succeeds if the + # GNULIB_REVISION is a commit hash that exists locally, or if it is + # branch name that can be fetched from origin. It fails, however, + # if the GNULIB_REVISION is a commit hash that only exists in + # origin. In this case, we need a 'git fetch' and then retry + # 'git checkout "$GNULIB_REVISION"'. + (cd "$gnulib_path" \ + && { git checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git fetch origin && git checkout "$GNULIB_REVISION"; } + } + ) || exit $? + else + die "Error: GNULIB_REVISION is specified in bootstrap.conf," \ + "but '$gnulib_path' contains no git history" + fi + fi + fi + fi + # Verify that $gnulib_path contains a gnulib checkout. + test -f "$gnulib_path/gnulib-tool" \ + || die "Error: '$gnulib_path' is supposed to contain a gnulib checkout," \ + "but does not contain gnulib-tool" + GNULIB_SRCDIR=$gnulib_path + fi + # $GNULIB_SRCDIR now points to the version of gnulib to use, and + # we no longer need to use git or $gnulib_path below here. +} + +# -------- Upgrading bootstrap to the version found in GNULIB_SRCDIR. -------- + +upgrade_bootstrap () +{ + if test -f "$medir"/bootstrap-funclib.sh; then + update_lib=true + { cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/top/bootstrap" \ + && cmp -s "$medir"/bootstrap-funclib.sh \ + "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" \ + && cmp -s "$medir"/autopull.sh "$GNULIB_SRCDIR/top/autopull.sh" \ + && cmp -s "$medir"/autogen.sh "$GNULIB_SRCDIR/top/autogen.sh"; \ + } + else + update_lib=false + cmp -s "$medir"/bootstrap "$GNULIB_SRCDIR/build-aux/bootstrap" + fi || { + if $update_lib; then + echo "$0: updating bootstrap & companions and restarting..." + else + echo "$0: updating bootstrap and restarting..." + fi + case $(sh -c 'echo "$1"' -- a) in + a) ignored=--;; + *) ignored=ignored;; + esac + u=$update_lib + exec sh -c \ + '{ if '$u' && test -f "$1"; then cp "$1" "$3"; else cp "$2" "$3"; fi; } && + { if '$u' && test -f "$4"; then cp "$4" "$5"; else rm -f "$5"; fi; } && + { if '$u' && test -f "$6"; then cp "$6" "$7"; else rm -f "$7"; fi; } && + { if '$u' && test -f "$8"; then cp "$8" "$9"; else rm -f "$9"; fi; } && + shift && shift && shift && shift && shift && + shift && shift && shift && shift && + exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ + $ignored \ + "$GNULIB_SRCDIR/top/bootstrap" "$GNULIB_SRCDIR/build-aux/bootstrap" \ + "$medir/bootstrap" \ + "$GNULIB_SRCDIR/top/bootstrap-funclib.sh" "$medir/bootstrap-funclib.sh" \ + "$GNULIB_SRCDIR/top/autopull.sh" "$medir/autopull.sh" \ + "$GNULIB_SRCDIR/top/autogen.sh" "$medir/autogen.sh" \ + "$0" "$@" --no-bootstrap-sync + } +} + +# ---------------------------------------------------------------------------- + +if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then + use_gnulib=false +else + use_gnulib=true +fi + +# -------- Fetch auxiliary files from the network. -------------------------- + +autopull_usage() { + cat </dev/null 2>&1 && unset CDPATH + + # Parse options. + + # Use git to update gnulib sources + use_git=true + + for option + do + case $option in + --help) + autopull_usage + return;; + --version) + set -e + echo "autopull.sh $scriptlibversion" + echo "$copyright" + return 0 + ;; + --skip-po) + SKIP_PO=t;; + --force) + checkout_only_file=;; + --bootstrap-sync) + bootstrap_sync=true;; + --no-bootstrap-sync) + bootstrap_sync=false;; + --no-git) + use_git=false;; + *) + bootstrap_option_hook $option || die "$option: unknown option";; + esac + done + + $use_git || test -n "$GNULIB_SRCDIR" \ + || die "Error: --no-git requires \$GNULIB_SRCDIR environment variable" \ + "or --gnulib-srcdir option" + test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ + || die "Error: \$GNULIB_SRCDIR environment variable" \ + "or --gnulib-srcdir option is specified," \ + "but does not denote a directory" + + if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then + die "Running this script from a non-checked-out distribution is risky." + fi + + check_build_prerequisites $use_git + + if $use_gnulib || $bootstrap_sync; then + prepare_GNULIB_SRCDIR + if $bootstrap_sync; then + upgrade_bootstrap "$@" + fi + fi + + # Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6. + # Also find the compatible sha1 utility on the BSDs + if test x"$SKIP_PO" = x; then + find_tool SHA1SUM sha1sum gsha1sum shasum sha1 + fi + + # See if we can use gnulib's git-merge-changelog merge driver. + if $use_git && test -d .git && check_exists git; then + if git config merge.merge-changelog.driver >/dev/null ; then + : + elif check_exists git-merge-changelog; then + echo "$0: initializing git-merge-changelog driver" + git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' + git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' + else + echo "$0: consider installing git-merge-changelog from gnulib" + fi + fi + + case $SKIP_PO in + '') + if test -d po; then + update_po_files po $package || return + fi + + if test -d runtime-po; then + update_po_files runtime-po $package-runtime || return + fi;; + esac + + # --------------------------------------------------------------------------- + + bootstrap_post_pull_hook \ + || die "bootstrap_post_pull_hook failed" + + # Don't proceed if there are uninitialized submodules. In particular, + # autogen.sh will remove dangling links, which might be links into + # uninitialized submodules. + # But it's OK if the 'gnulib' submodule is uninitialized, as long as + # GNULIB_SRCDIR is set. + if $use_git; then + # Uninitialized submodules are listed with an initial dash. + uninitialized=`git submodule | grep '^-' | awk '{ print $2 }'` + if test -n "$GNULIB_SRCDIR"; then + uninitialized=`echo "$uninitialized" | grep -v '^gnulib$'` + fi + if test -n "$uninitialized"; then + uninit_comma=`echo "$uninitialized" | tr '\n' ',' | sed -e 's|,$|.|'` + die "Some git submodules are not initialized: "$uninit_comma \ + "Either use option '--no-git'," \ + "or run 'git submodule update --init' and bootstrap again." + fi + fi + + if test -f "$medir"/autogen.sh; then + echo "$0: done. Now you can run '$medir/autogen.sh'." + fi +} + +# ----------------------------- Get translations. ----------------------------- + +download_po_files() { + subdir=$1 + domain=$2 + echo "$me: getting translations into $subdir for $domain..." + cmd=$(printf "$po_download_command_format" "$subdir" "$domain") + eval "$cmd" +} + +# Mirror .po files to $po_dir/.reference and copy only the new +# or modified ones into $po_dir. Also update $po_dir/LINGUAS. +# Note po files that exist locally only are left in $po_dir but will +# not be included in LINGUAS and hence will not be distributed. +update_po_files() { + # Directory containing primary .po files. + # Overwrite them only when we're sure a .po file is new. + po_dir=$1 + domain=$2 + + # Mirror *.po files into this dir. + # Usually contains *.s1 checksum files. + ref_po_dir="$po_dir/.reference" + + test -d $ref_po_dir || mkdir $ref_po_dir || return + download_po_files $ref_po_dir $domain \ + && ls "$ref_po_dir"/*.po 2>/dev/null | + sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return + + langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g') + test "$langs" = '*' && langs=x + for po in $langs; do + case $po in x) continue;; esac + new_po="$ref_po_dir/$po.po" + cksum_file="$ref_po_dir/$po.s1" + if ! test -f "$cksum_file" || + ! test -f "$po_dir/$po.po" || + ! $SHA1SUM -c "$cksum_file" < "$new_po" > /dev/null 2>&1; then + echo "$me: updated $po_dir/$po.po..." + cp "$new_po" "$po_dir/$po.po" \ + && $SHA1SUM < "$new_po" > "$cksum_file" || return + fi + done +} + +# -------- Generate files automatically from existing sources. -------------- + +autogen_usage() { + cat < /dev/null 2>&1 + elif test -d .svn; then + svn log -r HEAD "$file" > /dev/null 2>&1 + elif test -d CVS; then + grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null | + grep '^/[^/]*/[0-9]' > /dev/null + else + warn_ "no version control for $file?" + false + fi +} + # Strip blank and comment lines to leave significant entries. gitignore_entries() { sed '/^#/d; /^$/d' "$@" @@ -375,7 +1020,7 @@ symlink_to_dir() for dot_ig in x $vc_ignore; do test $dot_ig = x && continue ig=$parent/$dot_ig - insert_vc_ignore $ig "${dst_dir##*/}" + insert_vc_ignore $ig "${dst_dir##*/}/" done fi @@ -424,30 +1069,425 @@ symlink_to_dir() } } -# Override the default configuration, if necessary. -# Make sure that bootstrap.conf is sourced from the current directory -# if we were invoked as "sh bootstrap". -case "$0" in - */*) test -r "$0.conf" && . "$0.conf" ;; - *) test -r "$0.conf" && . ./"$0.conf" ;; -esac +# Regenerate all autogeneratable files that are omitted from the +# version control repository. In particular, regenerate all +# aclocal.m4, config.h.in, Makefile.in, configure files with new +# versions of autoconf or automake. +autogen() +{ + # Ensure that CDPATH is not set. Otherwise, the output from cd + # would cause trouble in at least one use below. + (unset CDPATH) >/dev/null 2>&1 && unset CDPATH -if test "$vc_ignore" = auto; then - vc_ignore= - test -d .git && vc_ignore=.gitignore - test -d CVS && vc_ignore="$vc_ignore .cvsignore" -fi + # Environment variables that may be set by the user. + : "${AUTOPOINT=autopoint}" + : "${AUTORECONF=autoreconf}" -if test x"$gnulib_modules$gnulib_files$gnulib_extra_files" = x; then - use_gnulib=false -else - use_gnulib=true -fi + if test "$vc_ignore" = auto; then + vc_ignore= + test -d .git && vc_ignore=.gitignore + test -d CVS && vc_ignore="$vc_ignore .cvsignore" + fi -# Translate configuration into internal form. + + # Parse options. + + # Whether to use copies instead of symlinks. + copy=false + + for option + do + case $option in + --help) + autogen_usage + return;; + --version) + set -e + echo "autogen.sh $scriptlibversion" + echo "$copyright" + return 0 + ;; + --force) + checkout_only_file=;; + --copy) + copy=true;; + *) + bootstrap_option_hook $option || die "$option: unknown option";; + esac + done + + test -z "$GNULIB_SRCDIR" || test -d "$GNULIB_SRCDIR" \ + || die "Error: \$GNULIB_SRCDIR environment variable or --gnulib-srcdir" \ + "option is specified, but does not denote a directory" + + if test -n "$checkout_only_file" && test ! -r "$checkout_only_file"; then + die "Running this script from a non-checked-out distribution is risky." + fi + + if $use_gnulib; then + if test -z "$GNULIB_SRCDIR"; then + gnulib_path=$(test -f .gitmodules && + git config --file .gitmodules submodule.gnulib.path) + test -z "$gnulib_path" && gnulib_path=gnulib + GNULIB_SRCDIR=$gnulib_path + fi + fi + + # Die if there is no AC_CONFIG_AUX_DIR($build_aux) line in configure.ac. + found_aux_dir=no + grep '^[ ]*AC_CONFIG_AUX_DIR(\['"$build_aux"'])' configure.ac \ + >/dev/null && found_aux_dir=yes + grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ + >/dev/null && found_aux_dir=yes + test $found_aux_dir = yes \ + || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it" + + # If $build_aux doesn't exist, create it now, otherwise some bits + # below will malfunction. If creating it, also mark it as ignored. + if test ! -d $build_aux; then + mkdir $build_aux + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + insert_vc_ignore $dot_ig $build_aux/ + done + fi + + check_build_prerequisites false + + use_libtool=0 + # We'd like to use grep -E, to see if any of LT_INIT, + # AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac, + # but that's not portable enough (e.g., for Solaris). + grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \ + && use_libtool=1 + grep '^[ ]*LT_INIT' configure.ac >/dev/null \ + && use_libtool=1 + if test $use_libtool = 1; then + find_tool LIBTOOLIZE glibtoolize libtoolize + fi + + if $use_gnulib; then + gnulib_tool=$GNULIB_SRCDIR/gnulib-tool + <$gnulib_tool || return + fi + + # NOTE: we have to be careful to run both autopoint and libtoolize + # before gnulib-tool, since gnulib-tool is likely to provide newer + # versions of files "installed" by these two programs. + # Then, *after* gnulib-tool (see below), we have to be careful to + # run autoreconf in such a way that it does not run either of these + # two just-pre-run programs. + + # Import from gettext. + with_gettext=yes + grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \ + with_gettext=no + + if test $with_gettext = yes || test $use_libtool = 1; then + + tempbase=.bootstrap$$ + trap "rm -f $tempbase.0 $tempbase.1" HUP INT PIPE TERM + + > $tempbase.0 > $tempbase.1 && + find . ! -type d -print | sort > $tempbase.0 || return + + if test $with_gettext = yes; then + # Released autopoint has the tendency to install macros that have been + # obsoleted in current gnulib, so run this before gnulib-tool. + echo "$0: $AUTOPOINT --force" + $AUTOPOINT --force || return + fi + + # Autoreconf runs aclocal before libtoolize, which causes spurious + # warnings if the initial aclocal is confused by the libtoolized + # (or worse out-of-date) macro directory. + # libtoolize 1.9b added the --install option; but we support back + # to libtoolize 1.5.22, where the install action was default. + if test $use_libtool = 1; then + install= + case $($LIBTOOLIZE --help) in + *--install*) install=--install ;; + esac + echo "running: $LIBTOOLIZE $install --copy" + $LIBTOOLIZE $install --copy + fi + + find . ! -type d -print | sort >$tempbase.1 + old_IFS=$IFS + IFS=$nl + for file in $(comm -13 $tempbase.0 $tempbase.1); do + IFS=$old_IFS + parent=${file%/*} + version_controlled_file "$parent" "$file" || { + for dot_ig in x $vc_ignore; do + test $dot_ig = x && continue + ig=$parent/$dot_ig + insert_vc_ignore "$ig" "${file##*/}" + done + } + done + IFS=$old_IFS + + rm -f $tempbase.0 $tempbase.1 + trap - HUP INT PIPE TERM + fi + + # Import from gnulib. + + if $use_gnulib; then + gnulib_tool_options="\ + --no-changelog\ + --aux-dir=$build_aux\ + --doc-base=$doc_base\ + --lib=$gnulib_name\ + --m4-base=$m4_base/\ + --source-base=$source_base/\ + --tests-base=$tests_base\ + --local-dir=$local_gl_dir\ + $gnulib_tool_option_extras\ + " + if test $use_libtool = 1; then + case "$gnulib_tool_options " in + *' --libtool '*) ;; + *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; + esac + fi + echo "$0: $gnulib_tool $gnulib_tool_options --import ..." + $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ + || die "gnulib-tool failed" + + if test $with_gettext = yes && test ! -f $m4_base/gettext.m4; then + # The gnulib-tool invocation has removed $m4_base/gettext.m4, that the + # AUTOPOINT invocation had installed. This can occur when the gnulib + # module 'gettext' was previously present but is now not present any more. + # Repeat the AUTOPOINT invocation and the gnulib-tool invocation. + + echo "$0: $AUTOPOINT --force" + $AUTOPOINT --force || return + + echo "$0: $gnulib_tool $gnulib_tool_options --import ..." + $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ + || die "gnulib-tool failed" + fi + + for file in $gnulib_files; do + symlink_to_dir "$GNULIB_SRCDIR" $file \ + || die "failed to symlink $file" + done + fi + + bootstrap_post_import_hook \ + || die "bootstrap_post_import_hook failed" + + # Remove any dangling symlink matching "*.m4" or "*.[ch]" in some + # gnulib-populated directories. Such .m4 files would cause aclocal to fail. + # The following requires GNU find 4.2.3 or newer. Considering the usual + # portability constraints of this script, that may seem a very demanding + # requirement, but it should be ok. Ignore any failure, which is fine, + # since this is only a convenience to help developers avoid the relatively + # unusual case in which a symlinked-to .m4 file is git-removed from gnulib + # between successive runs of this script. + find "$m4_base" "$source_base" \ + -depth \( -name '*.m4' -o -name '*.[ch]' \) \ + -type l -xtype l -delete > /dev/null 2>&1 + + # Invoke autoreconf with --force --install to ensure upgrades of tools + # such as ylwrap. + AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS" + AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive" + + # Tell autoreconf not to invoke autopoint or libtoolize; they were run above. + echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS" + AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \ + || die "autoreconf failed" + + # Get some extra files from gnulib, overriding existing files. + for file in $gnulib_extra_files; do + case $file in + */INSTALL) dst=INSTALL;; + build-aux/*) dst=$build_aux/${file#build-aux/};; + *) dst=$file;; + esac + symlink_to_dir "$GNULIB_SRCDIR" $file $dst \ + || die "failed to symlink $file" + done + + if test $with_gettext = yes; then + # Create gettext configuration. + echo "$0: Creating po/Makevars from po/Makevars.template ..." + rm -f po/Makevars + sed ' + /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/ + /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/ + /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'| + /^XGETTEXT_OPTIONS *=/{ + s/$/ \\/ + a\ + '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} + } + ' po/Makevars.template >po/Makevars \ + || die 'cannot generate po/Makevars' + + # If the 'gettext' module is in use, grab the latest Makefile.in.in. + # If only the 'gettext-h' module is in use, assume autopoint already + # put the correct version of this file into place. + case $gnulib_modules in + *gettext-h*) ;; + *gettext*) + cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \ + || die "cannot create po/Makefile.in.in" + ;; + esac + + if test -d runtime-po; then + # Similarly for runtime-po/Makevars, but not quite the same. + rm -f runtime-po/Makevars + sed ' + /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/ + /^subdir *=.*/s/=.*/= runtime-po/ + /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ + /^XGETTEXT_OPTIONS *=/{ + s/$/ \\/ + a\ + '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} + } + ' po/Makevars.template >runtime-po/Makevars \ + || die 'cannot generate runtime-po/Makevars' + + # Copy identical files from po to runtime-po. + (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) + fi + fi + + bootstrap_epilogue + + echo "$0: done. Now you can run './configure'." +} + +# ---------------------------------------------------------------------------- + +# Local Variables: +# eval: (add-hook 'before-save-hook 'time-stamp nil t) +# time-stamp-start: "scriptlibversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: + +usage() { + cat </dev/null && found_aux_dir=yes -grep '^[ ]*AC_CONFIG_AUX_DIR('"$build_aux"')' configure.ac \ - >/dev/null && found_aux_dir=yes -test $found_aux_dir = yes \ - || die "configure.ac lacks 'AC_CONFIG_AUX_DIR([$build_aux])'; add it" +check_build_prerequisites $use_git -# If $build_aux doesn't exist, create it now, otherwise some bits -# below will malfunction. If creating it, also mark it as ignored. -if test ! -d $build_aux; then - mkdir $build_aux - for dot_ig in x $vc_ignore; do - test $dot_ig = x && continue - insert_vc_ignore $dot_ig $build_aux - done -fi - -# Note this deviates from the version comparison in automake -# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a -# but this should suffice as we won't be specifying old -# version formats or redundant trailing .0 in bootstrap.conf. -# If we did want full compatibility then we should probably -# use m4_version_compare from autoconf. -sort_ver() { # sort -V is not generally available - ver1="$1" - ver2="$2" - - # split on '.' and compare each component - i=1 - while : ; do - p1=$(echo "$ver1" | cut -d. -f$i) - p2=$(echo "$ver2" | cut -d. -f$i) - if [ ! "$p1" ]; then - echo "$1 $2" - break - elif [ ! "$p2" ]; then - echo "$2 $1" - break - elif [ ! "$p1" = "$p2" ]; then - if [ "$p1" -gt "$p2" ] 2>/dev/null; then # numeric comparison - echo "$2 $1" - elif [ "$p2" -gt "$p1" ] 2>/dev/null; then # numeric comparison - echo "$1 $2" - else # numeric, then lexicographic comparison - lp=$(printf "$p1\n$p2\n" | LANG=C sort -n | tail -n1) - if [ "$lp" = "$p2" ]; then - echo "$1 $2" - else - echo "$2 $1" - fi - fi - break - fi - i=$(($i+1)) - done -} - -get_version_sed=' -# Move version to start of line. -s/.*[v ]\([0-9]\)/\1/ - -# Skip lines that do not start with version. -/^[0-9]/!d - -# Remove characters after the version. -s/[^.a-z0-9-].*// - -# The first component must be digits only. -s/^\([0-9]*\)[a-z-].*/\1/ - -#the following essentially does s/5.005/5.5/ -s/\.0*\([1-9]\)/.\1/g -p -q' - -get_version() { - app=$1 - - $app --version >/dev/null 2>&1 || { $app --version; return 1; } - - $app --version 2>&1 | sed -n "$get_version_sed" -} - -check_versions() { - ret=0 - - while read app req_ver; do - # We only need libtoolize from the libtool package. - if test "$app" = libtool; then - app=libtoolize - fi - # Exempt git if --no-git is in effect. - if test "$app" = git; then - $use_git || continue - fi - # Honor $APP variables ($TAR, $AUTOCONF, etc.) - appvar=$(echo $app | LC_ALL=C tr '[a-z]-' '[A-Z]_') - test "$appvar" = TAR && appvar=AMTAR - case $appvar in - GZIP) ;; # Do not use $GZIP: it contains gzip options. - PERL::*) ;; # Keep perl modules as-is - *) eval "app=\${$appvar-$app}" ;; - esac - - # Handle the still-experimental Automake-NG programs specially. - # They remain named as the mainstream Automake programs ("automake", - # and "aclocal") to avoid gratuitous incompatibilities with - # pre-existing usages (by, say, autoreconf, or custom autogen.sh - # scripts), but correctly identify themselves (as being part of - # "GNU automake-ng") when asked their version. - case $app in - automake-ng|aclocal-ng) - app=${app%-ng} - ($app --version | grep '(GNU automake-ng)') >/dev/null 2>&1 || { - warn_ "Error: '$app' not found or not from Automake-NG" - ret=1 - continue - } ;; - # Another check is for perl modules. These can be written as - # e.g. perl::XML::XPath in case of XML::XPath module, etc. - perl::*) - # Extract module name - app="${app#perl::}" - if ! $PERL -m"$app" -e 'exit 0' >/dev/null 2>&1; then - warn_ "Error: perl module '$app' not found" - ret=1 - fi - continue - ;; - esac - if [ "$req_ver" = "-" ]; then - # Merely require app to exist; not all prereq apps are well-behaved - # so we have to rely on $? rather than get_version. - if ! check_exists --verbose $app; then - warn_ "Error: '$app' not found" - ret=1 - fi - else - # Require app to produce a new enough version string. - inst_ver=$(get_version $app) - if [ ! "$inst_ver" ]; then - warn_ "Error: '$app' not found" - ret=1 - else - latest_ver=$(sort_ver $req_ver $inst_ver | cut -d' ' -f2) - if [ ! "$latest_ver" = "$inst_ver" ]; then - warnf_ '%s\n' \ - "Error: '$app' version == $inst_ver is too old" \ - " '$app' version >= $req_ver is required" - ret=1 - fi - fi - fi - done - - return $ret -} - -print_versions() { - echo "Program Min_version" - echo "----------------------" - printf %s "$buildreq" - echo "----------------------" - # can't depend on column -t -} - -# Find sha1sum, named gsha1sum on MacPorts, shasum on Mac OS X 10.6. -# Also find the compatible sha1 utility on the BSDs -if test x"$SKIP_PO" = x; then - find_tool SHA1SUM sha1sum gsha1sum shasum sha1 -fi - -use_libtool=0 -# We'd like to use grep -E, to see if any of LT_INIT, -# AC_PROG_LIBTOOL, AM_PROG_LIBTOOL is used in configure.ac, -# but that's not portable enough (e.g., for Solaris). -grep '^[ ]*A[CM]_PROG_LIBTOOL' configure.ac >/dev/null \ - && use_libtool=1 -grep '^[ ]*LT_INIT' configure.ac >/dev/null \ - && use_libtool=1 -if test $use_libtool = 1; then - find_tool LIBTOOLIZE glibtoolize libtoolize -fi - -# gnulib-tool requires at least automake and autoconf. -# If either is not listed, add it (with minimum version) as a prerequisite. -case $buildreq in - *automake*) ;; - *) buildreq="automake 1.9 -$buildreq" ;; -esac -case $buildreq in - *autoconf*) ;; - *) buildreq="autoconf 2.59 -$buildreq" ;; -esac - -# When we can deduce that gnulib-tool will require patch, -# and when patch is not already listed as a prerequisite, add it, too. -if test -d "$local_gl_dir" \ - && ! find "$local_gl_dir" -name '*.diff' -exec false {} +; then - case $buildreq in - *patch*) ;; - *) buildreq="patch - -$buildreq" ;; - esac -fi - -if ! printf "$buildreq" | check_versions; then - echo >&2 - if test -f README-prereq; then - die "See README-prereq for how to get the prerequisite programs" - else - die "Please install the prerequisite programs" - fi -fi - -# Warn the user if autom4te appears to be broken; this causes known -# issues with at least gettext 0.18.3. -probe=$(echo 'm4_quote([hi])' | autom4te -l M4sugar -t 'm4_quote:$%' -) -if test "x$probe" != xhi; then - warn_ "WARNING: your autom4te wrapper eats stdin;" - warn_ "if bootstrap fails, consider upgrading your autotools" +if $bootstrap_sync; then + prepare_GNULIB_SRCDIR + upgrade_bootstrap "$@" + # Since we have now upgraded if needed, no need to try it a second time below. + bootstrap_sync=false fi echo "$0: Bootstrapping from checked-out $package sources..." -# See if we can use gnulib's git-merge-changelog merge driver. -if $use_git && test -d .git && check_exists git; then - if git config merge.merge-changelog.driver >/dev/null ; then - : - elif check_exists git-merge-changelog; then - echo "$0: initializing git-merge-changelog driver" - git config merge.merge-changelog.name 'GNU-style ChangeLog merge driver' - git config merge.merge-changelog.driver 'git-merge-changelog %O %A %B' - else - echo "$0: consider installing git-merge-changelog from gnulib" - fi +# Pass GNULIB_SRCDIR and GNULIB_REFDIR to any subsidiary commands that care. +export GNULIB_SRCDIR +export GNULIB_REFDIR + +if $pull && { $use_git || test -z "$SKIP_PO"; }; then + autopull \ + `if $bootstrap_sync; then + echo ' --bootstrap-sync' + else + echo ' --no-bootstrap-sync' + fi` \ + `if test -z "$checkout_only_file"; then echo ' --force'; fi` \ + `if ! $use_git; then echo ' --no-git'; fi` \ + `if test -n "$SKIP_PO"; then echo ' --skip-po'; fi` \ + || die "could not fetch auxiliary files" fi - -cleanup_gnulib() { - status=$? - rm -fr "$gnulib_path" - exit $status -} - -git_modules_config () { - test -f .gitmodules && git config --file .gitmodules "$@" -} - -if $use_gnulib; then - if $use_git; then - gnulib_path=$(git_modules_config submodule.gnulib.path) - test -z "$gnulib_path" && gnulib_path=gnulib - fi - - # Get gnulib files. Populate $GNULIB_SRCDIR, possibly updating a - # submodule, for use in the rest of the script. - - case ${GNULIB_SRCDIR--} in - -) - # Note that $use_git is necessarily true in this case. - if git_modules_config submodule.gnulib.url >/dev/null; then - echo "$0: getting gnulib files..." - git submodule init -- "$gnulib_path" || exit $? - git submodule update -- "$gnulib_path" || exit $? - - elif [ ! -d "$gnulib_path" ]; then - echo "$0: getting gnulib files..." - - trap cleanup_gnulib 1 2 13 15 - - shallow= - if test -z "$GNULIB_REVISION"; then - git clone -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' - git clone $shallow ${GNULIB_URL:-$default_gnulib_url} "$gnulib_path" \ - || cleanup_gnulib - else - git fetch -h 2>&1 | grep -- --depth > /dev/null && shallow='--depth 2' - mkdir -p "$gnulib_path" - # Only want a shallow checkout of $GNULIB_REVISION, but git does not - # support cloning by commit hash. So attempt a shallow fetch by commit - # hash to minimize the amount of data downloaded and changes needed to - # be processed, which can drastically reduce download and processing - # time for checkout. If the fetch by commit fails, a shallow fetch can - # not be performed because we do not know what the depth of the commit - # is without fetching all commits. So fallback to fetching all commits. - git -C "$gnulib_path" init - git -C "$gnulib_path" remote add origin \ - ${GNULIB_URL:-$default_gnulib_url} - git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \ - || git -C "$gnulib_path" fetch origin \ - || cleanup_gnulib - git -C "$gnulib_path" reset --hard FETCH_HEAD - fi - - trap - 1 2 13 15 - fi - GNULIB_SRCDIR=$gnulib_path - ;; - *) - # Use GNULIB_SRCDIR directly or as a reference. - if $use_git && test -d "$GNULIB_SRCDIR"/.git && \ - git_modules_config submodule.gnulib.url >/dev/null; then - echo "$0: getting gnulib files..." - if git submodule -h|grep -- --reference > /dev/null; then - # Prefer the one-liner available in git 1.6.4 or newer. - git submodule update --init --reference "$GNULIB_SRCDIR" \ - "$gnulib_path" || exit $? - else - # This fallback allows at least git 1.5.5. - if test -f "$gnulib_path"/gnulib-tool; then - # Since file already exists, assume submodule init already complete. - git submodule update -- "$gnulib_path" || exit $? - else - # Older git can't clone into an empty directory. - rmdir "$gnulib_path" 2>/dev/null - git clone --reference "$GNULIB_SRCDIR" \ - "$(git_modules_config submodule.gnulib.url)" "$gnulib_path" \ - && git submodule init -- "$gnulib_path" \ - && git submodule update -- "$gnulib_path" \ - || exit $? - fi - fi - GNULIB_SRCDIR=$gnulib_path - fi - ;; - esac - - if test -d "$GNULIB_SRCDIR"/.git && test -n "$GNULIB_REVISION" \ - && ! git_modules_config submodule.gnulib.url >/dev/null; then - (cd "$GNULIB_SRCDIR" && git checkout "$GNULIB_REVISION") || cleanup_gnulib - fi - - # $GNULIB_SRCDIR now points to the version of gnulib to use, and - # we no longer need to use git or $gnulib_path below here. - - if $bootstrap_sync; then - cmp -s "$0" "$GNULIB_SRCDIR/build-aux/bootstrap" || { - echo "$0: updating bootstrap and restarting..." - case $(sh -c 'echo "$1"' -- a) in - a) ignored=--;; - *) ignored=ignored;; - esac - exec sh -c \ - 'cp "$1" "$2" && shift && exec "${CONFIG_SHELL-/bin/sh}" "$@"' \ - $ignored "$GNULIB_SRCDIR/build-aux/bootstrap" \ - "$0" "$@" --no-bootstrap-sync - } - fi - - gnulib_tool=$GNULIB_SRCDIR/gnulib-tool - <$gnulib_tool || exit $? +if $gen; then + autogen \ + `if $copy; then echo ' --copy'; fi` \ + `if test -z "$checkout_only_file"; then echo ' --force'; fi` \ + || die "could not generate auxiliary files" fi -# Get translations. - -download_po_files() { - subdir=$1 - domain=$2 - echo "$me: getting translations into $subdir for $domain..." - cmd=$(printf "$po_download_command_format" "$subdir" "$domain") - eval "$cmd" -} - -# Mirror .po files to $po_dir/.reference and copy only the new -# or modified ones into $po_dir. Also update $po_dir/LINGUAS. -# Note po files that exist locally only are left in $po_dir but will -# not be included in LINGUAS and hence will not be distributed. -update_po_files() { - # Directory containing primary .po files. - # Overwrite them only when we're sure a .po file is new. - po_dir=$1 - domain=$2 - - # Mirror *.po files into this dir. - # Usually contains *.s1 checksum files. - ref_po_dir="$po_dir/.reference" - - test -d $ref_po_dir || mkdir $ref_po_dir || return - download_po_files $ref_po_dir $domain \ - && ls "$ref_po_dir"/*.po 2>/dev/null | - sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return - - langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g') - test "$langs" = '*' && langs=x - for po in $langs; do - case $po in x) continue;; esac - new_po="$ref_po_dir/$po.po" - cksum_file="$ref_po_dir/$po.s1" - if ! test -f "$cksum_file" || - ! test -f "$po_dir/$po.po" || - ! $SHA1SUM -c "$cksum_file" < "$new_po" > /dev/null 2>&1; then - echo "$me: updated $po_dir/$po.po..." - cp "$new_po" "$po_dir/$po.po" \ - && $SHA1SUM < "$new_po" > "$cksum_file" || return - fi - done -} - -case $SKIP_PO in -'') - if test -d po; then - update_po_files po $package || exit - fi - - if test -d runtime-po; then - update_po_files runtime-po $package-runtime || exit - fi;; -esac - -version_controlled_file() { - parent=$1 - file=$2 - if test -d .git; then - git rm -n "$file" > /dev/null 2>&1 - elif test -d .svn; then - svn log -r HEAD "$file" > /dev/null 2>&1 - elif test -d CVS; then - grep -F "/${file##*/}/" "$parent/CVS/Entries" 2>/dev/null | - grep '^/[^/]*/[0-9]' > /dev/null - else - warn_ "no version control for $file?" - false - fi -} - -# NOTE: we have to be careful to run both autopoint and libtoolize -# before gnulib-tool, since gnulib-tool is likely to provide newer -# versions of files "installed" by these two programs. -# Then, *after* gnulib-tool (see below), we have to be careful to -# run autoreconf in such a way that it does not run either of these -# two just-pre-run programs. - -# Import from gettext. -with_gettext=yes -grep '^[ ]*AM_GNU_GETTEXT_VERSION(' configure.ac >/dev/null || \ - with_gettext=no - -if test $with_gettext = yes || test $use_libtool = 1; then - - tempbase=.bootstrap$$ - trap "rm -f $tempbase.0 $tempbase.1" 1 2 13 15 - - > $tempbase.0 > $tempbase.1 && - find . ! -type d -print | sort > $tempbase.0 || exit - - if test $with_gettext = yes; then - # Released autopoint has the tendency to install macros that have been - # obsoleted in current gnulib, so run this before gnulib-tool. - echo "$0: $AUTOPOINT --force" - $AUTOPOINT --force || exit - fi - - # Autoreconf runs aclocal before libtoolize, which causes spurious - # warnings if the initial aclocal is confused by the libtoolized - # (or worse out-of-date) macro directory. - # libtoolize 1.9b added the --install option; but we support back - # to libtoolize 1.5.22, where the install action was default. - if test $use_libtool = 1; then - install= - case $($LIBTOOLIZE --help) in - *--install*) install=--install ;; - esac - echo "running: $LIBTOOLIZE $install --copy" - $LIBTOOLIZE $install --copy - fi - - find . ! -type d -print | sort >$tempbase.1 - old_IFS=$IFS - IFS=$nl - for file in $(comm -13 $tempbase.0 $tempbase.1); do - IFS=$old_IFS - parent=${file%/*} - version_controlled_file "$parent" "$file" || { - for dot_ig in x $vc_ignore; do - test $dot_ig = x && continue - ig=$parent/$dot_ig - insert_vc_ignore "$ig" "${file##*/}" - done - } - done - IFS=$old_IFS - - rm -f $tempbase.0 $tempbase.1 - trap - 1 2 13 15 -fi - -# Import from gnulib. - -if $use_gnulib; then - gnulib_tool_options="\ - --no-changelog\ - --aux-dir=$build_aux\ - --doc-base=$doc_base\ - --lib=$gnulib_name\ - --m4-base=$m4_base/\ - --source-base=$source_base/\ - --tests-base=$tests_base\ - --local-dir=$local_gl_dir\ - $gnulib_tool_option_extras\ - " - if test $use_libtool = 1; then - case "$gnulib_tool_options " in - *' --libtool '*) ;; - *) gnulib_tool_options="$gnulib_tool_options --libtool" ;; - esac - fi - echo "$0: $gnulib_tool $gnulib_tool_options --import ..." - $gnulib_tool $gnulib_tool_options --import $gnulib_modules \ - || die "gnulib-tool failed" - - for file in $gnulib_files; do - symlink_to_dir "$GNULIB_SRCDIR" $file \ - || die "failed to symlink $file" - done -fi - -bootstrap_post_import_hook \ - || die "bootstrap_post_import_hook failed" - -# Don't proceed if there are uninitialized submodules. In particular, -# the next step will remove dangling links, which might be links into -# uninitialized submodules. -# -# Uninitialized submodules are listed with an initial dash. -if $use_git && git submodule | grep '^-' >/dev/null; then - die "some git submodules are not initialized. " \ - "Run 'git submodule update --init' and bootstrap again." -fi - -# Remove any dangling symlink matching "*.m4" or "*.[ch]" in some -# gnulib-populated directories. Such .m4 files would cause aclocal to fail. -# The following requires GNU find 4.2.3 or newer. Considering the usual -# portability constraints of this script, that may seem a very demanding -# requirement, but it should be ok. Ignore any failure, which is fine, -# since this is only a convenience to help developers avoid the relatively -# unusual case in which a symlinked-to .m4 file is git-removed from gnulib -# between successive runs of this script. -find "$m4_base" "$source_base" \ - -depth \( -name '*.m4' -o -name '*.[ch]' \) \ - -type l -xtype l -delete > /dev/null 2>&1 - -# Invoke autoreconf with --force --install to ensure upgrades of tools -# such as ylwrap. -AUTORECONFFLAGS="--verbose --install --force -I $m4_base $ACLOCAL_FLAGS" - -# Some systems (RHEL 5) are using ancient autotools, for which the -# --no-recursive option had not been invented. Detect that lack and -# omit the option when it's not supported. FIXME in 2017: remove this -# hack when RHEL 5 autotools are updated, or when they become irrelevant. -case $($AUTORECONF --help) in - *--no-recursive*) AUTORECONFFLAGS="$AUTORECONFFLAGS --no-recursive";; -esac - -# Tell autoreconf not to invoke autopoint or libtoolize; they were run above. -echo "running: AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS" -AUTOPOINT=true LIBTOOLIZE=true $AUTORECONF $AUTORECONFFLAGS \ - || die "autoreconf failed" - -# Get some extra files from gnulib, overriding existing files. -for file in $gnulib_extra_files; do - case $file in - */INSTALL) dst=INSTALL;; - build-aux/*) dst=$build_aux/${file#build-aux/};; - *) dst=$file;; - esac - symlink_to_dir "$GNULIB_SRCDIR" $file $dst \ - || die "failed to symlink $file" -done - -if test $with_gettext = yes; then - # Create gettext configuration. - echo "$0: Creating po/Makevars from po/Makevars.template ..." - rm -f po/Makevars - sed ' - /^EXTRA_LOCALE_CATEGORIES *=/s/=.*/= '"$EXTRA_LOCALE_CATEGORIES"'/ - /^COPYRIGHT_HOLDER *=/s/=.*/= '"$COPYRIGHT_HOLDER"'/ - /^MSGID_BUGS_ADDRESS *=/s|=.*|= '"$MSGID_BUGS_ADDRESS"'| - /^XGETTEXT_OPTIONS *=/{ - s/$/ \\/ - a\ - '"$XGETTEXT_OPTIONS"' $${end_of_xgettext_options+} - } - ' po/Makevars.template >po/Makevars \ - || die 'cannot generate po/Makevars' - - # If the 'gettext' module is in use, grab the latest Makefile.in.in. - # If only the 'gettext-h' module is in use, assume autopoint already - # put the correct version of this file into place. - case $gnulib_modules in - *gettext-h*) ;; - *gettext*) - cp $GNULIB_SRCDIR/build-aux/po/Makefile.in.in po/Makefile.in.in \ - || die "cannot create po/Makefile.in.in" - ;; - esac - - if test -d runtime-po; then - # Similarly for runtime-po/Makevars, but not quite the same. - rm -f runtime-po/Makevars - sed ' - /^DOMAIN *=.*/s/=.*/= '"$package"'-runtime/ - /^subdir *=.*/s/=.*/= runtime-po/ - /^MSGID_BUGS_ADDRESS *=/s/=.*/= bug-'"$package"'@gnu.org/ - /^XGETTEXT_OPTIONS *=/{ - s/$/ \\/ - a\ - '"$XGETTEXT_OPTIONS_RUNTIME"' $${end_of_xgettext_options+} - } - ' po/Makevars.template >runtime-po/Makevars \ - || die 'cannot generate runtime-po/Makevars' - - # Copy identical files from po to runtime-po. - (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) - fi -fi - -bootstrap_epilogue - -echo "$0: done. Now you can run './configure'." +# ---------------------------------------------------------------------------- # Local Variables: -# eval: (add-hook 'before-save-hook 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp nil t) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" diff --git a/bootstrap.conf b/bootstrap.conf index 98d0e1c..4f6242a 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -1,6 +1,6 @@ -# Bootstrap configuration. +# Bootstrap configuration. -*- sh -*- -# Copyright (C) 2006-2022 Free Software Foundation, Inc. +# Copyright (C) 2006-2024 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/lib/.gitignore b/lib/.gitignore index daef416..958dc92 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -1,11 +1,12 @@ -/alloca.h /alloca.in.h /arg-nonnull.h -/arpa/inet.h /arpa_inet.in.h +/assert.in.h /attribute.h /basename-lgpl.c /basename-lgpl.h +/c32is-impl.h +/c32isprint.c /calloc.c /c-ctype.c /c-ctype.h @@ -22,18 +23,14 @@ /c-strcaseeq.h /c-strcase.h /c-strncasecmp.c -/dirname.h -/dirname-lgpl.c -/dosname.h /dup2.c /errno.in.h /error.c -/error.h +/error.in.h /exitfail.c /exitfail.h /fclose.c /fcntl.c -/fcntl.h /fcntl.in.h /fd-hook.c /fd-hook.h @@ -69,8 +66,6 @@ /getprogname.c /getprogname.h /gettext.h -/.gitignore~ -/glthread/* /hard-locale.c /hard-locale.h /ialloc.c @@ -78,7 +73,7 @@ /idx.h /inet_pton.c /intprops.h -/inttypes.h +/intprops-internal.h /inttypes.in.h /isnan.c /isnand.c @@ -88,29 +83,25 @@ /lc-charset-dispatch.c /lc-charset-dispatch.h /libc-config.h -/libdhcpd_pools.la -/.libs/ -/limits.h /limits.in.h -/*.lo /localcharset.c /localcharset.h -/locale.h /locale.in.h -/localtime-buffer.c -/localtime-buffer.h +/localename.h +/localename-unsafe.c /lseek.c /Makefile.am /malloca.c /malloca.h /malloc.c /math.c -/math.h /math.in.h +/mbrtoc32.c /mbrtowc.c /mbrtowc-impl.h /mbrtowc-impl-utf8.h /mbsinit.c +/mbszero.c /mbtowc-lock.c /mbtowc-lock.h /memchr.c @@ -138,21 +129,19 @@ /setlocale-lock.c /setlocale_null.c /setlocale_null.h +/setlocale_null-unlocked.c /stat.c /stat-time.c /stat-time.h /stat-w32.c /stat-w32.h -/stdalign.in.h -/stdbool.in.h +/stdckdint.in.h /stddef.in.h /stdint.in.h -/stdio.h /stdio-impl.h /stdio.in.h /stdio-read.c /stdio-write.c -/stdlib.h /stdlib.in.h /stpncpy.c /strdup.c @@ -160,50 +149,39 @@ /strerror.c /strerror-override.c /strerror-override.h +/strftime.c /strftime.h -/string.h /string.in.h -/stripslash.c /strstr.c /strtod.c /str-two-way.h /sys_socket.c -/sys/socket.h /sys_socket.in.h -/sys/stat.h /sys_stat.in.h -/sys/types.h /sys_types.in.h -/sys/uio.h /sys_uio.in.h /timegm.c -/time.h /time.in.h /time-internal.h /time_r.c /time_rz.c /tzset.c +/uchar.in.h +/unictype/bitmap.h +/unictype/ctype_print.c +/unictype/ctype_print.h +/unictype/.gitignore +/unictype.in.h /unistd.c -/unistd.h /unistd.in.h +/unitypes.in.h /unsetenv.c -/unused-parameter.h /verify.h /warn-on-use.h -/wchar.h /wchar.in.h -/wctype.h /wctype-h.c /wctype.in.h /windows-initguard.h -/windows-mutex.c -/windows-mutex.h -/windows-once.c -/windows-once.h -/windows-recmutex.c -/windows-recmutex.h -/windows-rwlock.c -/windows-rwlock.h /xalloc-die.c /xalloc.h /xalloc-oversized.h diff --git a/src/mustach.c b/src/mustach.c index 2af9672..b197a83 100644 --- a/src/mustach.c +++ b/src/mustach.c @@ -19,6 +19,8 @@ #define _GNU_SOURCE +#include "config.h" + #include #include #include From 7fc13c60e021afedcd9790f2e7d291ec61bb675d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?luis=CE=B4=CE=BC?= Date: Thu, 6 May 2021 15:20:26 +0200 Subject: [PATCH 47/53] fix: avoid generation of unvalid JSON in summary This can happen when there are no available shared networks. A division by zero throws 'nan', which is non JSON-valid unless it's surrounded by double quotes. --- THANKS | 1 + src/output.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/THANKS b/THANKS index 2639556..2aec631 100644 --- a/THANKS +++ b/THANKS @@ -51,3 +51,4 @@ Mathieu Morier Jean Benoit Belkacem Daheb Björn Lässig +Luisδμ diff --git a/src/output.c b/src/output.c index 17745d4..2967688 100644 --- a/src/output.c +++ b/src/output.c @@ -611,9 +611,15 @@ static int output_json(struct conf_t *state) fprintf(outfile, " \"touched\":%g,\n", state->shared_net_root->touched); fprintf(outfile, " \"free\":%g,\n", state->shared_net_root->available - state->shared_net_root->used); - fprintf(outfile, " \"percent\":%g,\n", oh.percent); + if (fpclassify(state->shared_net_root->available) == FP_ZERO) + fprintf(outfile, " \"percent\":\"%g\",\n", oh.percent); + else + fprintf(outfile, " \"percent\":%g,\n", oh.percent); fprintf(outfile, " \"touch_count\":%g,\n", oh.tc); - fprintf(outfile, " \"touch_percent\":%g,\n", oh.tcp); + if (fpclassify(state->shared_net_root->available) == FP_ZERO) + fprintf(outfile, " \"touch_percent\":\"%g\",\n", oh.tcp); + else + fprintf(outfile, " \"touch_percent\":%g,\n", oh.tcp); if (state->backups_found == 1) { fprintf(outfile, " \"backup_count\":%g,\n", state->shared_net_root->backups); From dc649e27cdd7ced97a499e7877d726ec072de2b1 Mon Sep 17 00:00:00 2001 From: Belkacem Daheb Date: Wed, 26 Jul 2023 17:17:24 +0200 Subject: [PATCH 48/53] getdata output: add start, end and hostname printing support for xml and json Ensure strings are always null terminated. --- src/getdata.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/getdata.c b/src/getdata.c index ff05804..31734de 100644 --- a/src/getdata.c +++ b/src/getdata.c @@ -148,7 +148,9 @@ int parse_leases(struct conf_t *state) if ((lease = find_lease(state, &addr)) != NULL) { lease->ethernet = xstrdup(macstring); lease->starts = xstrdup(startsstr); + startsstr[0] = '\0'; lease->ends = xstrdup(endsstr); + endsstr[0] = '\0'; } break; case PREFIX_ENDS: @@ -171,6 +173,7 @@ int parse_leases(struct conf_t *state) if ((lease = find_lease(state, &addr)) != NULL) { lease->hostname = xstrdup(hostnamestr); } + hostnamestr[0] = '\0'; break; default: /* do nothing */ ; From 5b7ab283148ac6edcd2bdb52d9c9605925d5135a Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 28 Apr 2025 14:22:56 +0100 Subject: [PATCH 49/53] build-sys: quote subshell execution in the autotools file Ryan discovered a typo/issue while handling the man targets. This change fixes the issue. Reported-by: Ryan Steinmetz Signed-off-by: Sami Kerola --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index c135236..65b6ba2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,7 +39,7 @@ edit_cmd = sed \ $(PATHFILES): Makefile @ rm -f $@ $@.tmp - $(AM_V_at) mkdir -p $(dir $@) + $(AM_V_at) mkdir -p $$(dirname $@) $(AM_V_GEN) srcdir=''; \ test -f ./$@.in || srcdir=$(srcdir)/; \ $(edit_cmd) $${srcdir}$@.in >$@.tmp From f917d5b223766f783d22ef23ca079d0073f87de7 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 28 Apr 2025 14:00:35 +0100 Subject: [PATCH 50/53] build-sys: update bootstrap from gnulib Signed-off-by: Sami Kerola --- bootstrap | 156 ++++++++++++++++++++++++++++++++----------------- bootstrap.conf | 2 +- lib/.gitignore | 74 +++++++++++++++++++++++ 3 files changed, 176 insertions(+), 56 deletions(-) diff --git a/bootstrap b/bootstrap index 2e3f036..6f289d7 100755 --- a/bootstrap +++ b/bootstrap @@ -5,7 +5,7 @@ scriptversion=2024-07-04.10; # UTC -# Copyright (C) 2003-2024 Free Software Foundation, Inc. +# Copyright (C) 2003-2025 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -37,9 +37,9 @@ medir=`dirname "$me"` # A library of shell functions for autopull.sh, autogen.sh, and bootstrap. -scriptlibversion=2024-07-21.12; # UTC +scriptlibversion=2025-02-16.12; # UTC -# Copyright (C) 2003-2024 Free Software Foundation, Inc. +# Copyright (C) 2003-2025 Free Software Foundation, Inc. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -152,7 +152,8 @@ po_download_command_format=\ "wget --mirror --level=1 -nd -nv -A.po -P '%s' \ https://translationproject.org/latest/%s/" -# Prefer a non-empty tarname (4th argument of AC_INIT if given), else +# When extracting the package name from an AC_INIT invocation, +# prefer a non-empty tarname (4th argument of AC_INIT if given), else # fall back to the package name (1st argument with munging). extract_package_name=' /^AC_INIT(\[*/{ @@ -164,18 +165,21 @@ extract_package_name=' q } s/[],)].*// - s/^GNU // s/-/_/g - y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ - s/[^abcdefghijklmnopqrstuvwxyz0123456789_]/-/g p } ' -package=$(${AUTOCONF:-autoconf} --trace AC_INIT:\$4 configure.ac 2>/dev/null) +normalize_package_name=' + s/^GNU // + y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ + s/[^abcdefghijklmnopqrstuvwxyz0123456789_]/-/g +' +package=$(${AUTOCONF:-autoconf} --trace 'AC_INIT:$4' configure.ac 2>/dev/null) if test -z "$package"; then package=$(sed -n "$extract_package_name" configure.ac) \ || die 'cannot find package name in configure.ac' fi +package=$(echo "$package" | sed "$normalize_package_name") gnulib_name=lib$package build_aux=build-aux @@ -506,11 +510,10 @@ prepare_GNULIB_SRCDIR () # if the GNULIB_REVISION is a commit hash that only exists in # origin. In this case, we need a 'git fetch' and then retry # 'git checkout "$GNULIB_REVISION"'. - (cd "$GNULIB_SRCDIR" \ - && { git checkout "$GNULIB_REVISION" 2>/dev/null \ - || { git fetch origin && git checkout "$GNULIB_REVISION"; } - } - ) || exit $? + git -C "$GNULIB_SRCDIR" checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git -C "$GNULIB_SRCDIR" fetch origin \ + && git -C "$GNULIB_SRCDIR" checkout "$GNULIB_REVISION"; } \ + || exit $? fi else if ! $use_git; then @@ -548,34 +551,78 @@ prepare_GNULIB_SRCDIR () echo "$0: getting gnulib files..." trap cleanup_gnulib HUP INT PIPE TERM gnulib_url=${GNULIB_URL:-$default_gnulib_url} - shallow= - if test -z "$GNULIB_REVISION"; then - if git clone -h 2>&1 | grep -- --depth > /dev/null; then - shallow='--depth 2' - fi - git clone $shallow "$gnulib_url" "$gnulib_path" \ - || cleanup_gnulib + if test -n "$GNULIB_REFDIR" && test -d "$GNULIB_REFDIR"/.git; then + # Use GNULIB_REFDIR as a reference. + git clone "$GNULIB_REFDIR" "$gnulib_path" \ + && git -C "$gnulib_path" remote set-url origin "$gnulib_url" \ + && if test -z "$GNULIB_REVISION"; then + git -C "$gnulib_path" pull origin \ + && { + # We want the default branch of "$gnulib_url" (since that's + # the behaviour if GNULIB_REFDIR is not specified), not the + # current branch of "$GNULIB_REFDIR". + default_branch=`LC_ALL=C git -C "$gnulib_path" \ + remote show origin \ + | sed -n -e 's/^ *HEAD branch: //p'` + test -n "$default_branch" || default_branch='master' + git -C "$gnulib_path" checkout "$default_branch" + } + else + # The 'git checkout "$GNULIB_REVISION"' command succeeds if the + # GNULIB_REVISION is a commit hash that exists locally, or if it + # is a branch name that can be fetched from origin. It fails, + # however, if the GNULIB_REVISION is a commit hash that only + # exists in origin. In this case, we need a 'git fetch' and then + # retry 'git checkout "$GNULIB_REVISION"'. + git -C "$gnulib_path" checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git -C "$gnulib_path" fetch origin \ + && git -C "$gnulib_path" checkout "$GNULIB_REVISION"; } + fi \ + || cleanup_gnulib else - if git fetch -h 2>&1 | grep -- --depth > /dev/null; then - shallow='--depth 2' + # GNULIB_REFDIR is not set or not usable. Ignore it. + shallow='--depth 2' + if test -z "$GNULIB_REVISION"; then + git clone $shallow "$gnulib_url" "$gnulib_path" \ + || cleanup_gnulib + else + # Only want a shallow checkout of $GNULIB_REVISION, but git does not + # support cloning by commit hash. So attempt a shallow fetch by + # commit hash to minimize the amount of data downloaded and changes + # needed to be processed, which can drastically reduce download and + # processing time for checkout. If the fetch by commit fails, a + # shallow fetch cannot be performed because we do not know what the + # depth of the commit is without fetching all commits. So fall back + # to fetching all commits. + # $GNULIB_REVISION can be a commit id, a tag name, or a branch name. + mkdir -p "$gnulib_path" + # Use a -c option to silence an annoying message + # "hint: Using 'master' as the name for the initial branch." + # (cf. ). + git -C "$gnulib_path" -c init.defaultBranch=master init + git -C "$gnulib_path" remote add origin "$gnulib_url" + if git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" + then + # "git fetch" of the specific commit succeeded. + git -C "$gnulib_path" reset --hard FETCH_HEAD \ + || cleanup_gnulib + # "git fetch" does not fetch tags (at least in git version 2.43). + # If $GNULIB_REVISION is a tag (not a commit id or branch name), + # add the tag explicitly. + revision=`git -C "$gnulib_path" log -1 --pretty=format:%H` + branch=`LC_ALL=C git -C "$gnulib_path" remote show origin \ + | sed -n -e 's/^ \([^ ]*\) * tracked$/\1/p'` + test "$revision" = "$GNULIB_REVISION" \ + || test "$branch" = "$GNULIB_REVISION" \ + || git -C "$gnulib_path" tag "$GNULIB_REVISION" + else + # Fetch the entire repository. + git -C "$gnulib_path" fetch origin \ + || cleanup_gnulib + git -C "$gnulib_path" checkout "$GNULIB_REVISION" \ + || cleanup_gnulib + fi fi - mkdir -p "$gnulib_path" - # Only want a shallow checkout of $GNULIB_REVISION, but git does not - # support cloning by commit hash. So attempt a shallow fetch by commit - # hash to minimize the amount of data downloaded and changes needed to - # be processed, which can drastically reduce download and processing - # time for checkout. If the fetch by commit fails, a shallow fetch can - # not be performed because we do not know what the depth of the commit - # is without fetching all commits. So fall back to fetching all - # commits. - git -C "$gnulib_path" init - git -C "$gnulib_path" remote add origin "$gnulib_url" - git -C "$gnulib_path" fetch $shallow origin "$GNULIB_REVISION" \ - || git -C "$gnulib_path" fetch origin \ - || cleanup_gnulib - git -C "$gnulib_path" reset --hard FETCH_HEAD - (cd "$gnulib_path" && git checkout "$GNULIB_REVISION") \ - || cleanup_gnulib fi trap - HUP INT PIPE TERM else @@ -583,16 +630,15 @@ prepare_GNULIB_SRCDIR () if test -n "$GNULIB_REVISION"; then if test -d "$gnulib_path/.git"; then # The 'git checkout "$GNULIB_REVISION"' command succeeds if the - # GNULIB_REVISION is a commit hash that exists locally, or if it is - # branch name that can be fetched from origin. It fails, however, - # if the GNULIB_REVISION is a commit hash that only exists in - # origin. In this case, we need a 'git fetch' and then retry - # 'git checkout "$GNULIB_REVISION"'. - (cd "$gnulib_path" \ - && { git checkout "$GNULIB_REVISION" 2>/dev/null \ - || { git fetch origin && git checkout "$GNULIB_REVISION"; } - } - ) || exit $? + # GNULIB_REVISION is a commit hash that exists locally, or if it + # is a branch name that can be fetched from origin. It fails, + # however, if the GNULIB_REVISION is a commit hash that only + # exists in origin. In this case, we need a 'git fetch' and then + # retry 'git checkout "$GNULIB_REVISION"'. + git -C "$gnulib_path" checkout "$GNULIB_REVISION" 2>/dev/null \ + || { git -C "$gnulib_path" fetch origin \ + && git -C "$gnulib_path" checkout "$GNULIB_REVISION"; } \ + || exit $? else die "Error: GNULIB_REVISION is specified in bootstrap.conf," \ "but '$gnulib_path' contains no git history" @@ -722,7 +768,8 @@ Gnulib sources can be fetched in various ways: * Otherwise, if the 'gnulib' directory does not exist, Gnulib sources are cloned into that directory using git from \$GNULIB_URL, defaulting - to $default_gnulib_url. + to $default_gnulib_url; if GNULIB_REFDIR is set and is a git repository + its contents may be used to accelerate the process. If the configuration variable GNULIB_REVISION is set in bootstrap.conf, then that revision is checked out. @@ -890,9 +937,7 @@ update_po_files() { && ls "$ref_po_dir"/*.po 2>/dev/null | sed 's|.*/||; s|\.po$||' > "$po_dir/LINGUAS" || return - langs=$(cd $ref_po_dir && echo *.po | sed 's/\.po//g') - test "$langs" = '*' && langs=x - for po in $langs; do + for po in x $(ls $ref_po_dir | sed -n 's/\.po$//p'); do case $po in x) continue;; esac new_po="$ref_po_dir/$po.po" cksum_file="$ref_po_dir/$po.s1" @@ -1355,7 +1400,7 @@ autogen() || die 'cannot generate runtime-po/Makevars' # Copy identical files from po to runtime-po. - (cd po && cp -p Makefile.in.in *-quot *.header *.sed *.sin ../runtime-po) + cp -p po/Makefile.in.in po/*-quot po/*.header po/*.sed po/*.sin runtime-po fi fi @@ -1457,7 +1502,8 @@ Gnulib sources can be fetched in various ways: * Otherwise, if the 'gnulib' directory does not exist, Gnulib sources are cloned into that directory using git from \$GNULIB_URL, defaulting - to $default_gnulib_url. + to $default_gnulib_url; if GNULIB_REFDIR is set and is a git repository + its contents may be used to accelerate the process. If the configuration variable GNULIB_REVISION is set in bootstrap.conf, then that revision is checked out. diff --git a/bootstrap.conf b/bootstrap.conf index 4f6242a..c9038c9 100644 --- a/bootstrap.conf +++ b/bootstrap.conf @@ -1,6 +1,6 @@ # Bootstrap configuration. -*- sh -*- -# Copyright (C) 2006-2024 Free Software Foundation, Inc. +# Copyright (C) 2006-2025 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/lib/.gitignore b/lib/.gitignore index 958dc92..e2e741c 100644 --- a/lib/.gitignore +++ b/lib/.gitignore @@ -1,5 +1,8 @@ +/alloca.h /alloca.in.h /arg-nonnull.h +/arpa/ +/arpa_inet.c /arpa_inet.in.h /assert.in.h /attribute.h @@ -26,11 +29,13 @@ /dup2.c /errno.in.h /error.c +/error.h /error.in.h /exitfail.c /exitfail.h /fclose.c /fcntl.c +/fcntl.h /fcntl.in.h /fd-hook.c /fd-hook.h @@ -40,6 +45,7 @@ /flexmember.h /float.c /float+.h +/float.h /float.in.h /fopen.c /fpending.c @@ -54,6 +60,8 @@ /ftell.c /ftello.c /getdtablesize.c +/getlocalename_l-unsafe.c +/getlocalename_l-unsafe.h /getopt1.c /getopt.c /getopt-cdefs.in.h @@ -74,6 +82,7 @@ /inet_pton.c /intprops.h /intprops-internal.h +/inttypes.h /inttypes.in.h /isnan.c /isnand.c @@ -83,9 +92,58 @@ /lc-charset-dispatch.c /lc-charset-dispatch.h /libc-config.h +/libdhcpd_pools.la +/libdhcpd_pools_la-arpa_inet.lo +/libdhcpd_pools_la-basename-lgpl.lo +/libdhcpd_pools_la-c32isprint.lo +/libdhcpd_pools_la-c-ctype.lo +/libdhcpd_pools_la-cloexec.lo +/libdhcpd_pools_la-closeout.lo +/libdhcpd_pools_la-close-stream.lo +/libdhcpd_pools_la-c-strcasecmp.lo +/libdhcpd_pools_la-exitfail.lo +/libdhcpd_pools_la-fclose.lo +/libdhcpd_pools_la-fcntl.lo +/libdhcpd_pools_la-fd-hook.lo +/libdhcpd_pools_la-fflush.lo +/libdhcpd_pools_la-float.lo +/libdhcpd_pools_la-fopen.lo +/libdhcpd_pools_la-fpurge.lo +/libdhcpd_pools_la-freading.lo +/libdhcpd_pools_la-fseek.lo +/libdhcpd_pools_la-fseeko.lo +/libdhcpd_pools_la-getprogname.lo +/libdhcpd_pools_la-hard-locale.lo +/libdhcpd_pools_la-ialloc.lo +/libdhcpd_pools_la-localcharset.lo +/libdhcpd_pools_la-malloca.lo +/libdhcpd_pools_la-math.lo +/libdhcpd_pools_la-mbrtoc32.lo +/libdhcpd_pools_la-mbrtowc.lo +/libdhcpd_pools_la-mbszero.lo +/libdhcpd_pools_la-mktime.lo +/libdhcpd_pools_la-nstrftime.lo +/libdhcpd_pools_la-progname.lo +/libdhcpd_pools_la-quotearg.lo +/libdhcpd_pools_la-reallocarray.lo +/libdhcpd_pools_la-realloc.lo +/libdhcpd_pools_la-setlocale_null.lo +/libdhcpd_pools_la-setlocale_null-unlocked.lo +/libdhcpd_pools_la-stat-time.lo +/libdhcpd_pools_la-stdlib.lo +/libdhcpd_pools_la-sys_socket.lo +/libdhcpd_pools_la-timegm.lo +/libdhcpd_pools_la-time_rz.lo +/libdhcpd_pools_la-unistd.lo +/libdhcpd_pools_la-wctype-h.lo +/libdhcpd_pools_la-xalloc-die.lo +/libdhcpd_pools_la-xmalloc.lo +/.libs/ +/limits.h /limits.in.h /localcharset.c /localcharset.h +/locale.h /locale.in.h /localename.h /localename-unsafe.c @@ -95,6 +153,7 @@ /malloca.h /malloc.c /math.c +/math.h /math.in.h /mbrtoc32.c /mbrtowc.c @@ -135,13 +194,18 @@ /stat-time.h /stat-w32.c /stat-w32.h +/stdckdint.h /stdckdint.in.h +/stddef.h /stddef.in.h /stdint.in.h +/stdio.h /stdio-impl.h /stdio.in.h /stdio-read.c /stdio-write.c +/stdlib.c +/stdlib.h /stdlib.in.h /stpncpy.c /strdup.c @@ -151,34 +215,44 @@ /strerror-override.h /strftime.c /strftime.h +/string.h /string.in.h /strstr.c /strtod.c /str-two-way.h +/sys/ /sys_socket.c /sys_socket.in.h /sys_stat.in.h /sys_types.in.h /sys_uio.in.h /timegm.c +/time.h /time.in.h /time-internal.h /time_r.c /time_rz.c /tzset.c +/uchar.h /uchar.in.h +/unictype/ /unictype/bitmap.h /unictype/ctype_print.c /unictype/ctype_print.h /unictype/.gitignore +/unictype.h /unictype.in.h /unistd.c +/unistd.h /unistd.in.h +/unitypes.h /unitypes.in.h /unsetenv.c /verify.h /warn-on-use.h +/wchar.h /wchar.in.h +/wctype.h /wctype-h.c /wctype.in.h /windows-initguard.h From d020e4d09f9a85d93d716d32f881a66092a32fa7 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 28 Apr 2025 14:15:40 +0100 Subject: [PATCH 51/53] output: update html javascripts Signed-off-by: Sami Kerola --- src/output.c | 8 ++++---- tests/expected/formats | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/output.c b/src/output.c index 2967688..4ff0a90 100644 --- a/src/output.c +++ b/src/output.c @@ -658,8 +658,8 @@ static void html_header(struct conf_t *state, FILE *restrict f) fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); - fprintf(f, "\n"); - fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); fprintf(f, "\n"); @@ -682,8 +682,8 @@ static void html_footer(FILE *restrict f) fprintf(f, "Generated using %s
      \n", PACKAGE_STRING); fprintf(f, "More info at %s\n", PACKAGE_URL, PACKAGE_URL); fprintf(f, "
    \n"); - fprintf(f, "\n"); - fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); fprintf(f, "\n"); diff --git a/tests/expected/formats b/tests/expected/formats index c619ccb..4023f89 100644 --- a/tests/expected/formats +++ b/tests/expected/formats @@ -23,8 +23,8 @@ All networks 100 43 43.000 0 43 43.000 - - + + @@ -178,8 +178,8 @@ table.dhcpd-pools th { text-transform: capitalize }
    - - + + From 1c413b065301f3d843b44f144d09844330fa2296 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 28 Apr 2025 14:35:05 +0100 Subject: [PATCH 52/53] release: 3.3 Signed-off-by: Sami Kerola --- NEWS | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/NEWS b/NEWS index ec50e67..624e0f2 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,28 @@ Please send dhcpd-pools bug reports to kerolasa@iki.fi. gpg: Signature is crated using RSA key ID 8ED396E37E38D471A00530D3A9553245FDE9B739. + +Version 3.3 +Belkacem Daheb (2): + add start, end and hostname printing support for xml and json + getdata output: add start, end and hostname printing support for xml and json + +M. van Brummelen (1): + docs: fix manual page groff warning + +Sami Kerola (9): + update project web page + website: use https + chore: update web links + getdata: only emit warning when config include file cannot be read + gnulib: update bootstrap and gitignore files + build-sys: quote subshell execution in the autotools file + build-sys: update bootstrap from gnulib + output: update html javascripts + release: 3.3 + +luisδμ (1): + fix: avoid generation of unvalid JSON in summary Version 3.2 Jean Benoit (1): From 1722d541034744ca3b21c4921b29e59a37e93b80 Mon Sep 17 00:00:00 2001 From: Sami Kerola Date: Mon, 28 Apr 2025 15:32:04 +0100 Subject: [PATCH 53/53] chore: update web pages Signed-off-by: Sami Kerola --- webpages/index.html | 9 +++++++++ webpages/sampleoutput.html | 34 ++++++---------------------------- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/webpages/index.html b/webpages/index.html index 839ba82..7d5b748 100644 --- a/webpages/index.html +++ b/webpages/index.html @@ -52,6 +52,15 @@ prompt> ./dhcpd-pools --config=/etc/dhcpd.conf href="https://dhcpd-pools.sourceforge.net/sampleoutput.html">sampleoutput.html
    +

    Is dhcpd-pools still developed?

    +

    In short no, it is not.

    +

    +ISC DHCPD has reached +EOL. Users are Kea DHCP server instead. Kea has native +statistics, so it does not require this tool and therefore the +dhcpd-pools is obsolte. +

    Where I can get dhcpd-pools?

    Download release package diff --git a/webpages/sampleoutput.html b/webpages/sampleoutput.html index 521b086..d27d3b6 100644 --- a/webpages/sampleoutput.html +++ b/webpages/sampleoutput.html @@ -5,8 +5,8 @@ - - + + @@ -14,7 +14,7 @@ table.dhcpd-pools th { text-transform: capitalize }

    ISC DHCPD status

    -File samples/dhcpd.leases was last modified at 2017-11-11T23:59:04+0000
    +File tests/leases/formats was last modified at 2025-04-15T14:32:48+0100

    Sum of all

    @@ -27,8 +27,6 @@ table.dhcpd-pools th { text-transform: capitalize } - - @@ -41,8 +39,6 @@ table.dhcpd-pools th { text-transform: capitalize } - -
    touch t+c t+c percbubu perc
    0 43 43.000243.000
    @@ -58,8 +54,6 @@ table.dhcpd-pools th { text-transform: capitalize } touch t+c t+c perc -bu -bu perc @@ -72,8 +66,6 @@ table.dhcpd-pools th { text-transform: capitalize } 0 21 52.500 -1 -2.500 example2 @@ -84,8 +76,6 @@ table.dhcpd-pools th { text-transform: capitalize } 0 17 42.500 -0 -0.000 @@ -103,8 +93,6 @@ table.dhcpd-pools th { text-transform: capitalize } touch t+c t+c perc -bu -bu perc @@ -119,8 +107,6 @@ table.dhcpd-pools th { text-transform: capitalize } 0 11 55.000 -1 -5.000 example1 @@ -133,8 +119,6 @@ table.dhcpd-pools th { text-transform: capitalize } 0 10 50.000 -0 -0.000 example2 @@ -147,8 +131,6 @@ table.dhcpd-pools th { text-transform: capitalize } 0 8 40.000 -0 -0.000 example2 @@ -161,8 +143,6 @@ table.dhcpd-pools th { text-transform: capitalize } 0 9 45.000 -0 -0.000 All networks @@ -175,17 +155,15 @@ table.dhcpd-pools th { text-transform: capitalize } 0 5 25.000 -1 -5.000
    -Generated using dhcpd-pools 3.0
    +Generated using dhcpd-pools 3.3
    More info at https://dhcpd-pools.sourceforge.net/
    - - + +