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