34#include "nl-default.h"
36#include <netlink/netlink.h>
37#include <netlink/utils.h>
38#include <netlink/route/rtnl.h>
39#include <netlink/route/route.h>
41#include "nl-priv-dynamic-core/nl-core.h"
48static NL_LIST_HEAD(table_names);
50static int add_routing_table_name(
long id,
const char *name)
52 return __trans_list_add(
id, name, &table_names);
55static void _nl_init init_routing_table_names(
void)
57 add_routing_table_name(RT_TABLE_UNSPEC,
"unspec");
58 add_routing_table_name(RT_TABLE_COMPAT,
"compat");
59 add_routing_table_name(RT_TABLE_DEFAULT,
"default");
60 add_routing_table_name(RT_TABLE_MAIN,
"main");
61 add_routing_table_name(RT_TABLE_LOCAL,
"local");
64static void _nl_exit release_routing_table_names(
void)
66 __trans_list_clear(&table_names);
69int rtnl_route_read_table_names(
const char *path)
71 __trans_list_clear(&table_names);
73 return __nl_read_num_str_file(path, &add_routing_table_name);
76char *rtnl_route_table2str(
int table,
char *buf,
size_t size)
78 return __list_type2str(table, buf, size, &table_names);
81int rtnl_route_str2table(
const char *name)
83 return __list_str2type(name, &table_names);
94static NL_LIST_HEAD(proto_names);
96static int add_proto_name(
long id,
const char *name)
98 return __trans_list_add(
id, name, &proto_names);
101static void _nl_init init_proto_names(
void)
103 add_proto_name(RTPROT_UNSPEC,
"unspec");
104 add_proto_name(RTPROT_REDIRECT,
"redirect");
105 add_proto_name(RTPROT_KERNEL,
"kernel");
106 add_proto_name(RTPROT_BOOT,
"boot");
107 add_proto_name(RTPROT_STATIC,
"static");
110static void _nl_exit release_proto_names(
void)
112 __trans_list_clear(&proto_names);
115int rtnl_route_read_protocol_names(
const char *path)
117 __trans_list_clear(&proto_names);
119 return __nl_read_num_str_file(path, &add_proto_name);
122char *rtnl_route_proto2str(
int proto,
char *buf,
size_t size)
124 return __list_type2str(proto, buf, size, &proto_names);
127int rtnl_route_str2proto(
const char *name)
129 return __list_str2type(name, &proto_names);
139static const struct trans_tbl route_metrices[] = {
140 __ADD(RTAX_UNSPEC, unspec),
141 __ADD(RTAX_LOCK, lock),
142 __ADD(RTAX_MTU, mtu),
143 __ADD(RTAX_WINDOW, window),
144 __ADD(RTAX_RTT, rtt),
145 __ADD(RTAX_RTTVAR, rttvar),
146 __ADD(RTAX_SSTHRESH, ssthresh),
147 __ADD(RTAX_CWND, cwnd),
148 __ADD(RTAX_ADVMSS, advmss),
149 __ADD(RTAX_REORDERING, reordering),
150 __ADD(RTAX_HOPLIMIT, hoplimit),
151 __ADD(RTAX_INITCWND, initcwnd),
152 __ADD(RTAX_FEATURES, features),
155char *rtnl_route_metric2str(
int metric,
char *buf,
size_t size)
157 return __type2str(metric, buf, size, route_metrices,
158 ARRAY_SIZE(route_metrices));
161int rtnl_route_str2metric(
const char *name)
163 return __str2type(name, route_metrices, ARRAY_SIZE(route_metrices));