144d362409d5469aed47d19e7908d19bd194493aThomas Graf/*
244d362409d5469aed47d19e7908d19bd194493aThomas Graf * netlink/utils.h		Utility Functions
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 *
98a3efffa5b3fde252675239914118664d36a2c24Thomas Graf * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */
1144d362409d5469aed47d19e7908d19bd194493aThomas Graf
1244d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef NETLINK_UTILS_H_
1344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NETLINK_UTILS_H_
1444d362409d5469aed47d19e7908d19bd194493aThomas Graf
1544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/netlink.h>
1644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/list.h>
1744d362409d5469aed47d19e7908d19bd194493aThomas Graf
1844d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus
1944d362409d5469aed47d19e7908d19bd194493aThomas Grafextern "C" {
2044d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif
2144d362409d5469aed47d19e7908d19bd194493aThomas Graf
2244d362409d5469aed47d19e7908d19bd194493aThomas Graf/**
2344d362409d5469aed47d19e7908d19bd194493aThomas Graf * @name Probability Constants
2444d362409d5469aed47d19e7908d19bd194493aThomas Graf * @{
2544d362409d5469aed47d19e7908d19bd194493aThomas Graf */
2644d362409d5469aed47d19e7908d19bd194493aThomas Graf
2744d362409d5469aed47d19e7908d19bd194493aThomas Graf/**
2844d362409d5469aed47d19e7908d19bd194493aThomas Graf * Lower probability limit
2944d362409d5469aed47d19e7908d19bd194493aThomas Graf * @ingroup utils
3044d362409d5469aed47d19e7908d19bd194493aThomas Graf */
3144d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_PROB_MIN 0x0
3244d362409d5469aed47d19e7908d19bd194493aThomas Graf
3344d362409d5469aed47d19e7908d19bd194493aThomas Graf/**
3444d362409d5469aed47d19e7908d19bd194493aThomas Graf * Upper probability limit
3544d362409d5469aed47d19e7908d19bd194493aThomas Graf * @ingroup utils
3644d362409d5469aed47d19e7908d19bd194493aThomas Graf */
3744d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_PROB_MAX 0xffffffff
3844d362409d5469aed47d19e7908d19bd194493aThomas Graf
3944d362409d5469aed47d19e7908d19bd194493aThomas Graf/** @} */
4044d362409d5469aed47d19e7908d19bd194493aThomas Graf
4144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* unit pretty-printing */
4244d362409d5469aed47d19e7908d19bd194493aThomas Grafextern double	nl_cancel_down_bytes(unsigned long long, char **);
4344d362409d5469aed47d19e7908d19bd194493aThomas Grafextern double	nl_cancel_down_bits(unsigned long long, char **);
4444d362409d5469aed47d19e7908d19bd194493aThomas Grafextern double	nl_cancel_down_us(uint32_t, char **);
4544d362409d5469aed47d19e7908d19bd194493aThomas Graf
4644d362409d5469aed47d19e7908d19bd194493aThomas Graf/* generic unit translations */
4744d362409d5469aed47d19e7908d19bd194493aThomas Grafextern long	nl_size2int(const char *);
4844d362409d5469aed47d19e7908d19bd194493aThomas Grafextern long	nl_prob2int(const char *);
4944d362409d5469aed47d19e7908d19bd194493aThomas Graf
5044d362409d5469aed47d19e7908d19bd194493aThomas Graf/* time translations */
5144d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int	nl_get_hz(void);
5244d362409d5469aed47d19e7908d19bd194493aThomas Grafextern uint32_t	nl_us2ticks(uint32_t);
5344d362409d5469aed47d19e7908d19bd194493aThomas Grafextern uint32_t	nl_ticks2us(uint32_t);
54c48a17694b6719606fa76fdad8a5cef3289cb42cThomas Grafextern int	nl_str2msec(const char *, uint64_t *);
5544d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char *	nl_msec2str(uint64_t, char *, size_t);
5644d362409d5469aed47d19e7908d19bd194493aThomas Graf
5744d362409d5469aed47d19e7908d19bd194493aThomas Graf/* link layer protocol translations */
5844d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char *	nl_llproto2str(int, char *, size_t);
5944d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int	nl_str2llproto(const char *);
6044d362409d5469aed47d19e7908d19bd194493aThomas Graf
6144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* ethernet protocol translations */
6244d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char *	nl_ether_proto2str(int, char *, size_t);
6344d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int	nl_str2ether_proto(const char *);
6444d362409d5469aed47d19e7908d19bd194493aThomas Graf
6544d362409d5469aed47d19e7908d19bd194493aThomas Graf/* IP protocol translations */
6644d362409d5469aed47d19e7908d19bd194493aThomas Grafextern char *	nl_ip_proto2str(int, char *, size_t);
6744d362409d5469aed47d19e7908d19bd194493aThomas Grafextern int	nl_str2ip_proto(const char *);
6844d362409d5469aed47d19e7908d19bd194493aThomas Graf
69508685c269275cb7ba3471c75abc689b4e3839b1Thomas Graf/* Dumping helpers */
70662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Grafextern void	nl_new_line(struct nl_dump_params *);
71508685c269275cb7ba3471c75abc689b4e3839b1Thomas Grafextern void	nl_dump(struct nl_dump_params *, const char *, ...);
72662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Grafextern void	nl_dump_line(struct nl_dump_params *, const char *, ...);
73508685c269275cb7ba3471c75abc689b4e3839b1Thomas Graf
7444d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus
7544d362409d5469aed47d19e7908d19bd194493aThomas Graf}
7644d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif
7744d362409d5469aed47d19e7908d19bd194493aThomas Graf
7844d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif
79