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@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