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