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 18extern "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 */ 52extern int nl_rtgen_request(struct nl_sock *, int, int, int); 53 54/* Routing Type Translations */ 55extern char * nl_rtntype2str(int, char *, size_t); 56extern int nl_str2rtntype(const char *); 57 58/* Scope Translations */ 59extern char * rtnl_scope2str(int, char *, size_t); 60extern int rtnl_str2scope(const char *); 61 62/* Realms Translations */ 63extern char * rtnl_realms2str(uint32_t, char *, size_t); 64 65#ifdef __cplusplus 66} 67#endif 68 69#endif 70