X-Git-Url: http://git.onelab.eu/?p=libnl.git;a=blobdiff_plain;f=include%2Fnetlink%2Froute%2Froute.h;fp=include%2Fnetlink%2Froute%2Froute.h;h=c8e00854067c57681e905f333c4f8c4db885c052;hp=0000000000000000000000000000000000000000;hb=4cee2ecb3b8afa0637e6f5fe4c57985a4bc740ff;hpb=2df2fbe518d5a221ce6e3ee88a3fb23fb1b94b27 diff --git a/include/netlink/route/route.h b/include/netlink/route/route.h new file mode 100644 index 0000000..c8e0085 --- /dev/null +++ b/include/netlink/route/route.h @@ -0,0 +1,95 @@ +/* + * netlink/route/route.h Routes + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation version 2.1 + * of the License. + * + * Copyright (c) 2003-2006 Thomas Graf + */ + +#ifndef NETLINK_ROUTE_H_ +#define NETLINK_ROUTE_H_ + +#include +#include +#include +#include +#include + +struct rtnl_route; + +/* General */ +extern struct rtnl_route * rtnl_route_alloc(void); +extern void rtnl_route_free(struct rtnl_route *); +extern struct nl_cache * rtnl_route_alloc_cache(struct nl_handle *); + +extern void rtnl_route_get(struct rtnl_route *); +extern void rtnl_route_put(struct rtnl_route *); + +/* Access Functions */ +extern void rtnl_route_set_table(struct rtnl_route *, int); +extern int rtnl_route_get_table(struct rtnl_route *); +extern void rtnl_route_set_scope(struct rtnl_route *, int); +extern int rtnl_route_get_scope(struct rtnl_route *); +extern void rtnl_route_set_tos(struct rtnl_route *, int); +extern int rtnl_route_get_tos(struct rtnl_route *); +extern void rtnl_route_set_realms(struct rtnl_route *, realm_t); +extern realm_t rtnl_route_get_realms(struct rtnl_route *); +extern void rtnl_route_set_protocol(struct rtnl_route *, int); +extern int rtnl_route_get_protocol(struct rtnl_route *); +extern void rtnl_route_set_prio(struct rtnl_route *, int); +extern int rtnl_route_get_prio(struct rtnl_route *); +extern void rtnl_route_set_family(struct rtnl_route *, int); +extern int rtnl_route_get_family(struct rtnl_route *); +extern void rtnl_route_set_type(struct rtnl_route *, int); +extern int rtnl_route_get_type(struct rtnl_route *); +extern void rtnl_route_set_flags(struct rtnl_route *, + unsigned int); +extern void rtnl_route_unset_flags(struct rtnl_route *, + unsigned int); +extern unsigned int rtnl_route_get_flags(struct rtnl_route *); +extern int rtnl_route_set_metric(struct rtnl_route *, int, + unsigned int); +extern int rtnl_route_unset_metric(struct rtnl_route *, int); +extern unsigned int rtnl_route_get_metric(struct rtnl_route *, int); +extern int rtnl_route_set_dst(struct rtnl_route *, + struct nl_addr *); +extern struct nl_addr * rtnl_route_get_dst(struct rtnl_route *); +extern int rtnl_route_set_src(struct rtnl_route *, + struct nl_addr *); +extern struct nl_addr * rtnl_route_get_src(struct rtnl_route *); +extern int rtnl_route_set_gateway(struct rtnl_route *, + struct nl_addr *); +extern struct nl_addr * rtnl_route_get_gateway(struct rtnl_route *); +extern int rtnl_route_set_pref_src(struct rtnl_route *, + struct nl_addr *); +extern struct nl_addr * rtnl_route_get_pref_src(struct rtnl_route *); +extern void rtnl_route_set_oif(struct rtnl_route *, int); +extern int rtnl_route_get_oif(struct rtnl_route *); +extern void rtnl_route_set_iif(struct rtnl_route *, const char *); +extern char * rtnl_route_get_iif(struct rtnl_route *); +extern void rtnl_route_set_dst_len(struct rtnl_route *, int); +extern int rtnl_route_get_dst_len(struct rtnl_route *); +extern void rtnl_route_set_src_len(struct rtnl_route *, int); +extern int rtnl_route_get_src_len(struct rtnl_route *); + +extern void rtnl_route_add_nexthop(struct rtnl_route *, + struct rtnl_nexthop *); +extern void rtnl_route_remove_nexthop(struct rtnl_nexthop *); +extern struct nl_list_head * rtnl_route_get_nexthops(struct rtnl_route *); + +extern char * rtnl_route_table2str(int, char *, size_t); +extern int rtnl_route_str2table(const char *); + +extern char * rtnl_route_proto2str(int, char *, size_t); +extern int rtnl_route_str2proto(const char *); + +extern char * rtnl_route_metric2str(int, char *, size_t); +extern int rtnl_route_str2metric(const char *); + +extern char * rtnl_route_nh_flags2str(int, char *, size_t); +extern int rtnl_route_nh_str2flags(const char *); + +#endif