owipcalc: fix contains not respect default route 14539/head
authorNick Hainke <vincent@systemli.org>
Sat, 23 Jan 2021 12:48:11 +0000 (13:48 +0100)
committerNick Hainke <vincent@systemli.org>
Sat, 23 Jan 2021 16:48:18 +0000 (17:48 +0100)
commite974acaac78d8b90bd9e5cbd81010593ec725cbb
tree74049c7e23b0a5f02e1bd6c3a4090694873f87ef
parent64c917b702c70d1c5193c8cb85ebfe3b3485082c
owipcalc: fix contains not respect default route

In IPv4 the default route can be written as
 0.0.0.0/0

In IPv6 the default route can be written as
 ::/0

If u try
  owipcalc 0.0.0.0/0 contains 1.1.1.1
or
  owipcalc ::/0 contains ::1
owipcalc will respond with 0 meaning that the "default prefixes" do not
contain the routes.
That is why we check now for 0 prefix.

Furthermore, if the prefix is 0, i will be 16. We will access a negative
array entry in the line:
 uint8_t net1 = x->s6_addr[15-i] & m;

Divide by % 16 to prevent i becoming 16:
 uint8_t i = ((128 - a->prefix) / 8) % 16;

Signed-off-by: Nick Hainke <vincent@systemli.org>
net/owipcalc/Makefile
net/owipcalc/src/owipcalc.c