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