16ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* 26ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * netlink/utils.h Utility Functions 36ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * 46ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * This library is free software; you can redistribute it and/or 56ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * modify it under the terms of the GNU Lesser General Public 66ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * License as published by the Free Software Foundation version 2.1 76ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * of the License. 86ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * 96ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch> 106ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru */ 116ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 126ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifndef NETLINK_UTILS_H_ 136ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#define NETLINK_UTILS_H_ 146ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 156ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/netlink.h> 166ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/list.h> 176ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 186ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifdef __cplusplus 196ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern "C" { 206ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif 216ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 226ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/** 236ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * @name Probability Constants 246ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * @{ 256ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru */ 266ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 276ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/** 286ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * Lower probability limit 296ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * @ingroup utils 306ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru */ 316ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#define NL_PROB_MIN 0x0 326ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 336ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/** 346ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * Upper probability limit 356ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * @ingroup utils 366ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru */ 376ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#define NL_PROB_MAX 0xffffffff 386ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 396ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/** @} */ 406ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 416ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* unit pretty-printing */ 426ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern double nl_cancel_down_bytes(unsigned long long, char **); 436ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern double nl_cancel_down_bits(unsigned long long, char **); 446ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern double nl_cancel_down_us(uint32_t, char **); 456ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 466ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* generic unit translations */ 476ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern long nl_size2int(const char *); 486ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern long nl_prob2int(const char *); 496ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 506ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* time translations */ 516ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int nl_get_hz(void); 526ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern uint32_t nl_us2ticks(uint32_t); 536ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern uint32_t nl_ticks2us(uint32_t); 546ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int nl_str2msec(const char *, uint64_t *); 556ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern char * nl_msec2str(uint64_t, char *, size_t); 566ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 576ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* link layer protocol translations */ 586ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern char * nl_llproto2str(int, char *, size_t); 596ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int nl_str2llproto(const char *); 606ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 616ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* ethernet protocol translations */ 626ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern char * nl_ether_proto2str(int, char *, size_t); 636ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int nl_str2ether_proto(const char *); 646ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 656ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* IP protocol translations */ 666ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern char * nl_ip_proto2str(int, char *, size_t); 676ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int nl_str2ip_proto(const char *); 686ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 696ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* Dumping helpers */ 706ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void nl_new_line(struct nl_dump_params *); 716ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void nl_dump(struct nl_dump_params *, const char *, ...); 726ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void nl_dump_line(struct nl_dump_params *, const char *, ...); 736ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 746ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifdef __cplusplus 756ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru} 766ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif 776ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 786ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif 79