util: add unit tests for CIDRFromMask()

pull/7349/head
Sascha Steinbiss 3 years ago committed by Victor Julien
parent 394356f73c
commit 5ec6f3ba51

@ -202,6 +202,7 @@ static void RegisterUnittests(void)
SourceWinDivertRegisterTests();
#endif
SCProtoNameRegisterTests();
UtilCIDRTests();
}
#endif

@ -25,6 +25,7 @@
#include "suricata-common.h"
#include "util-cidr.h"
#include "util-unittest.h"
/** \brief turn 32 bit mask into CIDR
* \retval cidr cidr value or -1 if the netmask can't be expressed as cidr
@ -94,3 +95,61 @@ void CIDRGetIPv6(int cidr, struct in6_addr *in6)
in6->s6_addr[i] = in6->s6_addr[i] >> 1;
}
}
#ifdef UNITTESTS
static int CIDRFromMaskTest01(void)
{
struct in_addr in;
int v = inet_pton(AF_INET, "255.255.255.0", &in);
FAIL_IF(v <= 0);
FAIL_IF_NOT(24 == CIDRFromMask(in.s_addr));
PASS;
}
static int CIDRFromMaskTest02(void)
{
struct in_addr in;
int v = inet_pton(AF_INET, "255.255.0.42", &in);
FAIL_IF(v <= 0);
FAIL_IF_NOT(-1 == CIDRFromMask(in.s_addr));
PASS;
}
static int CIDRFromMaskTest03(void)
{
struct in_addr in;
int v = inet_pton(AF_INET, "0.0.0.0", &in);
FAIL_IF(v <= 0);
FAIL_IF_NOT(0 == CIDRFromMask(in.s_addr));
PASS;
}
static int CIDRFromMaskTest04(void)
{
struct in_addr in;
int v = inet_pton(AF_INET, "255.255.255.255", &in);
FAIL_IF(v <= 0);
FAIL_IF_NOT(32 == CIDRFromMask(in.s_addr));
PASS;
}
#endif /* UNITTESTS */
void UtilCIDRTests(void)
{
#ifdef UNITTESTS
UtRegisterTest("CIDRFromMaskTest01", CIDRFromMaskTest01);
UtRegisterTest("CIDRFromMaskTest02", CIDRFromMaskTest02);
UtRegisterTest("CIDRFromMaskTest03", CIDRFromMaskTest03);
UtRegisterTest("CIDRFromMaskTest04", CIDRFromMaskTest04);
#endif /* UNITTESTS */
}

@ -28,5 +28,7 @@ int CIDRFromMask(uint32_t netmask);
uint32_t CIDRGet(int);
void CIDRGetIPv6(int cidr, struct in6_addr *in6);
void UtilCIDRTests(void);
#endif /* __UTIL_NETMASK_H__ */

Loading…
Cancel
Save