blob: db1f48ddc25560e580170d9afc8df947c0adb9c4 [file] [log] [blame]
/* SPDX-License-Identifier: LGPL-2.1-only */
#include "nl-default.h"
#include <check.h>
#include <linux/snmp.h>
#include <netlink/route/link.h>
#include "nl-priv-static-route/nl-priv-static-route.h"
START_TEST(static_checks)
{
int i, j;
char strbuf[100];
_NL_STATIC_ASSERT(RTNL_LINK_RX_PACKETS == 0);
assert(_nltst_map_stat_id_from_IPSTATS_MIB_v2[0] ==
RTNL_LINK_RX_PACKETS);
for (i = 1; i < __IPSTATS_MIB_MAX; i++) {
assert(_nltst_map_stat_id_from_IPSTATS_MIB_v2[i] > 0);
assert(_nltst_map_stat_id_from_IPSTATS_MIB_v2[i] <
__RTNL_LINK_STATS_MAX);
for (j = 1; j < i; j++)
assert(_nltst_map_stat_id_from_IPSTATS_MIB_v2[i] !=
_nltst_map_stat_id_from_IPSTATS_MIB_v2[j]);
}
for (i = 0; i <= RTNL_LINK_STATS_MAX + 1; i++) {
const char *s;
s = rtnl_link_stat2str(i, strbuf, sizeof(strbuf));
assert(s);
assert(s == strbuf);
assert(strlen(s) < sizeof(strbuf));
if (strncmp(s, "0x", 2) == 0) {
assert(i == RTNL_LINK_STATS_MAX + 1);
ck_assert_int_eq(strtoll(&s[2], NULL, 16), i);
} else
ck_assert_int_le(i, RTNL_LINK_STATS_MAX);
ck_assert_int_eq(i, rtnl_link_str2stat(s));
}
ck_assert_int_eq(nl_str2ip_proto(""), -NLE_OBJ_NOTFOUND);
ck_assert_int_eq(nl_str2ip_proto("5"), 5);
ck_assert_int_eq(nl_str2ip_proto(" 13 "), -NLE_OBJ_NOTFOUND);
ck_assert_int_eq(nl_str2ip_proto("13"), 13);
ck_assert_int_eq(nl_str2ip_proto("0x13"), 0x13);
ck_assert_int_eq(nl_str2ip_proto("0342"), 0342);
ck_assert_int_eq(nl_str2ip_proto("2147483647"), 2147483647);
ck_assert_int_eq(nl_str2ip_proto("2147483648"), -NLE_OBJ_NOTFOUND);
}
END_TEST
static Suite *make_suite(void)
{
Suite *suite = suite_create("Direct");
TCase *tc = tcase_create("Core");
tcase_add_test(tc, static_checks);
suite_add_tcase(suite, tc);
return suite;
}
int main(int argc, char *argv[])
{
SRunner *runner;
int nfailed;
runner = srunner_create(suite_create("main"));
srunner_add_suite(runner, make_suite());
srunner_run_all(runner, CK_ENV);
nfailed = srunner_ntests_failed(runner);
srunner_free(runner);
return nfailed != 0;
}