40 #include <netlink-local.h> 41 #include <netlink/netlink.h> 42 #include <netlink/utils.h> 43 #include <netlink/route/rtnl.h> 44 #include <netlink/route/route.h> 51 static NL_LIST_HEAD(table_names);
53 static int add_routing_table_name(
long id,
const char *name)
55 return __trans_list_add(
id, name, &table_names);
58 static void __init init_routing_table_names(
void)
60 add_routing_table_name(RT_TABLE_UNSPEC,
"unspec");
61 add_routing_table_name(RT_TABLE_DEFAULT,
"default");
62 add_routing_table_name(RT_TABLE_MAIN,
"main");
63 add_routing_table_name(RT_TABLE_LOCAL,
"local");
66 static void __exit release_routing_table_names(
void)
68 __trans_list_clear(&table_names);
71 int rtnl_route_read_table_names(
const char *path)
73 __trans_list_clear(&table_names);
75 return __nl_read_num_str_file(path, &add_routing_table_name);
78 char *rtnl_route_table2str(
int table,
char *buf,
size_t size)
80 return __list_type2str(table, buf, size, &table_names);
83 int rtnl_route_str2table(
const char *name)
85 return __list_str2type(name, &table_names);
96 static NL_LIST_HEAD(proto_names);
98 static int add_proto_name(
long id,
const char *name)
100 return __trans_list_add(
id, name, &proto_names);
103 static void __init init_proto_names(
void)
105 add_proto_name(RTPROT_UNSPEC,
"unspec");
106 add_proto_name(RTPROT_REDIRECT,
"redirect");
107 add_proto_name(RTPROT_KERNEL,
"kernel");
108 add_proto_name(RTPROT_BOOT,
"boot");
109 add_proto_name(RTPROT_STATIC,
"static");
112 static void __exit release_proto_names(
void)
114 __trans_list_clear(&proto_names);
117 int rtnl_route_read_protocol_names(
const char *path)
119 __trans_list_clear(&proto_names);
121 return __nl_read_num_str_file(path, &add_proto_name);
124 char *rtnl_route_proto2str(
int proto,
char *buf,
size_t size)
126 return __list_type2str(proto, buf, size, &proto_names);
129 int rtnl_route_str2proto(
const char *name)
131 return __list_str2type(name, &proto_names);
141 static struct trans_tbl route_metrices[] = {
142 __ADD(RTAX_UNSPEC, unspec)
143 __ADD(RTAX_LOCK, lock)
145 __ADD(RTAX_WINDOW, window)
147 __ADD(RTAX_RTTVAR, rttvar)
148 __ADD(RTAX_SSTHRESH, ssthresh)
149 __ADD(RTAX_CWND, cwnd)
150 __ADD(RTAX_ADVMSS, advmss)
151 __ADD(RTAX_REORDERING, reordering)
152 __ADD(RTAX_HOPLIMIT, hoplimit)
153 __ADD(RTAX_INITCWND, initcwnd)
154 __ADD(RTAX_FEATURES, features)
157 char *rtnl_route_metric2str(
int metric,
char *buf,
size_t size)
159 return __type2str(metric, buf, size, route_metrices,
160 ARRAY_SIZE(route_metrices));
163 int rtnl_route_str2metric(
const char *name)
165 return __str2type(name, route_metrices, ARRAY_SIZE(route_metrices));
175 static struct trans_tbl nh_flags[] = {
176 __ADD(RTNH_F_DEAD, dead)
177 __ADD(RTNH_F_PERVASIVE, pervasive)
178 __ADD(RTNH_F_ONLINK, onlink)
181 char * rtnl_route_nh_flags2str(
int flags,
char *buf,
size_t len)
183 return __flags2str(flags, buf, len, nh_flags, ARRAY_SIZE(nh_flags));
186 int rtnl_route_nh_str2flags(
const char *name)
188 return __str2flags(name, nh_flags, ARRAY_SIZE(nh_flags));