/* * lib/doc.c Documentation Purpose * * 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 <tgraf@suug.ch> */ /** * @mainpage * * @section remarks Remarks * * @subsection cache_alloc Allocation of Caches * * Almost all subsystem provide a function to allocate a new cache * of some form. The function usually looks like this: * @code * struct nl_cache *<object name>_alloc_cache(struct nl_handle *handle) * @endcode * * These functions allocate a new cache for the own object type, * initializes it properly and updates it to represent the current * state of their master, e.g. a link cache would include all * links currently configured in the kernel. * * Some of the allocation functions may take additional arguments * to further specify what will be part of the cache. * * All such functions return a newly allocated cache or NULL * in case of an error. * * @subsection addr Setting of Addresses * @code * int <object name>_set_addr(struct nl_object *, struct nl_addr *) * @endcode * * All attribute functions avaiable for assigning addresses to objects * take a struct nl_addr argument. The provided address object is * validated against the address family of the object if known already. * The assignment fails if the address families mismatch. In case the * address family has not been specified yet, the address family of * the new address is elected to be the new requirement. * * The function will acquire a new reference on the address object * before assignment, the caller is NOT responsible for this. * * All functions return 0 on success or a negative error code. * * @subsection flags Flags to Character StringTranslations * All functions converting a set of flags to a character string follow * the same principles, therefore, the following information applies * to all functions convertings flags to a character string and vice versa. * * @subsubsection flags2str Flags to Character String * @code * char *<object name>_flags2str(int flags, char *buf, size_t len) * @endcode * @arg flags Flags. * @arg buf Destination buffer. * @arg len Buffer length. * * Converts the specified flags to a character string separated by * commas and stores it in the specified destination buffer. * * @return The destination buffer * * @subsubsection str2flags Character String to Flags * @code * int <object name>_str2flags(const char *name) * @endcode * @arg name Name of flag. * * Converts the provided character string specifying a flag * to the corresponding numeric value. * * @return Link flag or a negative value if none was found. * * @subsubsection type2str Type to Character String * @code * char *<object name>_<type>2str(int type, char *buf, size_t len) * @endcode * @arg type Type as numeric value * @arg buf Destination buffer. * @arg len Buffer length. * * Converts an identifier (type) to a character string and stores * it in the specified destination buffer. * * @return The destination buffer or the type encoded in hexidecimal * form if the identifier is unknown. * * @subsubsection str2type Character String to Type * @code * int <object name>_str2<type>(const char *name) * @endcode * @arg name Name of identifier (type). * * Converts the provided character string specifying a identifier * to the corresponding numeric value. * * @return Identifier as numeric value or a negative value if none was found. */