16ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/*
26ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * src/utils.h		Utilities
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-2009 Thomas Graf <tgraf@suug.ch>
106ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru */
116ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
126ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifndef __NETLINK_CLI_UTILS_H_
136ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#define __NETLINK_CLI_UTILS_H_
146ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
156ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <stdio.h>
166ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <string.h>
176ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <stdlib.h>
186ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <stdarg.h>
196ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <limits.h>
206ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <inttypes.h>
216ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <errno.h>
226ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <stdint.h>
236ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <ctype.h>
246ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <getopt.h>
256ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <dlfcn.h>
266ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <sys/types.h>
276ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <sys/socket.h>
286ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
296ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/netlink.h>
306ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/utils.h>
316ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/addr.h>
326ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/list.h>
336ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/rtnl.h>
346ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/link.h>
356ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/addr.h>
366ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/neighbour.h>
376ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/neightbl.h>
386ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/route.h>
396ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/rule.h>
406ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/qdisc.h>
416ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/class.h>
426ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/classifier.h>
436ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/cls/ematch.h>
446ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/fib_lookup/lookup.h>
456ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/fib_lookup/request.h>
466ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/genl/genl.h>
476ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/genl/ctrl.h>
486ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/genl/mngt.h>
496ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/netfilter/ct.h>
506ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
516ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifdef __cplusplus
526ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern "C" {
536ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif
546ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
556ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifndef __init
566ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#define __init __attribute__((constructor))
576ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif
586ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
596ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifndef __exit
606ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#define __exit __attribute__((destructor))
616ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif
626ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
636ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern uint32_t		nl_cli_parse_u32(const char *);
646ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void		nl_cli_print_version(void);
656ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void		nl_cli_fatal(int, const char *, ...);
666ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern struct nl_addr *	nl_cli_addr_parse(const char *, int);
676ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int		nl_cli_connect(struct nl_sock *, int);
686ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern struct nl_sock *	nl_cli_alloc_socket(void);
696ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int		nl_cli_parse_dumptype(const char *);
706ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int		nl_cli_confirm(struct nl_object *,
716ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru				       struct nl_dump_params *, int);
726ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
736ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern struct nl_cache *nl_cli_alloc_cache(struct nl_sock *, const char *,
746ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru			     int (*ac)(struct nl_sock *, struct nl_cache **));
756ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
766ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifdef __cplusplus
776ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru}
786ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif
796ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru
806ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif
81