144d362409d5469aed47d19e7908d19bd194493aThomas Graf/* 244d362409d5469aed47d19e7908d19bd194493aThomas Graf * src/utils.h Utilities 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 * 98808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch> 1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 1144d362409d5469aed47d19e7908d19bd194493aThomas Graf 128808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#ifndef __NETLINK_CLI_UTILS_H_ 138808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#define __NETLINK_CLI_UTILS_H_ 1444d362409d5469aed47d19e7908d19bd194493aThomas Graf 1544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <stdio.h> 1644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <string.h> 1744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <stdlib.h> 188808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <stdarg.h> 198808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <limits.h> 2044d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <inttypes.h> 2144d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <errno.h> 2244d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <stdint.h> 232a09497fa43699320346a224829e764448406537Thomas Graf#include <ctype.h> 2444d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <getopt.h> 258808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <dlfcn.h> 2644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <sys/types.h> 2744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <sys/socket.h> 2844d362409d5469aed47d19e7908d19bd194493aThomas Graf 2944d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/netlink.h> 3044d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/utils.h> 3144d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/addr.h> 328808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#include <netlink/list.h> 3344d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/rtnl.h> 3444d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/link.h> 3544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/addr.h> 3644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/neighbour.h> 3744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/neightbl.h> 3844d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/route.h> 3944d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/rule.h> 4044d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/qdisc.h> 4144d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/class.h> 4244d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/route/classifier.h> 43ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#include <netlink/route/cls/ematch.h> 4444d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/fib_lookup/lookup.h> 4544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/fib_lookup/request.h> 4644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/genl/genl.h> 4744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/genl/ctrl.h> 4844d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/genl/mngt.h> 4944d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/netfilter/ct.h> 5044d362409d5469aed47d19e7908d19bd194493aThomas Graf 518808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#ifdef __cplusplus 528808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern "C" { 538808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#endif 548808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 55ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#ifndef __init 56ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#define __init __attribute__((constructor)) 57ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#endif 58ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf 59ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#ifndef __exit 60ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#define __exit __attribute__((destructor)) 61ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#endif 62ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf 638808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern uint32_t nl_cli_parse_u32(const char *); 648808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern void nl_cli_print_version(void); 658808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern void nl_cli_fatal(int, const char *, ...); 668808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern struct nl_addr * nl_cli_addr_parse(const char *, int); 678808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern int nl_cli_connect(struct nl_sock *, int); 688808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern struct nl_sock * nl_cli_alloc_socket(void); 698808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern int nl_cli_parse_dumptype(const char *); 708808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern int nl_cli_confirm(struct nl_object *, 718808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf struct nl_dump_params *, int); 7244d362409d5469aed47d19e7908d19bd194493aThomas Graf 738808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Grafextern struct nl_cache *nl_cli_alloc_cache(struct nl_sock *, const char *, 7410cf5a586c149fdb7e2639000dbfae5e6f8522a5Thomas Graf int (*ac)(struct nl_sock *, struct nl_cache **)); 7544d362409d5469aed47d19e7908d19bd194493aThomas Graf 768808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#ifdef __cplusplus 778808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf} 788808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf#endif 798808743839b0f459394ecd00cb0f7c1896c0ab7aThomas Graf 8044d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 81