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