/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "libnm-glib-aux/nm-default-glib-i18n-lib.h" #include "nm-net-aux.h" #include #include /*****************************************************************************/ G_STATIC_ASSERT((int) FR_ACT_UNSPEC == RTN_UNSPEC); G_STATIC_ASSERT((int) FR_ACT_TO_TBL == RTN_UNICAST); G_STATIC_ASSERT((int) FR_ACT_GOTO == RTN_LOCAL); G_STATIC_ASSERT((int) FR_ACT_NOP == RTN_BROADCAST); G_STATIC_ASSERT((int) FR_ACT_RES3 == RTN_ANYCAST); G_STATIC_ASSERT((int) FR_ACT_RES4 == RTN_MULTICAST); G_STATIC_ASSERT((int) FR_ACT_BLACKHOLE == RTN_BLACKHOLE); G_STATIC_ASSERT((int) FR_ACT_UNREACHABLE == RTN_UNREACHABLE); G_STATIC_ASSERT((int) FR_ACT_PROHIBIT == RTN_PROHIBIT); /* see iproute2's rtnl_rtntype_a2n() */ NM_UTILS_STRING_TABLE_LOOKUP_DEFINE( nm_net_aux_rtnl_rtntype_a2n, int, { nm_assert(name); }, { NM_AUTO_PROTECT_ERRNO(errsv); return _nm_utils_ascii_str_to_int64(name, 0, 0, 255, -1); }, {"anycast", RTN_ANYCAST}, {"blackhole", RTN_BLACKHOLE}, {"brd", RTN_BROADCAST}, {"broadcast", RTN_BROADCAST}, {"local", RTN_LOCAL}, {"multicast", RTN_MULTICAST}, {"nat", RTN_NAT}, {"prohibit", RTN_PROHIBIT}, {"throw", RTN_THROW}, {"unicast", RTN_UNICAST}, {"unreachable", RTN_UNREACHABLE}, {"xresolve", RTN_XRESOLVE}, ); const char * nm_net_aux_rtnl_rtntype_n2a(guint8 v) { /* see iproute2's rtnl_rtntype_n2a(). */ switch (v) { case RTN_UNSPEC: return "none"; case RTN_UNICAST: return "unicast"; case RTN_LOCAL: return "local"; case RTN_BROADCAST: return "broadcast"; case RTN_ANYCAST: return "anycast"; case RTN_MULTICAST: return "multicast"; case RTN_BLACKHOLE: return "blackhole"; case RTN_UNREACHABLE: return "unreachable"; case RTN_PROHIBIT: return "prohibit"; case RTN_THROW: return "throw"; case RTN_NAT: return "nat"; case RTN_XRESOLVE: return "xresolve"; } /* unlike the iproute2 code, this returns %NULL for unknown values. * You may represent this value as "%d" integer, but do it yourself. */ return NULL; }