Home | History | Annotate | Download | only in route
      1 /*
      2  * netlink/route/rtnl.h		Routing Netlink
      3  *
      4  *	This library is free software; you can redistribute it and/or
      5  *	modify it under the terms of the GNU Lesser General Public
      6  *	License as published by the Free Software Foundation version 2.1
      7  *	of the License.
      8  *
      9  * Copyright (c) 2003-2008 Thomas Graf <tgraf (at) suug.ch>
     10  */
     11 
     12 #ifndef NETLINK_RTNL_H_
     13 #define NETLINK_RTNL_H_
     14 
     15 #include <netlink/netlink.h>
     16 
     17 #ifdef __cplusplus
     18 extern "C" {
     19 #endif
     20 
     21 /**
     22  * @name Realms
     23  * @{
     24  */
     25 
     26 /**
     27  * Mask specying the size of each realm part
     28  * @ingroup rtnl
     29  */
     30 #define RTNL_REALM_MASK (0xFFFF)
     31 
     32 /**
     33  * Extract FROM realm from a realms field
     34  */
     35 #define RTNL_REALM_FROM(realm) ((realm) >> 16)
     36 
     37 /**
     38  * Extract TO realm from a realms field
     39  */
     40 #define RTNL_REALM_TO(realm) ((realm) & RTNL_REALM_MASK)
     41 
     42 /**
     43  * Build a realms field
     44  */
     45 #define RTNL_MAKE_REALM(from, to) \
     46 	((RTNL_REALM_TO(from) << 16) & RTNL_REALM_TO(to))
     47 
     48 /** @} */
     49 
     50 
     51 /* General */
     52 extern int		nl_rtgen_request(struct nl_sock *, int, int, int);
     53 
     54 /* Routing Type Translations */
     55 extern char *		nl_rtntype2str(int, char *, size_t);
     56 extern int		nl_str2rtntype(const char *);
     57 
     58 /* Scope Translations */
     59 extern char *		rtnl_scope2str(int, char *, size_t);
     60 extern int		rtnl_str2scope(const char *);
     61 
     62 /* Realms Translations */
     63 extern char *		rtnl_realms2str(uint32_t, char *, size_t);
     64 
     65 #ifdef __cplusplus
     66 }
     67 #endif
     68 
     69 #endif
     70