144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* 244d362409d5469aed47d19e7908d19bd194493aThomas Graf * netlink/route/rtnl.h Routing Netlink 344d362409d5469aed47d19e7908d19bd194493aThomas Graf * 444d362409d5469aed47d19e7908d19bd194493aThomas Graf * This library is free software; you can redistribute it and/or 544d362409d5469aed47d19e7908d19bd194493aThomas Graf * modify it under the terms of the GNU Lesser General Public 644d362409d5469aed47d19e7908d19bd194493aThomas Graf * License as published by the Free Software Foundation version 2.1 744d362409d5469aed47d19e7908d19bd194493aThomas Graf * of the License. 844d362409d5469aed47d19e7908d19bd194493aThomas Graf * 91155370f520cb64657e25153255cf7dc1424317fThomas Graf * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch> 1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 1144d362409d5469aed47d19e7908d19bd194493aThomas Graf 1244d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef NETLINK_RTNL_H_ 1344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NETLINK_RTNL_H_ 1444d362409d5469aed47d19e7908d19bd194493aThomas Graf 1544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/netlink.h> 1644d362409d5469aed47d19e7908d19bd194493aThomas Graf 1744d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus 1844d362409d5469aed47d19e7908d19bd194493aThomas Grafextern "C" { 1944d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 2044d362409d5469aed47d19e7908d19bd194493aThomas Graf 2144d362409d5469aed47d19e7908d19bd194493aThomas Graf/** 2244d362409d5469aed47d19e7908d19bd194493aThomas Graf * @name Realms 2344d362409d5469aed47d19e7908d19bd194493aThomas Graf * @{ 2444d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 2544d362409d5469aed47d19e7908d19bd194493aThomas Graf 2644d362409d5469aed47d19e7908d19bd194493aThomas Graf/** 2744d362409d5469aed47d19e7908d19bd194493aThomas Graf * Mask specying the size of each realm part 2844d362409d5469aed47d19e7908d19bd194493aThomas Graf * @ingroup rtnl 2944d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 3044d362409d5469aed47d19e7908d19bd194493aThomas Graf#define RTNL_REALM_MASK (0xFFFF) 3144d362409d5469aed47d19e7908d19bd194493aThomas Graf 3244d362409d5469aed47d19e7908d19bd194493aThomas Graf/** 3344d362409d5469aed47d19e7908d19bd194493aThomas Graf * Extract FROM realm from a realms field 3444d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 3544d362409d5469aed47d19e7908d19bd194493aThomas Graf#define RTNL_REALM_FROM(realm) ((realm) >> 16) 3644d362409d5469aed47d19e7908d19bd194493aThomas Graf 3744d362409d5469aed47d19e7908d19bd194493aThomas Graf/** 3844d362409d5469aed47d19e7908d19bd194493aThomas Graf * Extract TO realm from a realms field 3944d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 4044d362409d5469aed47d19e7908d19bd194493aThomas Graf#define RTNL_REALM_TO(realm) ((realm) & RTNL_REALM_MASK) 4144d362409d5469aed47d19e7908d19bd194493aThomas Graf 4244d362409d5469aed47d19e7908d19bd194493aThomas Graf/** 4344d362409d5469aed47d19e7908d19bd194493aThomas Graf * Build a realms field 4444d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 4544d362409d5469aed47d19e7908d19bd194493aThomas Graf#define RTNL_MAKE_REALM(from, to) \ 4644d362409d5469aed47d19e7908d19bd194493aThomas Graf ((RTNL_REALM_TO(from) << 16) & RTNL_REALM_TO(to)) 4744d362409d5469aed47d19e7908d19bd194493aThomas Graf 4844d362409d5469aed47d19e7908d19bd194493aThomas Graf/** @} */ 4944d362409d5469aed47d19e7908d19bd194493aThomas Graf 5044d362409d5469aed47d19e7908d19bd194493aThomas Graf 5144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* General */ 521155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int nl_rtgen_request(struct nl_sock *, int, int, int); 5344d362409d5469aed47d19e7908d19bd194493aThomas Graf 5444d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Routing Type Translations */ 5544d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char * nl_rtntype2str(int, char *, size_t); 5644d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int nl_str2rtntype(const char *); 5744d362409d5469aed47d19e7908d19bd194493aThomas Graf 5844d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Scope Translations */ 5944d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char * rtnl_scope2str(int, char *, size_t); 6044d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int rtnl_str2scope(const char *); 6144d362409d5469aed47d19e7908d19bd194493aThomas Graf 6244d362409d5469aed47d19e7908d19bd194493aThomas Graf/* Realms Translations */ 6344d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char * rtnl_realms2str(uint32_t, char *, size_t); 6444d362409d5469aed47d19e7908d19bd194493aThomas Graf 6544d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus 6644d362409d5469aed47d19e7908d19bd194493aThomas Graf} 6744d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 6844d362409d5469aed47d19e7908d19bd194493aThomas Graf 6944d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 70