diff options
Diffstat (limited to 'nest/rt-table.c')
-rw-r--r-- | nest/rt-table.c | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/nest/rt-table.c b/nest/rt-table.c index 7b5b5dc..4649132 100644 --- a/nest/rt-table.c +++ b/nest/rt-table.c @@ -79,7 +79,8 @@ rte_find(net *net, struct proto *p) /** * rte_get_temp - get a temporary &rte - * @a: attributes to assign to the new route (a &rta) + * @a: attributes to assign to the new route (a &rta; in case it's + * uncached, rte_update() will create a cached copy automatically) * * Create a temporary &rte and bind it with the attributes @a. * Also set route preference to the default preference set for @@ -438,6 +439,10 @@ rte_update_unlock(void) * for network @n, replace it by the new one (or removing it if @new is %NULL), * recalculate the optimal route for this destination and finally broadcast * the change (if any) to all routing protocols. + * + * All memory used for attribute lists and other temporary allocations is taken + * from a special linear pool @rte_update_pool and freed when rte_update() + * finishes. */ void rte_update(rtable *table, net *net, struct proto *p, rte *new) @@ -1046,3 +1051,56 @@ rt_show(struct rt_show_data *d) cli_msg(8001, "Network not in table"); } } + +/* + * Documentation for functions declared inline in route.h + */ +#if 0 + +/** + * net_find - find a network entry + * @tab: a routing table + * @addr: address of the network + * @len: length of the network prefix + * + * net_find() looks up the given network in routing table @tab and + * returns a pointer to its &net entry or %NULL if no such network + * exists. + */ +static inline net *net_find(rtable *tab, ip_addr addr, unsigned len) +{ DUMMY; } + +/** + * net_get - obtain a network entry + * @tab: a routing table + * @addr: address of the network + * @len: length of the network prefix + * + * net_get() looks up the given network in routing table @tab and + * returns a pointer to its &net entry. If no such entry exists, it's + * created. + */ +static inline net *net_get(rtable *tab, ip_addr addr, unsigned len) +{ DUMMY; } + +/** + * rte_cow - copy a route for writing + * @r: a route entry to be copied + * + * rte_cow() takes a &rte and prepares it for modification. The exact action + * taken depends on the flags of the &rte -- if it's a temporary entry, it's + * just returned unchanged, else a new temporary entry with the same contents + * is created. + * + * The primary use of this function is inside the filter machinery -- when + * a filter wants to modify &rte contents (to change the preference or to + * attach another set of attributes), it must ensure that the &rte is not + * shared with anyone else (and especially that it isn't stored in any routing + * table). + * + * Result: a pointer to the new writeable &rte. + */ +static inline rte * rte_cow(rte *r) +{ DUMMY; } + +#endif |