]> granicus.if.org Git - libnl/commitdiff
CLI - Command Line Interface Library
authorThomas Graf <tgraf@suug.ch>
Wed, 16 Dec 2009 15:20:46 +0000 (16:20 +0100)
committerThomas Graf <tgraf@suug.ch>
Wed, 16 Dec 2009 15:20:46 +0000 (16:20 +0100)
Moved common code in src/ used by CLI tools to src/lib/ for possible use
by other CLI tools. Just link to libnl-cli.{so|la}

71 files changed:
configure.in
doc/Doxyfile.in
include/netlink/cli/addr.h [new file with mode: 0644]
include/netlink/cli/ct.h [new file with mode: 0644]
include/netlink/cli/link.h [new file with mode: 0644]
include/netlink/cli/neigh.h [new file with mode: 0644]
include/netlink/cli/qdisc.h [new file with mode: 0644]
include/netlink/cli/route.h [new file with mode: 0644]
include/netlink/cli/rule.h [new file with mode: 0644]
include/netlink/cli/utils.h [moved from src/utils.h with 56% similarity]
src/Makefile.am
src/addr-utils.c [deleted file]
src/addr-utils.h [deleted file]
src/ct-utils.c [deleted file]
src/ct-utils.h [deleted file]
src/ctrl-utils.c [deleted file]
src/ctrl-utils.h [deleted file]
src/genl-ctrl-list.c
src/lib/Makefile.am [new file with mode: 0644]
src/lib/addr.c [new file with mode: 0644]
src/lib/ct.c [new file with mode: 0644]
src/lib/link.c [new file with mode: 0644]
src/lib/neigh.c [new file with mode: 0644]
src/lib/qdisc.c [new file with mode: 0644]
src/lib/route.c [moved from src/route-utils.c with 50% similarity]
src/lib/rule.c [new file with mode: 0644]
src/lib/utils.c [moved from src/utils.c with 55% similarity]
src/link-utils.c [deleted file]
src/link-utils.h [deleted file]
src/log-utils.c [deleted file]
src/log-utils.h [deleted file]
src/neigh-utils.c [deleted file]
src/neigh-utils.h [deleted file]
src/nf-ct-list.c
src/nf-log.c
src/nf-monitor.c
src/nf-queue.c
src/nl-addr-add.c
src/nl-addr-delete.c
src/nl-addr-list.c
src/nl-fib-lookup.c
src/nl-link-ifindex2name.c
src/nl-link-list.c
src/nl-link-name2ifindex.c
src/nl-link-set.c
src/nl-link-stats.c
src/nl-list-caches.c
src/nl-list-sockets.c
src/nl-monitor.c
src/nl-neigh-add.c
src/nl-neigh-delete.c
src/nl-neigh-list.c
src/nl-neightbl-list.c
src/nl-qdisc-delete.c
src/nl-qdisc-list.c
src/nl-route-add.c
src/nl-route-delete.c
src/nl-route-get.c
src/nl-route-list.c
src/nl-rule-list.c
src/nl-tctree-list.c
src/nl-util-addr.c
src/qdisc-utils.c [deleted file]
src/qdisc-utils.h [deleted file]
src/queue-utils.c [deleted file]
src/queue-utils.h [deleted file]
src/route-utils.h [deleted file]
src/rtnl-utils.c [deleted file]
src/rtnl-utils.h [deleted file]
src/rule-utils.c [deleted file]
src/rule-utils.h [deleted file]

index b00a7598dd9362ea6918d81d99906e0bf3df9df0..02b51195eb99f0fb97fd6405f7da77817324ab7b 100644 (file)
@@ -30,6 +30,6 @@ AC_SUBST([pkgconfigdir])
 AC_CHECK_LIB([m], [pow], [], AC_MSG_ERROR([libm is required]))
 
 AC_CONFIG_FILES([Makefile doc/Doxyfile doc/Makefile lib/Makefile
-       include/Makefile src/Makefile libnl-2.0.pc \
-       include/netlink/version.h])
+       include/Makefile src/Makefile src/lib/Makefile \
+       libnl-2.0.pc include/netlink/version.h])
 AC_OUTPUT
index 7e00f51bb08689d48095c43525017b31d9ef6ffc..8e311e3b4dca57cb9b450fba97bbd74f7e4f34bf 100644 (file)
@@ -463,6 +463,7 @@ WARN_LOGFILE           =
 # with spaces.
 
 INPUT                  = ../lib \
+                         ../src/lib \
                          ../include/netlink
 
 # This tag can be used to specify the character encoding of the source files that 
diff --git a/include/netlink/cli/addr.h b/include/netlink/cli/addr.h
new file mode 100644 (file)
index 0000000..d0fd055
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * netlink/cli/addr.h    CLI Address Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+#ifndef __NETLINK_CLI_ADDR_H_
+#define __NETLINK_CLI_ADDR_H_
+
+#include <netlink/route/addr.h>
+
+#define nl_cli_addr_alloc_cache(sk) \
+               nl_cli_alloc_cache((sk), "address", rtnl_addr_alloc_cache)
+
+extern struct rtnl_addr *nl_cli_addr_alloc(void);
+
+extern void nl_cli_addr_parse_family(struct rtnl_addr *, char *);
+extern void nl_cli_addr_parse_local(struct rtnl_addr *, char *);
+extern void nl_cli_addr_parse_dev(struct rtnl_addr *, struct nl_cache *,char *);
+extern void nl_cli_addr_parse_label(struct rtnl_addr *, char *);
+extern void nl_cli_addr_parse_peer(struct rtnl_addr *, char *);
+extern void nl_cli_addr_parse_scope(struct rtnl_addr *, char *);
+extern void nl_cli_addr_parse_broadcast(struct rtnl_addr *, char *);
+extern void nl_cli_addr_parse_preferred(struct rtnl_addr *, char *);
+extern void nl_cli_addr_parse_valid(struct rtnl_addr *, char *);
+
+#endif
diff --git a/include/netlink/cli/ct.h b/include/netlink/cli/ct.h
new file mode 100644 (file)
index 0000000..bed776b
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * netlink/cli/ct.h    CLI Conntrack Helper
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+#ifndef __NETLINK_CLI_CT_H_
+#define __NETLINK_CLI_CT_H_
+
+#include <netlink/netfilter/ct.h>
+#include <linux/netfilter/nf_conntrack_common.h>
+
+extern struct nfnl_ct *nl_cli_ct_alloc(void);
+extern struct nl_cache *nl_cli_ct_alloc_cache(struct nl_sock *);
+
+extern void nl_cli_ct_parse_family(struct nfnl_ct *, char *);
+extern void nl_cli_ct_parse_protocol(struct nfnl_ct *, char *);
+extern void nl_cli_ct_parse_mark(struct nfnl_ct *, char *);
+extern void nl_cli_ct_parse_timeout(struct nfnl_ct *, char *);
+extern void nl_cli_ct_parse_id(struct nfnl_ct *, char *);
+extern void nl_cli_ct_parse_use(struct nfnl_ct *, char *);
+extern void nl_cli_ct_parse_src(struct nfnl_ct *, int, char *);
+extern void nl_cli_ct_parse_dst(struct nfnl_ct *, int, char *);
+extern void nl_cli_ct_parse_src_port(struct nfnl_ct *, int, char *);
+extern void nl_cli_ct_parse_dst_port(struct nfnl_ct *, int, char *);
+extern void nl_cli_ct_parse_tcp_state(struct nfnl_ct *, char *);
+extern void nl_cli_ct_parse_status(struct nfnl_ct *, char *);
+
+#endif
diff --git a/include/netlink/cli/link.h b/include/netlink/cli/link.h
new file mode 100644 (file)
index 0000000..c404019
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * netlink/cli/link.h     CLI Link Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+#ifndef __NETLINK_CLI_LINK_H_
+#define __NETLINK_CLI_LINK_H_
+
+#include <netlink/route/link.h>
+#include <netlink/cli/utils.h>
+
+#define nl_cli_link_alloc_cache(sk) \
+               nl_cli_alloc_cache((sk), "link", rtnl_link_alloc_cache)
+
+extern struct rtnl_link *nl_cli_link_alloc(void);
+
+extern void nl_cli_link_parse_family(struct rtnl_link *, char *);
+extern void nl_cli_link_parse_name(struct rtnl_link *, char *);
+extern void nl_cli_link_parse_mtu(struct rtnl_link *, char *);
+extern void nl_cli_link_parse_ifindex(struct rtnl_link *, char *);
+extern void nl_cli_link_parse_txqlen(struct rtnl_link *, char *);
+extern void nl_cli_link_parse_weight(struct rtnl_link *, char *);
+
+#endif
diff --git a/include/netlink/cli/neigh.h b/include/netlink/cli/neigh.h
new file mode 100644 (file)
index 0000000..5440012
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * netlink/cli/neighbour.h     CLI Neighbour Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+#ifndef __NETLINK_CLI_NEIGH_H_
+#define __NETLINK_CLI_NEIGH_H_
+
+#include <netlink/route/neighbour.h>
+
+#define nl_cli_neigh_alloc_cache(sk) \
+               nl_cli_alloc_cache((sk), "neighbour", rtnl_neigh_alloc_cache)
+
+extern struct rtnl_neigh *nl_cli_neigh_alloc(void);
+extern void nl_cli_neigh_parse_dst(struct rtnl_neigh *, char *);
+extern void nl_cli_neigh_parse_lladdr(struct rtnl_neigh *, char *);
+extern void nl_cli_neigh_parse_dev(struct rtnl_neigh *, struct nl_cache *, char *);
+extern void nl_cli_neigh_parse_family(struct rtnl_neigh *, char *);
+extern void nl_cli_neigh_parse_state(struct rtnl_neigh *, char *);
+
+#endif
diff --git a/include/netlink/cli/qdisc.h b/include/netlink/cli/qdisc.h
new file mode 100644 (file)
index 0000000..9fc4506
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * netlink/cli/qdisc.h     CLI QDisc Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+#ifndef __NETLINK_CLI_QDISC_H_
+#define __NETLINK_CLI_QDISC_H_
+
+#include <netlink/route/qdisc.h>
+
+#define nl_cli_qdisc_alloc_cache(sk) \
+               nl_cli_alloc_cache((sk), "queueing disciplines", \
+                                  rtnl_qdisc_alloc_cache)
+
+extern struct rtnl_qdisc *nl_cli_qdisc_alloc(void);
+
+extern void nl_cli_qdisc_parse_dev(struct rtnl_qdisc *, struct nl_cache *, char *);
+extern void nl_cli_qdisc_parse_parent(struct rtnl_qdisc *, char *);
+extern void nl_cli_qdisc_parse_handle(struct rtnl_qdisc *, char *);
+extern void nl_cli_qdisc_parse_kind(struct rtnl_qdisc *, char *);
+
+#endif
diff --git a/include/netlink/cli/route.h b/include/netlink/cli/route.h
new file mode 100644 (file)
index 0000000..089c658
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * netlink/cli//route.h     CLI Route Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+#ifndef __NETLINK_CLI_ROUTE_H_
+#define __NETLINK_CLI_ROUTE_H_
+
+#include <netlink/route/route.h>
+
+extern struct rtnl_route *nl_cli_route_alloc(void);
+
+extern struct nl_cache *nl_cli_route_alloc_cache(struct nl_sock *, int);
+
+extern void    nl_cli_route_parse_family(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_dst(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_src(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_pref_src(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_metric(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_nexthop(struct rtnl_route *, char *, struct nl_cache *);
+extern void    nl_cli_route_parse_table(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_prio(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_scope(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_protocol(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_type(struct rtnl_route *, char *);
+extern void    nl_cli_route_parse_iif(struct rtnl_route *, char *, struct nl_cache *);
+
+#endif
diff --git a/include/netlink/cli/rule.h b/include/netlink/cli/rule.h
new file mode 100644 (file)
index 0000000..61cd63e
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * netlink/cli/rule.h     CLI Routing Rule Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+#ifndef __NETLINK_CLI_RULE_H_
+#define __NETLINK_CLI_RULE_H_
+
+#include <netlink/route/rule.h>
+
+extern struct rtnl_rule *nl_cli_rule_alloc(void);
+extern struct nl_cache *nl_cli_rule_alloc_cache(struct nl_sock *);
+extern void nl_cli_rule_parse_family(struct rtnl_rule *, char *);
+
+#endif
similarity index 56%
rename from src/utils.h
rename to include/netlink/cli/utils.h
index 69b6fdcbb59d6514022bb9f074d527c96b4221b6..2a232082259673803dfc65ad20a8c493dfa8571d 100644 (file)
@@ -6,26 +6,30 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#ifndef __SRC_UTILS_H_
-#define __SRC_UTILS_H_
+#ifndef __NETLINK_CLI_UTILS_H_
+#define __NETLINK_CLI_UTILS_H_
 
 #include <stdio.h>
 #include <string.h>
 #include <stdlib.h>
+#include <stdarg.h>
+#include <limits.h>
 #include <inttypes.h>
 #include <errno.h>
 #include <stdint.h>
 #include <ctype.h>
 #include <getopt.h>
+#include <dlfcn.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 
 #include <netlink/netlink.h>
 #include <netlink/utils.h>
 #include <netlink/addr.h>
+#include <netlink/list.h>
 #include <netlink/route/rtnl.h>
 #include <netlink/route/link.h>
 #include <netlink/route/addr.h>
 #include <netlink/genl/mngt.h>
 #include <netlink/netfilter/ct.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 #ifndef __init
 #define __init __attribute__((constructor))
 #endif
 #define __exit __attribute__((destructor))
 #endif
 
-extern uint32_t parse_u32(const char *);
-
-extern void            nlt_print_version(void);
-extern void            fatal(int err, const char *fmt, ...);
-extern struct nl_addr *        nlt_addr_parse(const char *, int);
-
-extern int             nlt_connect(struct nl_sock *, int);
-extern struct nl_sock *        nlt_alloc_socket(void);
+extern uint32_t                nl_cli_parse_u32(const char *);
+extern void            nl_cli_print_version(void);
+extern void            nl_cli_fatal(int, const char *, ...);
+extern struct nl_addr *        nl_cli_addr_parse(const char *, int);
+extern int             nl_cli_connect(struct nl_sock *, int);
+extern struct nl_sock *        nl_cli_alloc_socket(void);
+extern int             nl_cli_parse_dumptype(const char *);
+extern int             nl_cli_confirm(struct nl_object *,
+                                      struct nl_dump_params *, int);
 
-extern int nlt_parse_dumptype(const char *str);
-extern int nlt_confirm(struct nl_object *, struct nl_dump_params *, int);
-
-extern struct nl_cache *nlt_alloc_link_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_addr_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_neigh_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_neightbl_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_qdisc_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_route_cache(struct nl_sock *, int);
-extern struct nl_cache *nlt_alloc_rule_cache(struct nl_sock *);
-extern struct nl_cache *alloc_cache(struct nl_sock *, const char *,
+extern struct nl_cache *nl_cli_alloc_cache(struct nl_sock *, const char *,
                             int (*ac)(struct nl_sock *, struct nl_cache **));
 
+#ifdef __cplusplus
+}
+#endif
+
 #endif
index 1f2fe708807e409c2b7ca9555b5169f5ebb43c03..ca37843b54851aa4e327fedeee183e221b5b5c72 100644 (file)
@@ -1,7 +1,9 @@
 # -*- Makefile -*-
 
+SUBDIRS = lib
+
 AM_CFLAGS  = -Wall -I${top_srcdir}/include -D_GNU_SOURCE
-AM_LDFLAGS = -L${top_builddir}/lib
+AM_LDFLAGS = -L${top_builddir}/lib -L${top_builddir}/src/lib -lnl-cli
 
 noinst_PROGRAMS = \
        genl-ctrl-list \
@@ -20,83 +22,76 @@ noinst_PROGRAMS = \
        nl-list-caches nl-list-sockets \
        nl-util-addr
 
-rtnl_utils_c = rtnl-utils.c utils.c
-
-genl_ctrl_list_SOURCES = genl-ctrl-list.c ctrl-utils.c utils.c
-genl_ctrl_list_LDADD = -lnl-genl
+genl_ctrl_list_SOURCES = genl-ctrl-list.c 
+genl_ctrl_list_LDADD = -lnl-genl -lnl-route
 
-nf_ct_list_SOURCES = nf-ct-list.c ct-utils.c utils.c
+nf_ct_list_SOURCES = nf-ct-list.c 
 nf_ct_list_LDADD = -lnl-nf
-nf_log_SOURCES = nf-log.c log-utils.c ${rtnl_utils_c}
+nf_log_SOURCES = nf-log.c
 nf_log_LDADD = -lnl-nf
-nf_queue_SOURCES = nf-queue.c queue-utils.c ${rtnl_utils_c}
+nf_queue_SOURCES = nf-queue.c 
 nf_queue_LDADD = -lnl-nf
-nf_monitor_SOURCES = nf-monitor.c utils.c
+nf_monitor_SOURCES = nf-monitor.c
 nf_monitor_LDADD = -lnl-nf
 
-addr_c = addr-utils.c ${rtnl_utils_c}
-nl_addr_add_SOURCES = nl-addr-add.c ${addr_c}
+nl_addr_add_SOURCES = nl-addr-add.c
 nl_addr_add_LDADD = -lnl-route
-nl_addr_delete_SOURCES = nl-addr-delete.c ${addr_c}
+nl_addr_delete_SOURCES = nl-addr-delete.c
 nl_addr_delete_LDADD = -lnl-route
-nl_addr_list_SOURCES = nl-addr-list.c ${addr_c}
+nl_addr_list_SOURCES = nl-addr-list.c
 nl_addr_list_LDADD = -lnl-route
 
-link_c = link-utils.c ${rtnl_utils_c}
-nl_link_list_SOURCES = nl-link-list.c ${link_c}
+nl_link_list_SOURCES = nl-link-list.c
 nl_link_list_LDADD = -lnl-route
-nl_link_set_SOURCES = nl-link-set.c ${link_c}
+nl_link_set_SOURCES = nl-link-set.c
 nl_link_set_LDADD = -lnl-route
-nl_link_stats_SOURCES = nl-link-stats.c ${link_c}
+nl_link_stats_SOURCES = nl-link-stats.c
 nl_link_stats_LDADD = -lnl-route
-nl_link_ifindex2name_SOURCES = nl-link-ifindex2name.c ${rtnl_utils_c}
+nl_link_ifindex2name_SOURCES = nl-link-ifindex2name.c
 nl_link_ifindex2name_LDADD = -lnl-route
-nl_link_name2ifindex_SOURCES = nl-link-name2ifindex.c ${rtnl_utils_c}
+nl_link_name2ifindex_SOURCES = nl-link-name2ifindex.c
 nl_link_name2ifindex_LDADD = -lnl-route
 
-nl_monitor_SOURCES = nl-monitor.c ${rtnl_utils_c}
+nl_monitor_SOURCES = nl-monitor.c
 nl_monitor_LDADD = -lnl-route
 
-neigh_c = neigh-utils.c ${rtnl_utils_c}
-nl_neigh_add_SOURCES = nl-neigh-add.c ${neigh_c}
+nl_neigh_add_SOURCES = nl-neigh-add.c
 nl_neigh_add_LDADD = -lnl-route
-nl_neigh_delete_SOURCES = nl-neigh-delete.c ${neigh_c}
+nl_neigh_delete_SOURCES = nl-neigh-delete.c
 nl_neigh_delete_LDADD = -lnl-route
-nl_neigh_list_SOURCES = nl-neigh-list.c ${neigh_c}
+nl_neigh_list_SOURCES = nl-neigh-list.c
 nl_neigh_list_LDADD = -lnl-route
 
-nl_neightbl_list_SOURCES = nl-neightbl-list.c ${rtnl_utils_c}
+nl_neightbl_list_SOURCES = nl-neightbl-list.c
 nl_neightbl_list_LDADD = -lnl-route
 
-qdisc_c = qdisc-utils.c ${rtnl_utils_c}
-nl_qdisc_delete_SOURCES = nl-qdisc-delete.c ${qdisc_c}
+nl_qdisc_delete_SOURCES = nl-qdisc-delete.c
 nl_qdisc_delete_LDADD = -lnl-route
-nl_qdisc_list_SOURCES = nl-qdisc-list.c ${qdisc_c}
+nl_qdisc_list_SOURCES = nl-qdisc-list.c
 nl_qdisc_list_LDADD = -lnl-route
 
-route_c = route-utils.c ${rtnl_utils_c}
-nl_route_add_SOURCES = nl-route-add.c ${route_c}
+nl_route_add_SOURCES = nl-route-add.c
 nl_route_add_LDADD = -lnl-route
-nl_route_delete_SOURCES = nl-route-delete.c ${route_c}
+nl_route_delete_SOURCES = nl-route-delete.c
 nl_route_delete_LDADD = -lnl-route
-nl_route_get_SOURCES = nl-route-get.c ${route_c}
+nl_route_get_SOURCES = nl-route-get.c
 nl_route_get_LDADD = -lnl-route
-nl_route_list_SOURCES = nl-route-list.c ${route_c}
+nl_route_list_SOURCES = nl-route-list.c
 nl_route_list_LDADD = -lnl-route
 
-nl_rule_list_SOURCES = nl-rule-list.c rule-utils.c ${rtnl_utils_c}
+nl_rule_list_SOURCES = nl-rule-list.c
 nl_rule_list_LDADD = -lnl-route
 
-nl_tctree_list_SOURCES = nl-tctree-list.c ${rtnl_utils_c}
+nl_tctree_list_SOURCES = nl-tctree-list.c
 nl_tctree_list_LDADD = -lnl-route
 
-nl_fib_lookup_SOURCES = nl-fib-lookup.c ${rtnl_utils_c}
+nl_fib_lookup_SOURCES = nl-fib-lookup.c
 nl_fib_lookup_LDADD = -lnl-route
 
-nl_list_caches_SOURCES = nl-list-caches.c ${rtnl_utils_c}
+nl_list_caches_SOURCES = nl-list-caches.c
 nl_list_caches_LDADD = -lnl-route
-nl_list_sockets_SOURCES = nl-list-sockets.c ${rtnl_utils_c}
+nl_list_sockets_SOURCES = nl-list-sockets.c
 nl_list_sockets_LDADD = -lnl-route
 
-nl_util_addr_SOURCES = nl-util-addr.c ${rtnl_utils_c}
+nl_util_addr_SOURCES = nl-util-addr.c
 nl_util_addr_LDADD = -lnl-route
diff --git a/src/addr-utils.c b/src/addr-utils.c
deleted file mode 100644 (file)
index 3cbe4f4..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * src/addr-utils.c     Address Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "addr-utils.h"
-
-struct rtnl_addr *nlt_alloc_addr(void)
-{
-       struct rtnl_addr *addr;
-
-       addr = rtnl_addr_alloc();
-       if (!addr)
-               fatal(ENOMEM, "Unable to allocate address object");
-
-       return addr;
-}
-
-void parse_family(struct rtnl_addr *addr, char *arg)
-{
-       int family;
-
-       if ((family = nl_str2af(arg)) != AF_UNSPEC)
-               rtnl_addr_set_family(addr, family);
-}
-
-void parse_local(struct rtnl_addr *addr, char *arg)
-{
-       struct nl_addr *a;
-       int err;
-
-       a = nlt_addr_parse(arg, rtnl_addr_get_family(addr));
-       if ((err = rtnl_addr_set_local(addr, a)) < 0)
-               fatal(err, "Unable to set local address: %s",
-                       nl_geterror(err));
-
-       nl_addr_put(a);
-}
-
-void parse_dev(struct rtnl_addr *addr, struct nl_cache *link_cache, char *arg)
-{
-       int ival;
-
-       if (!(ival = rtnl_link_name2i(link_cache, arg)))
-               fatal(ENOENT, "Link \"%s\" does not exist", arg);
-
-       rtnl_addr_set_ifindex(addr, ival);
-}
-
-void parse_label(struct rtnl_addr *addr, char *arg)
-{
-       int err;
-
-       if ((err = rtnl_addr_set_label(addr, arg)) < 0)
-               fatal(err, "Unable to set address label: %s", nl_geterror(err));
-}
-
-void parse_peer(struct rtnl_addr *addr, char *arg)
-{
-       struct nl_addr *a;
-       int err;
-
-       a = nlt_addr_parse(arg, rtnl_addr_get_family(addr));
-       if ((err = rtnl_addr_set_peer(addr, a)) < 0)
-               fatal(err, "Unable to set peer address: %s", nl_geterror(err));
-
-       nl_addr_put(a);
-}
-
-void parse_scope(struct rtnl_addr *addr, char *arg)
-{
-       int ival;
-
-       if ((ival = rtnl_str2scope(arg)) < 0)
-               fatal(EINVAL, "Unknown address scope \"%s\"", arg);
-
-       rtnl_addr_set_scope(addr, ival);
-}
-
-void parse_broadcast(struct rtnl_addr *addr, char *arg)
-{
-       struct nl_addr *a;
-       int err;
-
-       a = nlt_addr_parse(arg, rtnl_addr_get_family(addr));
-       if ((err = rtnl_addr_set_broadcast(addr, a)) < 0)
-               fatal(err, "Unable to set broadcast address: %s",
-                       nl_geterror(err));
-
-       nl_addr_put(a);
-}
-
-static uint32_t parse_lifetime(const char *arg)
-{
-       uint64_t msecs;
-       int err;
-
-       if (!strcasecmp(arg, "forever"))
-               return 0xFFFFFFFFU;
-
-       if ((err = nl_str2msec(arg, &msecs)) < 0)
-               fatal(err, "Unable to parse time string \"%s\": %s",
-                     arg, nl_geterror(err));
-
-       return (msecs / 1000);
-}
-
-void parse_preferred(struct rtnl_addr *addr, char *arg)
-{
-       rtnl_addr_set_preferred_lifetime(addr, parse_lifetime(arg));
-}
-
-void parse_valid(struct rtnl_addr *addr, char *arg)
-{
-       rtnl_addr_set_valid_lifetime(addr, parse_lifetime(arg));
-}
diff --git a/src/addr-utils.h b/src/addr-utils.h
deleted file mode 100644 (file)
index 5efa07f..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * src/addr-utils.h     Address Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __ADDR_UTILS_H_
-#define __ADDR_UTILS_H_
-
-#include "utils.h"
-
-extern struct rtnl_addr *nlt_alloc_addr(void);
-extern void parse_family(struct rtnl_addr *, char *);
-extern void parse_local(struct rtnl_addr *, char *);
-extern void parse_dev(struct rtnl_addr *, struct nl_cache *, char *);
-extern void parse_label(struct rtnl_addr *, char *);
-extern void parse_peer(struct rtnl_addr *, char *);
-extern void parse_scope(struct rtnl_addr *, char *);
-extern void parse_broadcast(struct rtnl_addr *, char *);
-extern void parse_preferred(struct rtnl_addr *, char *);
-extern void parse_valid(struct rtnl_addr *, char *);
-
-#endif
diff --git a/src/ct-utils.c b/src/ct-utils.c
deleted file mode 100644 (file)
index 7d116fa..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * src/ct-utils.c              Conntrack Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "ct-utils.h"
-
-struct nfnl_ct *nlt_alloc_ct(void)
-{
-       struct nfnl_ct *ct;
-
-       ct = nfnl_ct_alloc();
-       if (!ct)
-               fatal(ENOMEM, "Unable to allocate conntrack object");
-
-       return ct;
-}
-
-struct nl_cache *nlt_alloc_ct_cache(struct nl_sock *sk)
-{
-       return alloc_cache(sk, "conntrack", nfnl_ct_alloc_cache);
-}
-
-void parse_family(struct nfnl_ct *ct, char *arg)
-{
-       int family;
-
-       if ((family = nl_str2af(arg)) == AF_UNSPEC)
-               fatal(EINVAL, "Unable to parse family \"%s\": %s",
-                     arg, nl_geterror(NLE_INVAL));
-
-       nfnl_ct_set_family(ct, family);
-}
-
-void parse_protocol(struct nfnl_ct *ct, char *arg)
-{
-       int proto;
-
-       if ((proto = nl_str2ip_proto(arg)) < 0)
-               fatal(proto, "Unable to parse protocol \"%s\": %s",
-                     arg, nl_geterror(proto));
-
-       nfnl_ct_set_proto(ct, proto);
-}
-
-void parse_mark(struct nfnl_ct *ct, char *arg)
-{
-       uint32_t mark = parse_u32(arg);
-       nfnl_ct_set_mark(ct, mark);
-}
-
-void parse_timeout(struct nfnl_ct *ct, char *arg)
-{
-       uint32_t timeout = parse_u32(arg);
-       nfnl_ct_set_timeout(ct, timeout);
-}
-
-void parse_id(struct nfnl_ct *ct, char *arg)
-{
-       uint32_t id = parse_u32(arg);
-       nfnl_ct_set_id(ct, id);
-}
-
-void parse_use(struct nfnl_ct *ct, char *arg)
-{
-       uint32_t use = parse_u32(arg);
-       nfnl_ct_set_use(ct, use);
-}
-
-void parse_src(struct nfnl_ct *ct, int reply, char *arg)
-{
-       int err;
-       struct nl_addr *a = nlt_addr_parse(arg, nfnl_ct_get_family(ct));
-       if ((err = nfnl_ct_set_src(ct, reply, a)) < 0)
-               fatal(err, "Unable to set source address: %s",
-                     nl_geterror(err));
-}
-
-void parse_dst(struct nfnl_ct *ct, int reply, char *arg)
-{
-       int err;
-       struct nl_addr *a = nlt_addr_parse(arg, nfnl_ct_get_family(ct));
-       if ((err = nfnl_ct_set_dst(ct, reply, a)) < 0)
-               fatal(err, "Unable to set destination address: %s",
-                     nl_geterror(err));
-}
-
-void parse_src_port(struct nfnl_ct *ct, int reply, char *arg)
-{
-       uint32_t port = parse_u32(arg);
-       nfnl_ct_set_src_port(ct, reply, port);
-}
-
-void parse_dst_port(struct nfnl_ct *ct, int reply, char *arg)
-{
-       uint32_t port = parse_u32(arg);
-       nfnl_ct_set_dst_port(ct, reply, port);
-}
-
-void parse_tcp_state(struct nfnl_ct *ct, char *arg)
-{
-       int state;
-
-       if ((state = nfnl_ct_str2tcp_state(arg)) < 0)
-               fatal(state, "Unable to parse tcp state \"%s\": %s",
-                     arg, nl_geterror(state));
-
-       nfnl_ct_set_tcp_state(ct, state);
-}
-
-void parse_status(struct nfnl_ct *ct, char *arg)
-{
-       int status;
-
-       if ((status = nfnl_ct_str2status(arg)) < 0)
-               fatal(status, "Unable to parse flags \"%s\": %s",
-                     arg, nl_geterror(status));
-
-       nfnl_ct_set_status(ct, status);
-}
-
-#if 0
-               } else if (arg_match("origicmpid")) {
-                       if (argc > ++idx)
-                               nfnl_ct_set_icmp_id(ct, 0, strtoul(argv[idx++], NULL, 0));
-               } else if (arg_match("origicmptype")) {
-                       if (argc > ++idx)
-                               nfnl_ct_set_icmp_type(ct, 0, strtoul(argv[idx++], NULL, 0));
-               } else if (arg_match("origicmpcode")) {
-                       if (argc > ++idx)
-                               nfnl_ct_set_icmp_code(ct, 0, strtoul(argv[idx++], NULL, 0));
-               } else if (arg_match("replyicmpid")) {
-                       if (argc > ++idx)
-                               nfnl_ct_set_icmp_id(ct, 1, strtoul(argv[idx++], NULL, 0));
-               } else if (arg_match("replyicmptype")) {
-                       if (argc > ++idx)
-                               nfnl_ct_set_icmp_type(ct, 1, strtoul(argv[idx++], NULL, 0));
-               } else if (arg_match("replyicmpcode")) {
-                       if (argc > ++idx)
-                               nfnl_ct_set_icmp_code(ct, 1, strtoul(argv[idx++], NULL, 0));
-               }
-#endif
diff --git a/src/ct-utils.h b/src/ct-utils.h
deleted file mode 100644 (file)
index fc20e49..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * src/ct-utils.h              Conntrack Helper
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __CT_UTILS_H_
-#define __CT_UTILS_H_
-
-#include "utils.h"
-#include <netlink/netfilter/ct.h>
-#include <linux/netfilter/nf_conntrack_common.h>
-
-extern struct nfnl_ct *nlt_alloc_ct(void);
-extern struct nl_cache *nlt_alloc_ct_cache(struct nl_sock *);
-extern void parse_family(struct nfnl_ct *, char *);
-extern void parse_protocol(struct nfnl_ct *, char *);
-extern void parse_mark(struct nfnl_ct *, char *);
-extern void parse_timeout(struct nfnl_ct *, char *);
-extern void parse_id(struct nfnl_ct *, char *);
-extern void parse_use(struct nfnl_ct *, char *);
-extern void parse_src(struct nfnl_ct *, int, char *);
-extern void parse_dst(struct nfnl_ct *, int, char *);
-extern void parse_src_port(struct nfnl_ct *, int, char *);
-extern void parse_dst_port(struct nfnl_ct *, int, char *);
-extern void parse_tcp_state(struct nfnl_ct *, char *);
-extern void parse_status(struct nfnl_ct *, char *);
-
-#endif
diff --git a/src/ctrl-utils.c b/src/ctrl-utils.c
deleted file mode 100644 (file)
index 5309c23..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * src/ctrl-utils.c            Generic Ctrl Netlink Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "ctrl-utils.h"
-
-struct nl_cache *nlt_alloc_genl_family_cache(struct nl_sock *sk)
-{
-       return alloc_cache(sk, "generic netlink family",
-                          genl_ctrl_alloc_cache);
-}
diff --git a/src/ctrl-utils.h b/src/ctrl-utils.h
deleted file mode 100644 (file)
index 59e3cdc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * src/ctrl-utils.h            Generic Netlink Ctrl Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __SRC_CTRL_UTILS_H_
-#define __SRC_CTRL_UTILS_H_
-
-#include "utils.h"
-
-extern struct nl_cache *nlt_alloc_genl_family_cache(struct nl_sock *);
-
-#endif
index 52767797de7dab8d97ea31cab884e9999a13ab34..e25eb2ae281ee71a22858838fec0036a4f3a758b 100644 (file)
@@ -6,10 +6,16 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "ctrl-utils.h"
+#include <netlink/cli/utils.h>
+
+static struct nl_cache *alloc_genl_family_cache(struct nl_sock *sk)
+{
+       return nl_cli_alloc_cache(sk, "generic netlink family",
+                          genl_ctrl_alloc_cache);
+}
 
 static void print_usage(void)
 {
@@ -33,9 +39,9 @@ int main(int argc, char *argv[])
                .dp_fd = stdout,
        };
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_GENERIC);
-       family_cache = nlt_alloc_genl_family_cache(sock);
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_GENERIC);
+       family_cache = alloc_genl_family_cache(sock);
  
        for (;;) {
                int c, optidx = 0;
@@ -51,9 +57,9 @@ int main(int argc, char *argv[])
                        break;
 
                switch (c) {
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
+               case 'v': nl_cli_print_version(); break;
                }
        }
 
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
new file mode 100644 (file)
index 0000000..068c3a6
--- /dev/null
@@ -0,0 +1,41 @@
+# -*- Makefile -*-
+
+AM_CFLAGS  = -Wall -I${top_srcdir}/include -D_GNU_SOURCE -DPKGLIBDIR=\"$(pkglibdir)\" -DSYSCONFDIR=\"$(sysconfdir)\" -rdynamic
+AM_LDFLAGS = -L${top_builddir}/lib -ldl
+
+#nobase_pkglib_LTLIBRARIES = cls/basic.la cls/ematch/cmp.la
+#cls_basic_la_LDFLAGS = -module -version-info 2:0:0
+#cls_ematch_cmp_la_LDFLAGS = -module -version-info 2:0:0
+
+#cls/ematch_grammar.c: cls/ematch_grammar.l
+#      $(LEX) --header-file=cls/ematch_grammar.h $(LFLAGS) -o $@ $^
+
+#cls/ematch_syntax.c: cls/ematch_syntax.y
+#      $(YACC) -d $(YFLAGS) -o $@ $^
+
+#cls/pktloc_grammar.c: cls/pktloc_grammar.l
+#      $(LEX) --header-file=cls/pktloc_grammar.h $(LFLAGS) -o $@ $^
+
+#cls/pktloc_syntax.c: cls/pktloc_syntax.y
+#      $(YACC) -d $(YFLAGS) -o $@ $^
+
+#CLEANFILES = \
+#      cls/ematch_grammar.c cls/ematch_grammar.h \
+#      cls/ematch_syntax.c cls/ematch_syntax.h \
+#      cls/pktloc_grammar.c cls/pktloc_grammar.h \
+#      cls/pktloc_syntax.c cls/pktloc_syntax.h
+
+lib_LTLIBRARIES = \
+       libnl-cli.la
+
+libnl_cli_la_LDFLAGS = -version-info 2:0:0
+
+libnl_cli_la_LIBADD  = ${top_builddir}/lib/libnl.la \
+                      ${top_builddir}/lib/libnl-route.la \
+                      ${top_builddir}/lib/libnl-nf.la \
+                      ${top_builddir}/lib/libnl-genl.la
+
+libnl_cli_la_SOURCES = \
+       utils.c addr.c ct.c link.c neigh.c qdisc.c rule.c route.c
+#      cls/ematch_syntax.c cls/ematch_grammar.c cls/ematch.c
+#      cls/pktloc_syntax.c cls/pktloc_grammar.c cls/utils.c
diff --git a/src/lib/addr.c b/src/lib/addr.c
new file mode 100644 (file)
index 0000000..a9c137b
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * src/lib/addr.c     Address Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+/**
+ * @ingroup cli
+ * @defgroup cli_addr Addresses
+ *
+ * @{
+ */
+
+#include <netlink/cli/utils.h>
+#include <netlink/cli/addr.h>
+
+struct rtnl_addr *nl_cli_addr_alloc(void)
+{
+       struct rtnl_addr *addr;
+
+       addr = rtnl_addr_alloc();
+       if (!addr)
+               nl_cli_fatal(ENOMEM, "Unable to allocate address object");
+
+       return addr;
+}
+
+void nl_cli_addr_parse_family(struct rtnl_addr *addr, char *arg)
+{
+       int family;
+
+       if ((family = nl_str2af(arg)) != AF_UNSPEC)
+               rtnl_addr_set_family(addr, family);
+}
+
+void nl_cli_addr_parse_local(struct rtnl_addr *addr, char *arg)
+{
+       struct nl_addr *a;
+       int err;
+
+       a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
+       if ((err = rtnl_addr_set_local(addr, a)) < 0)
+               nl_cli_fatal(err, "Unable to set local address: %s",
+                            nl_geterror(err));
+
+       nl_addr_put(a);
+}
+
+void nl_cli_addr_parse_dev(struct rtnl_addr *addr, struct nl_cache *link_cache,
+                          char *arg)
+{
+       int ival;
+
+       if (!(ival = rtnl_link_name2i(link_cache, arg)))
+               nl_cli_fatal(ENOENT, "Link \"%s\" does not exist", arg);
+
+       rtnl_addr_set_ifindex(addr, ival);
+}
+
+void nl_cli_addr_parse_label(struct rtnl_addr *addr, char *arg)
+{
+       int err;
+
+       if ((err = rtnl_addr_set_label(addr, arg)) < 0)
+               nl_cli_fatal(err, "Unable to set address label: %s",
+                            nl_geterror(err));
+}
+
+void nl_cli_addr_parse_peer(struct rtnl_addr *addr, char *arg)
+{
+       struct nl_addr *a;
+       int err;
+
+       a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
+       if ((err = rtnl_addr_set_peer(addr, a)) < 0)
+               nl_cli_fatal(err, "Unable to set peer address: %s",
+                            nl_geterror(err));
+
+       nl_addr_put(a);
+}
+
+void nl_cli_addr_parse_scope(struct rtnl_addr *addr, char *arg)
+{
+       int ival;
+
+       if ((ival = rtnl_str2scope(arg)) < 0)
+               nl_cli_fatal(EINVAL, "Unknown address scope \"%s\"", arg);
+
+       rtnl_addr_set_scope(addr, ival);
+}
+
+void nl_cli_addr_parse_broadcast(struct rtnl_addr *addr, char *arg)
+{
+       struct nl_addr *a;
+       int err;
+
+       a = nl_cli_addr_parse(arg, rtnl_addr_get_family(addr));
+       if ((err = rtnl_addr_set_broadcast(addr, a)) < 0)
+               nl_cli_fatal(err, "Unable to set broadcast address: %s",
+                            nl_geterror(err));
+
+       nl_addr_put(a);
+}
+
+static uint32_t parse_lifetime(const char *arg)
+{
+       uint64_t msecs;
+       int err;
+
+       if (!strcasecmp(arg, "forever"))
+               return 0xFFFFFFFFU;
+
+       if ((err = nl_str2msec(arg, &msecs)) < 0)
+               nl_cli_fatal(err, "Unable to parse time string \"%s\": %s",
+                            arg, nl_geterror(err));
+
+       return (msecs / 1000);
+}
+
+void nl_cli_addr_parse_preferred(struct rtnl_addr *addr, char *arg)
+{
+       rtnl_addr_set_preferred_lifetime(addr, parse_lifetime(arg));
+}
+
+void nl_cli_addr_parse_valid(struct rtnl_addr *addr, char *arg)
+{
+       rtnl_addr_set_valid_lifetime(addr, parse_lifetime(arg));
+}
+
+/** @} */
diff --git a/src/lib/ct.c b/src/lib/ct.c
new file mode 100644 (file)
index 0000000..5bab08f
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ * src/lib/ct.c                CLI Conntrack Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+/**
+ * @ingroup cli
+ * @defgroup cli_ct Connection Tracking
+ *
+ * @{
+ */
+
+#include <netlink/cli/utils.h>
+#include <netlink/cli/ct.h>
+
+struct nfnl_ct *nl_cli_ct_alloc(void)
+{
+       struct nfnl_ct *ct;
+
+       ct = nfnl_ct_alloc();
+       if (!ct)
+               nl_cli_fatal(ENOMEM, "Unable to allocate conntrack object");
+
+       return ct;
+}
+
+struct nl_cache *nl_cli_ct_alloc_cache(struct nl_sock *sk)
+{
+       return nl_cli_alloc_cache(sk, "conntrack", nfnl_ct_alloc_cache);
+}
+
+void nl_cli_ct_parse_family(struct nfnl_ct *ct, char *arg)
+{
+       int family;
+
+       if ((family = nl_str2af(arg)) == AF_UNSPEC)
+               nl_cli_fatal(EINVAL,
+                            "Unable to nl_cli_ct_parse family \"%s\": %s",
+                            arg, nl_geterror(NLE_INVAL));
+
+       nfnl_ct_set_family(ct, family);
+}
+
+void nl_cli_ct_parse_protocol(struct nfnl_ct *ct, char *arg)
+{
+       int proto;
+
+       if ((proto = nl_str2ip_proto(arg)) < 0)
+               nl_cli_fatal(proto,
+                            "Unable to nl_cli_ct_parse protocol \"%s\": %s",
+                            arg, nl_geterror(proto));
+
+       nfnl_ct_set_proto(ct, proto);
+}
+
+void nl_cli_ct_parse_mark(struct nfnl_ct *ct, char *arg)
+{
+       uint32_t mark = nl_cli_parse_u32(arg);
+       nfnl_ct_set_mark(ct, mark);
+}
+
+void nl_cli_ct_parse_timeout(struct nfnl_ct *ct, char *arg)
+{
+       uint32_t timeout = nl_cli_parse_u32(arg);
+       nfnl_ct_set_timeout(ct, timeout);
+}
+
+void nl_cli_ct_parse_id(struct nfnl_ct *ct, char *arg)
+{
+       uint32_t id = nl_cli_parse_u32(arg);
+       nfnl_ct_set_id(ct, id);
+}
+
+void nl_cli_ct_parse_use(struct nfnl_ct *ct, char *arg)
+{
+       uint32_t use = nl_cli_parse_u32(arg);
+       nfnl_ct_set_use(ct, use);
+}
+
+void nl_cli_ct_parse_src(struct nfnl_ct *ct, int reply, char *arg)
+{
+       int err;
+       struct nl_addr *a = nl_cli_addr_parse(arg, nfnl_ct_get_family(ct));
+       if ((err = nfnl_ct_set_src(ct, reply, a)) < 0)
+               nl_cli_fatal(err, "Unable to set source address: %s",
+                            nl_geterror(err));
+}
+
+void nl_cli_ct_parse_dst(struct nfnl_ct *ct, int reply, char *arg)
+{
+       int err;
+       struct nl_addr *a = nl_cli_addr_parse(arg, nfnl_ct_get_family(ct));
+       if ((err = nfnl_ct_set_dst(ct, reply, a)) < 0)
+               nl_cli_fatal(err, "Unable to set destination address: %s",
+                            nl_geterror(err));
+}
+
+void nl_cli_ct_parse_src_port(struct nfnl_ct *ct, int reply, char *arg)
+{
+       uint32_t port = nl_cli_parse_u32(arg);
+       nfnl_ct_set_src_port(ct, reply, port);
+}
+
+void nl_cli_ct_parse_dst_port(struct nfnl_ct *ct, int reply, char *arg)
+{
+       uint32_t port = nl_cli_parse_u32(arg);
+       nfnl_ct_set_dst_port(ct, reply, port);
+}
+
+void nl_cli_ct_parse_tcp_state(struct nfnl_ct *ct, char *arg)
+{
+       int state;
+
+       if ((state = nfnl_ct_str2tcp_state(arg)) < 0)
+               nl_cli_fatal(state,
+                            "Unable to nl_cli_ct_parse tcp state \"%s\": %s",
+                            arg, nl_geterror(state));
+
+       nfnl_ct_set_tcp_state(ct, state);
+}
+
+void nl_cli_ct_parse_status(struct nfnl_ct *ct, char *arg)
+{
+       int status;
+
+       if ((status = nfnl_ct_str2status(arg)) < 0)
+               nl_cli_fatal(status,
+                            "Unable to nl_cli_ct_parse flags \"%s\": %s",
+                            arg, nl_geterror(status));
+
+       nfnl_ct_set_status(ct, status);
+}
+
+#if 0
+               } else if (arg_match("origicmpid")) {
+                       if (argc > ++idx)
+                               nfnl_ct_set_icmp_id(ct, 0, strtoul(argv[idx++], NULL, 0));
+               } else if (arg_match("origicmptype")) {
+                       if (argc > ++idx)
+                               nfnl_ct_set_icmp_type(ct, 0, strtoul(argv[idx++], NULL, 0));
+               } else if (arg_match("origicmpcode")) {
+                       if (argc > ++idx)
+                               nfnl_ct_set_icmp_code(ct, 0, strtoul(argv[idx++], NULL, 0));
+               } else if (arg_match("replyicmpid")) {
+                       if (argc > ++idx)
+                               nfnl_ct_set_icmp_id(ct, 1, strtoul(argv[idx++], NULL, 0));
+               } else if (arg_match("replyicmptype")) {
+                       if (argc > ++idx)
+                               nfnl_ct_set_icmp_type(ct, 1, strtoul(argv[idx++], NULL, 0));
+               } else if (arg_match("replyicmpcode")) {
+                       if (argc > ++idx)
+                               nfnl_ct_set_icmp_code(ct, 1, strtoul(argv[idx++], NULL, 0));
+               }
+#endif
+
+/** @} */
diff --git a/src/lib/link.c b/src/lib/link.c
new file mode 100644 (file)
index 0000000..c192569
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * src/lib/link.c     CLI Link Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+/**
+ * @ingroup cli
+ * @defgroup cli_link Links
+ *
+ * @{
+ */
+
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
+
+struct rtnl_link *nl_cli_link_alloc(void)
+{
+       struct rtnl_link *link;
+
+       link = rtnl_link_alloc();
+       if (!link)
+               nl_cli_fatal(ENOMEM, "Unable to allocate link object");
+
+       return link;
+}
+
+void nl_cli_link_parse_family(struct rtnl_link *link, char *arg)
+{
+       int family;
+
+       if ((family = nl_str2af(arg)) == AF_UNSPEC)
+               nl_cli_fatal(EINVAL,
+                            "Unable to translate address family \"%s\"", arg);
+
+       rtnl_link_set_family(link, family);
+}
+
+void nl_cli_link_parse_name(struct rtnl_link *link, char *arg)
+{
+       rtnl_link_set_name(link, arg);
+}
+
+void nl_cli_link_parse_mtu(struct rtnl_link *link, char *arg)
+{
+       uint32_t mtu = nl_cli_parse_u32(arg);
+       rtnl_link_set_mtu(link, mtu);
+}
+
+void nl_cli_link_parse_ifindex(struct rtnl_link *link, char *arg)
+{
+       uint32_t index = nl_cli_parse_u32(arg);
+       rtnl_link_set_ifindex(link, index);
+}
+
+void nl_cli_link_parse_txqlen(struct rtnl_link *link, char *arg)
+{
+       uint32_t qlen = nl_cli_parse_u32(arg);
+       rtnl_link_set_txqlen(link, qlen);
+}
+
+void nl_cli_link_parse_weight(struct rtnl_link *link, char *arg)
+{
+       uint32_t weight = nl_cli_parse_u32(arg);
+       rtnl_link_set_weight(link, weight);
+}
+
+/** @} */
diff --git a/src/lib/neigh.c b/src/lib/neigh.c
new file mode 100644 (file)
index 0000000..a814bd8
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * src/lib/neigh.c     CLI Neighbour Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+/**
+ * @ingroup cli
+ * @defgroup cli_neigh Neighbour
+ *
+ * @{
+ */
+
+#include <netlink/cli/utils.h>
+#include <netlink/cli/neigh.h>
+
+struct rtnl_neigh *nl_cli_neigh_alloc(void)
+{
+       struct rtnl_neigh *neigh;
+
+       neigh = rtnl_neigh_alloc();
+       if (!neigh)
+               nl_cli_fatal(ENOMEM, "Unable to allocate neighbout object");
+
+       return neigh;
+}
+
+void nl_cli_neigh_parse_dst(struct rtnl_neigh *neigh, char *arg)
+{
+       struct nl_addr *a;
+       int err;
+
+       a = nl_cli_addr_parse(arg, rtnl_neigh_get_family(neigh));
+       if ((err = rtnl_neigh_set_dst(neigh, a)) < 0)
+               nl_cli_fatal(err, "Unable to set local address: %s",
+                       nl_geterror(err));
+
+       nl_addr_put(a);
+}
+
+void nl_cli_neigh_parse_lladdr(struct rtnl_neigh *neigh, char *arg)
+{
+       struct nl_addr *a;
+
+       a = nl_cli_addr_parse(arg, AF_UNSPEC);
+       rtnl_neigh_set_lladdr(neigh, a);
+       nl_addr_put(a);
+}
+
+void nl_cli_neigh_parse_dev(struct rtnl_neigh *neigh,
+                           struct nl_cache *link_cache, char *arg)
+{
+       int ival;
+
+       if (!(ival = rtnl_link_name2i(link_cache, arg)))
+               nl_cli_fatal(ENOENT, "Link \"%s\" does not exist", arg);
+
+       rtnl_neigh_set_ifindex(neigh, ival);
+}
+
+void nl_cli_neigh_parse_family(struct rtnl_neigh *neigh, char *arg)
+{
+       int family;
+
+       if ((family = nl_str2af(arg)) == AF_UNSPEC)
+               nl_cli_fatal(EINVAL,
+                            "Unable to translate address family \"%s\"", arg);
+
+       rtnl_neigh_set_family(neigh, family);
+}
+
+void nl_cli_neigh_parse_state(struct rtnl_neigh *neigh, char *arg)
+{
+       int state;
+       
+       if ((state = rtnl_neigh_str2state(arg)) < 0)
+               nl_cli_fatal(state, "Unable to translate state \"%s\": %s",
+                       arg, state);
+
+       rtnl_neigh_set_state(neigh, state);
+}
+
+/** @} */
diff --git a/src/lib/qdisc.c b/src/lib/qdisc.c
new file mode 100644 (file)
index 0000000..bc7ff92
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * src/lib/qdisc.c     CLI QDisc Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+/**
+ * @ingroup cli
+ * @defgroup cli_qdisc Queueing Disciplines
+ *
+ * @{
+ */
+
+#include <netlink/cli/utils.h>
+#include <netlink/cli/qdisc.h>
+
+struct rtnl_qdisc *nl_cli_qdisc_alloc(void)
+{
+       struct rtnl_qdisc *qdisc;
+
+       qdisc = rtnl_qdisc_alloc();
+       if (!qdisc)
+               nl_cli_fatal(ENOMEM, "Unable to allocate qdisc object");
+
+       return qdisc;
+}
+
+void nl_cli_qdisc_parse_dev(struct rtnl_qdisc *qdisc, struct nl_cache *link_cache, char *arg)
+{
+       int ival;
+
+       if (!(ival = rtnl_link_name2i(link_cache, arg)))
+               nl_cli_fatal(ENOENT, "Link \"%s\" does not exist", arg);
+
+       rtnl_qdisc_set_ifindex(qdisc, ival);
+}
+
+void nl_cli_qdisc_parse_parent(struct rtnl_qdisc *qdisc, char *arg)
+{
+       uint32_t parent;
+       int err;
+
+       if ((err = rtnl_tc_str2handle(arg, &parent)) < 0)
+               nl_cli_fatal(err, "Unable to parse handle \"%s\": %s",
+                     arg, nl_geterror(err));
+
+       rtnl_qdisc_set_parent(qdisc, parent);
+}
+
+void nl_cli_qdisc_parse_handle(struct rtnl_qdisc *qdisc, char *arg)
+{
+       uint32_t handle;
+       int err;
+
+       if ((err = rtnl_tc_str2handle(arg, &handle)) < 0)
+               nl_cli_fatal(err, "Unable to parse handle \"%s\": %s",
+                     arg, nl_geterror(err));
+
+       rtnl_qdisc_set_handle(qdisc, handle);
+}
+
+void nl_cli_qdisc_parse_kind(struct rtnl_qdisc *qdisc, char *arg)
+{
+       rtnl_qdisc_set_kind(qdisc, arg);
+}
+
+/** @} */
similarity index 50%
rename from src/route-utils.c
rename to src/lib/route.c
index 549e6ff222d2932f71c426f80443def244c46f8a..05cb2ada26cab33a4e19b69f180a0004217945e5 100644 (file)
@@ -1,28 +1,50 @@
 /*
- * src/route-utils.c     Route Helpers
+ * src/lib/route.c     CLI Route Helpers
  *
  *     This library is free software; you can redistribute it and/or
  *     modify it under the terms of the GNU Lesser General Public
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "route-utils.h"
+/**
+ * @ingroup cli
+ * @defgroup cli_route Routing
+ *
+ * @{
+ */
+
+#include <netlink/cli/utils.h>
+#include <netlink/cli/route.h>
 
-struct rtnl_route *nlt_alloc_route(void)
+struct rtnl_route *nl_cli_route_alloc(void)
 {
        struct rtnl_route *route;
 
        route = rtnl_route_alloc();
        if (!route)
-               fatal(ENOMEM, "Unable to allocate route object");
+               nl_cli_fatal(ENOMEM, "Unable to allocate route object");
 
        return route;
 }
 
-void parse_family(struct rtnl_route *route, char *arg)
+struct nl_cache *nl_cli_route_alloc_cache(struct nl_sock *sk, int flags)
+{
+       struct nl_cache *cache;
+       int err;
+
+       if ((err = rtnl_route_alloc_cache(sk, AF_UNSPEC, flags, &cache)) < 0)
+               nl_cli_fatal(err, "Unable to allocate route cache: %s\n",
+                            nl_geterror(err));
+
+       nl_cache_mngt_provide(cache);
+
+       return cache;
+}
+
+void nl_cli_route_parse_family(struct rtnl_route *route, char *arg)
 {
        int family;
 
@@ -30,46 +52,46 @@ void parse_family(struct rtnl_route *route, char *arg)
                rtnl_route_set_family(route, family);
 }
 
-void parse_dst(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_dst(struct rtnl_route *route, char *arg)
 {
        struct nl_addr *addr;
        int err;
 
-       addr = nlt_addr_parse(arg, rtnl_route_get_family(route));
+       addr = nl_cli_addr_parse(arg, rtnl_route_get_family(route));
        if ((err = rtnl_route_set_dst(route, addr)) < 0)
-               fatal(err, "Unable to set destination address: %s",
+               nl_cli_fatal(err, "Unable to set destination address: %s",
                      nl_geterror(err));
 
        nl_addr_put(addr);
 }
 
-void parse_src(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_src(struct rtnl_route *route, char *arg)
 {
        struct nl_addr *addr;
        int err;
 
-       addr = nlt_addr_parse(arg, rtnl_route_get_family(route));
+       addr = nl_cli_addr_parse(arg, rtnl_route_get_family(route));
        if ((err = rtnl_route_set_src(route, addr)) < 0)
-               fatal(err, "Unable to set source address: %s",
+               nl_cli_fatal(err, "Unable to set source address: %s",
                      nl_geterror(err));
 
        nl_addr_put(addr);
 }
 
-void parse_pref_src(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_pref_src(struct rtnl_route *route, char *arg)
 {
        struct nl_addr *addr;
        int err;
 
-       addr = nlt_addr_parse(arg, rtnl_route_get_family(route));
+       addr = nl_cli_addr_parse(arg, rtnl_route_get_family(route));
        if ((err = rtnl_route_set_pref_src(route, addr)) < 0)
-               fatal(err, "Unable to set preferred source address: %s",
+               nl_cli_fatal(err, "Unable to set preferred source address: %s",
                      nl_geterror(err));
 
        nl_addr_put(addr);
 }
 
-void parse_metric(struct rtnl_route *route, char *subopts)
+void nl_cli_route_parse_metric(struct rtnl_route *route, char *subopts)
 {
        /* strict equal order to RTAX_* */
        static char *const tokens[] = {
@@ -94,25 +116,25 @@ void parse_metric(struct rtnl_route *route, char *subopts)
        while (*subopts != '\0') {
                int ret = getsubopt(&subopts, tokens, &arg);
                if (ret == -1)
-                       fatal(EINVAL, "Unknown metric token \"%s\"", arg);
+                       nl_cli_fatal(EINVAL, "Unknown metric token \"%s\"", arg);
 
                if (ret == 0)
-                       fatal(EINVAL, "Invalid metric \"%s\"", tokens[ret]);
+                       nl_cli_fatal(EINVAL, "Invalid metric \"%s\"", tokens[ret]);
 
                if (arg == NULL)
-                       fatal(EINVAL, "Metric \"%s\", no value given", tokens[ret]);
+                       nl_cli_fatal(EINVAL, "Metric \"%s\", no value given", tokens[ret]);
 
                lval = strtoul(arg, &endptr, 0);
                if (endptr == arg)
-                       fatal(EINVAL, "Metric \"%s\", value not numeric", tokens[ret]);
+                       nl_cli_fatal(EINVAL, "Metric \"%s\", value not numeric", tokens[ret]);
 
                if ((ret = rtnl_route_set_metric(route, ret, lval)) < 0)
-                       fatal(ret, "Unable to set metric: %s",
+                       nl_cli_fatal(ret, "Unable to set metric: %s",
                              nl_geterror(ret));
        }
 }
 
-void parse_nexthop(struct rtnl_route *route, char *subopts,
+void nl_cli_route_parse_nexthop(struct rtnl_route *route, char *subopts,
                   struct nl_cache *link_cache)
 {
        enum {
@@ -133,27 +155,27 @@ void parse_nexthop(struct rtnl_route *route, char *subopts,
        char *arg, *endptr;
 
        if (!(nh = rtnl_route_nh_alloc()))
-               fatal(ENOMEM, "Out of memory");
+               nl_cli_fatal(ENOMEM, "Out of memory");
 
        while (*subopts != '\0') {
                int ret = getsubopt(&subopts, tokens, &arg);
                if (ret == -1)
-                       fatal(EINVAL, "Unknown nexthop token \"%s\"", arg);
+                       nl_cli_fatal(EINVAL, "Unknown nexthop token \"%s\"", arg);
 
                if (arg == NULL)
-                       fatal(EINVAL, "Missing argument to option \"%s\"\n",
+                       nl_cli_fatal(EINVAL, "Missing argument to option \"%s\"\n",
                                tokens[ret]);
 
                switch (ret) {
                case NH_DEV:
                        if (!(ival = rtnl_link_name2i(link_cache, arg)))
-                               fatal(ENOENT,"Link \"%s\" does not exist", arg);
+                               nl_cli_fatal(ENOENT,"Link \"%s\" does not exist", arg);
 
                        rtnl_route_nh_set_ifindex(nh, ival);
                        break;
 
                case NH_VIA:
-                       addr = nlt_addr_parse(arg,rtnl_route_get_family(route));
+                       addr = nl_cli_addr_parse(arg,rtnl_route_get_family(route));
                        rtnl_route_nh_set_gateway(nh, addr);
                        nl_addr_put(addr);
                        break;
@@ -161,7 +183,9 @@ void parse_nexthop(struct rtnl_route *route, char *subopts,
                case NH_WEIGHT:
                        lval = strtoul(arg, &endptr, 0);
                        if (endptr == arg)
-                               fatal(EINVAL, "Invalid weight \"%s\", not numeric", arg);
+                               nl_cli_fatal(EINVAL,
+                                            "Invalid weight \"%s\", not numeric",
+                                            arg);
                        rtnl_route_nh_set_weight(nh, lval);
                        break;
                }
@@ -170,7 +194,7 @@ void parse_nexthop(struct rtnl_route *route, char *subopts,
        rtnl_route_add_nexthop(route, nh);
 }
 
-void parse_table(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_table(struct rtnl_route *route, char *arg)
 {
        unsigned long lval;
        char *endptr;
@@ -178,34 +202,34 @@ void parse_table(struct rtnl_route *route, char *arg)
        lval = strtoul(arg, &endptr, 0);
        if (endptr == arg) {
                if ((lval = rtnl_route_str2table(arg)) < 0)
-                       fatal(EINVAL, "Unknown table name \"%s\"", arg);
+                       nl_cli_fatal(EINVAL, "Unknown table name \"%s\"", arg);
        }
 
        rtnl_route_set_table(route, lval);
 }
 
-void parse_prio(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_prio(struct rtnl_route *route, char *arg)
 {
        unsigned long lval;
        char *endptr;
 
        lval = strtoul(arg, &endptr, 0);
        if (endptr == arg)
-               fatal(EINVAL, "Invalid priority value, not numeric");
+               nl_cli_fatal(EINVAL, "Invalid priority value, not numeric");
        rtnl_route_set_priority(route, lval);
 }
 
-void parse_scope(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_scope(struct rtnl_route *route, char *arg)
 {
        int ival;
 
        if ((ival = rtnl_str2scope(arg)) < 0)
-               fatal(EINVAL, "Unknown routing scope \"%s\"", arg);
+               nl_cli_fatal(EINVAL, "Unknown routing scope \"%s\"", arg);
 
        rtnl_route_set_scope(route, ival);
 }
 
-void parse_protocol(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_protocol(struct rtnl_route *route, char *arg)
 {
        unsigned long lval;
        char *endptr;
@@ -213,31 +237,34 @@ void parse_protocol(struct rtnl_route *route, char *arg)
        lval = strtoul(arg, &endptr, 0);
        if (endptr == arg) {
                if ((lval = rtnl_route_str2proto(arg)) < 0)
-                       fatal(EINVAL, "Unknown routing protocol name \"%s\"",
-                               arg);
+                       nl_cli_fatal(EINVAL,
+                                    "Unknown routing protocol name \"%s\"",
+                                    arg);
        }
 
        rtnl_route_set_protocol(route, lval);
 }
 
-void parse_type(struct rtnl_route *route, char *arg)
+void nl_cli_route_parse_type(struct rtnl_route *route, char *arg)
 {
        int ival;
 
        if ((ival = nl_str2rtntype(arg)) < 0)
-               fatal(EINVAL, "Unknown routing type \"%s\"", arg);
+               nl_cli_fatal(EINVAL, "Unknown routing type \"%s\"", arg);
 
        if ((ival = rtnl_route_set_type(route, ival)) < 0)
-               fatal(ival, "Unable to set routing type: %s",
+               nl_cli_fatal(ival, "Unable to set routing type: %s",
                      nl_geterror(ival));
 }
 
-void parse_iif(struct rtnl_route *route, char *arg, struct nl_cache *link_cache)
+void nl_cli_route_parse_iif(struct rtnl_route *route, char *arg, struct nl_cache *link_cache)
 {
        int ival;
 
        if (!(ival = rtnl_link_name2i(link_cache, arg)))
-               fatal(ENOENT, "Link \"%s\" does not exist", arg);
+               nl_cli_fatal(ENOENT, "Link \"%s\" does not exist", arg);
 
        rtnl_route_set_iif(route, ival);
 }
+
+/** @} */
diff --git a/src/lib/rule.c b/src/lib/rule.c
new file mode 100644 (file)
index 0000000..96f1d4c
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * src/lib/rule.c     CLI Routing Rule Helpers
+ *
+ *     This library is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU Lesser General Public
+ *     License as published by the Free Software Foundation version 2.1
+ *     of the License.
+ *
+ * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
+ */
+
+/**
+ * @ingroup cli
+ * @defgroup cli_rule Routing Rules
+ *
+ * @{
+ */
+
+#include <netlink/cli/utils.h>
+#include <netlink/cli/rule.h>
+
+struct rtnl_rule *nl_cli_rule_alloc(void)
+{
+       struct rtnl_rule *rule;
+
+       rule = rtnl_rule_alloc();
+       if (!rule)
+               nl_cli_fatal(ENOMEM, "Unable to allocate rule object");
+
+       return rule;
+}
+
+struct nl_cache *nl_cli_rule_alloc_cache(struct nl_sock *sk)
+{
+       struct nl_cache *cache;
+       int err;
+
+       if ((err = rtnl_rule_alloc_cache(sk, AF_UNSPEC, &cache)) < 0)
+               nl_cli_fatal(err, "Unable to allocate routing rule cache: %s\n",
+                            nl_geterror(err));
+
+       nl_cache_mngt_provide(cache);
+
+       return cache;
+}
+
+void nl_cli_rule_parse_family(struct rtnl_rule *rule, char *arg)
+{
+       int family;
+
+       if ((family = nl_str2af(arg)) != AF_UNSPEC)
+               rtnl_rule_set_family(rule, family);
+}
+
+/** @} */
similarity index 55%
rename from src/utils.c
rename to src/lib/utils.c
index a7c11e488b8b43780222ab1cdfcb8520b393cbe9..02a7be120b1d41ba28b24b90fcc7aa12ae6e2039 100644 (file)
@@ -6,32 +6,35 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+/**
+ * @defgroup cli Command Line Interface API
+ *
+ * @{
+ */
 
-#include <stdlib.h>
-#include <stdarg.h>
-#include <limits.h>
+#include <netlink/cli/utils.h>
 
-uint32_t parse_u32(const char *arg)
+uint32_t nl_cli_parse_u32(const char *arg)
 {
        unsigned long lval;
        char *endptr;
 
        lval = strtoul(arg, &endptr, 0);
        if (endptr == arg || lval == ULONG_MAX)
-               fatal(EINVAL, "Unable to parse \"%s\", not a number.", arg);
+               nl_cli_fatal(EINVAL, "Unable to parse \"%s\", not a number.",
+                            arg);
 
        return (uint32_t) lval;
 }
 
-void nlt_print_version(void)
+void nl_cli_print_version(void)
 {
        printf("libnl tools version %s\n", LIBNL_VERSION);
        printf(
-       "Copyright (C) 2003-2008 Thomas Graf\n"
+       "Copyright (C) 2003-2009 Thomas Graf <tgraf@redhat.com>\n"
        "\n"
        "This program comes with ABSOLUTELY NO WARRANTY. This is free \n"
        "software, and you are welcome to redistribute it under certain\n"
@@ -41,55 +44,57 @@ void nlt_print_version(void)
        exit(0);
 }
 
-void fatal(int err, const char *fmt, ...)
+void nl_cli_fatal(int err, const char *fmt, ...)
 {
        va_list ap;
 
        fprintf(stderr, "Error: ");
 
-       va_start(ap, fmt);
-       vfprintf(stderr, fmt, ap);
-       va_end(ap);
-
-       fprintf(stderr, "\n");
+       if (fmt) {
+               va_start(ap, fmt);
+               vfprintf(stderr, fmt, ap);
+               va_end(ap);
+               fprintf(stderr, "\n");
+       } else
+               fprintf(stderr, "%s\n", strerror(err));
 
        exit(abs(err));
 }
 
-int nlt_connect(struct nl_sock *sk, int protocol)
+int nl_cli_connect(struct nl_sock *sk, int protocol)
 {
        int err;
 
        if ((err = nl_connect(sk, protocol)) < 0)
-               fatal(err, "Unable to connect netlink socket: %s",
-                       nl_geterror(err));
+               nl_cli_fatal(err, "Unable to connect netlink socket: %s",
+                            nl_geterror(err));
 
        return err;
 }
 
-struct nl_sock *nlt_alloc_socket(void)
+struct nl_sock *nl_cli_alloc_socket(void)
 {
        struct nl_sock *sock;
 
        if (!(sock = nl_socket_alloc()))
-               fatal(ENOBUFS, "Unable to allocate netlink socket");
+               nl_cli_fatal(ENOBUFS, "Unable to allocate netlink socket");
 
        return sock;
 }
 
-struct nl_addr *nlt_addr_parse(const char *str, int family)
+struct nl_addr *nl_cli_addr_parse(const char *str, int family)
 {
        struct nl_addr *addr;
        int err;
 
        if ((err = nl_addr_parse(str, family, &addr)) < 0)
-               fatal(err, "Unable to parse address \"%s\": %s",
-                     str, nl_geterror(err));
+               nl_cli_fatal(err, "Unable to parse address \"%s\": %s",
+                            str, nl_geterror(err));
 
        return addr;
 }
 
-int nlt_parse_dumptype(const char *str)
+int nl_cli_parse_dumptype(const char *str)
 {
        if (!strcasecmp(str, "brief"))
                return NL_DUMP_LINE;
@@ -100,13 +105,13 @@ int nlt_parse_dumptype(const char *str)
        else if (!strcasecmp(str, "env"))
                return NL_DUMP_ENV;
        else
-               fatal(EINVAL, "Invalid dump type \"%s\".\n", str);
+               nl_cli_fatal(EINVAL, "Invalid dump type \"%s\".\n", str);
 
        return 0;
 }
 
-int nlt_confirm(struct nl_object *obj, struct nl_dump_params *params,
-               int default_yes)
+int nl_cli_confirm(struct nl_object *obj, struct nl_dump_params *params,
+                  int default_yes)
 {
        int answer;
 
@@ -124,18 +129,19 @@ int nlt_confirm(struct nl_object *obj, struct nl_dump_params *params,
        return answer == 'y';
 }
 
-struct nl_cache *alloc_cache(struct nl_sock *sock, const char *name,
-                            int (*ac)(struct nl_sock *, struct nl_cache **))
+struct nl_cache *nl_cli_alloc_cache(struct nl_sock *sock, const char *name,
+                           int (*ac)(struct nl_sock *, struct nl_cache **))
 {
        struct nl_cache *cache;
        int err;
 
        if ((err = ac(sock, &cache)) < 0)
-               fatal(err, "Unable to allocate %s cache: %s",
-                     name, nl_geterror(err));
+               nl_cli_fatal(err, "Unable to allocate %s cache: %s",
+                            name, nl_geterror(err));
 
        nl_cache_mngt_provide(cache);
 
        return cache;
 }
 
+/** @} */
diff --git a/src/link-utils.c b/src/link-utils.c
deleted file mode 100644 (file)
index 93bb4c0..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * src/link-utils.c     Link Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "link-utils.h"
-
-struct rtnl_link *nlt_alloc_link(void)
-{
-       struct rtnl_link *link;
-
-       link = rtnl_link_alloc();
-       if (!link)
-               fatal(ENOMEM, "Unable to allocate link object");
-
-       return link;
-}
-
-void parse_family(struct rtnl_link *link, char *arg)
-{
-       int family;
-
-       if ((family = nl_str2af(arg)) == AF_UNSPEC)
-               fatal(EINVAL, "Unable to translate address family \"%s\"", arg);
-
-       rtnl_link_set_family(link, family);
-}
-
-void parse_name(struct rtnl_link *link, char *arg)
-{
-       rtnl_link_set_name(link, arg);
-}
-
-void parse_mtu(struct rtnl_link *link, char *arg)
-{
-       uint32_t mtu = parse_u32(arg);
-       rtnl_link_set_mtu(link, mtu);
-}
-
-void parse_ifindex(struct rtnl_link *link, char *arg)
-{
-       uint32_t index = parse_u32(arg);
-       rtnl_link_set_ifindex(link, index);
-}
-
-void parse_txqlen(struct rtnl_link *link, char *arg)
-{
-       uint32_t qlen = parse_u32(arg);
-       rtnl_link_set_txqlen(link, qlen);
-}
-
-void parse_weight(struct rtnl_link *link, char *arg)
-{
-       uint32_t weight = parse_u32(arg);
-       rtnl_link_set_weight(link, weight);
-}
diff --git a/src/link-utils.h b/src/link-utils.h
deleted file mode 100644 (file)
index 1d5c6c0..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * src/link-utils.h     Link Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __LINK_UTILS_H_
-#define __LINK_UTILS_H_
-
-#include "utils.h"
-
-extern struct rtnl_link *nlt_alloc_link(void);
-extern void parse_family(struct rtnl_link *, char *);
-extern void parse_name(struct rtnl_link *, char *);
-extern void parse_mtu(struct rtnl_link *, char *);
-extern void parse_ifindex(struct rtnl_link *, char *);
-extern void parse_txqlen(struct rtnl_link *, char *);
-extern void parse_weight(struct rtnl_link *, char *);
-
-#endif
diff --git a/src/log-utils.c b/src/log-utils.c
deleted file mode 100644 (file)
index e3cfe44..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * src/ct-utils.c              Conntrack Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "log-utils.h"
-
-struct nfnl_log *nlt_alloc_log(void)
-{
-       struct nfnl_log *log;
-
-       log = nfnl_log_alloc();
-       if (!log)
-               fatal(ENOMEM, "Unable to allocate log object");
-
-       return log;
-}
diff --git a/src/log-utils.h b/src/log-utils.h
deleted file mode 100644 (file)
index fb5bf2a..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * src/log-utils.h             Log Helper
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __LOG_UTILS_H_
-#define __LOG_UTILS_H_
-
-#include "utils.h"
-#include <linux/netfilter/nfnetlink_log.h>
-#include <netlink/netfilter/nfnl.h>
-#include <netlink/netfilter/log.h>
-
-extern struct nfnl_log *nlt_alloc_log(void);
-
-#endif
diff --git a/src/neigh-utils.c b/src/neigh-utils.c
deleted file mode 100644 (file)
index 3e2d699..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * src/neigh-utils.c     Neighbour Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "neigh-utils.h"
-
-struct rtnl_neigh *nlt_alloc_neigh(void)
-{
-       struct rtnl_neigh *neigh;
-
-       neigh = rtnl_neigh_alloc();
-       if (!neigh)
-               fatal(ENOMEM, "Unable to allocate neighbout object");
-
-       return neigh;
-}
-
-void parse_dst(struct rtnl_neigh *neigh, char *arg)
-{
-       struct nl_addr *a;
-       int err;
-
-       a = nlt_addr_parse(arg, rtnl_neigh_get_family(neigh));
-       if ((err = rtnl_neigh_set_dst(neigh, a)) < 0)
-               fatal(err, "Unable to set local address: %s",
-                       nl_geterror(err));
-
-       nl_addr_put(a);
-}
-
-void parse_lladdr(struct rtnl_neigh *neigh, char *arg)
-{
-       struct nl_addr *a;
-
-       a = nlt_addr_parse(arg, AF_UNSPEC);
-       rtnl_neigh_set_lladdr(neigh, a);
-       nl_addr_put(a);
-}
-
-void parse_dev(struct rtnl_neigh *neigh, struct nl_cache *link_cache, char *arg)
-{
-       int ival;
-
-       if (!(ival = rtnl_link_name2i(link_cache, arg)))
-               fatal(ENOENT, "Link \"%s\" does not exist", arg);
-
-       rtnl_neigh_set_ifindex(neigh, ival);
-}
-
-void parse_family(struct rtnl_neigh *neigh, char *arg)
-{
-       int family;
-
-       if ((family = nl_str2af(arg)) == AF_UNSPEC)
-               fatal(EINVAL, "Unable to translate address family \"%s\"", arg);
-
-       rtnl_neigh_set_family(neigh, family);
-}
-
-void parse_state(struct rtnl_neigh *neigh, char *arg)
-{
-       int state;
-       
-       if ((state = rtnl_neigh_str2state(arg)) < 0)
-               fatal(state, "Unable to translate state \"%s\": %s",
-                       arg, state);
-
-       rtnl_neigh_set_state(neigh, state);
-}
diff --git a/src/neigh-utils.h b/src/neigh-utils.h
deleted file mode 100644 (file)
index 3662546..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * src/neigh-utils.h     Neighbour Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __NEIGH_UTILS_H_
-#define __NEIGH_UTILS_H_
-
-#include "utils.h"
-
-extern struct rtnl_neigh *nlt_alloc_neigh(void);
-extern void parse_dst(struct rtnl_neigh *, char *);
-extern void parse_lladdr(struct rtnl_neigh *, char *);
-extern void parse_dev(struct rtnl_neigh *, struct nl_cache *, char *);
-extern void parse_family(struct rtnl_neigh *, char *);
-extern void parse_state(struct rtnl_neigh *, char *);
-
-#endif
index c751c112a8e2b165d3a85b109ebe1bc6b413446f..5f72998896bea71e94f0844ce324789c509b528d 100644 (file)
@@ -6,12 +6,13 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  * Copyright (c) 2007 Philip Craig <philipc@snapgear.com>
  * Copyright (c) 2007 Secure Computing Corporation
  */
 
-#include "ct-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/ct.h>
 
 static void print_usage(void)
 {
@@ -54,7 +55,7 @@ int main(int argc, char *argv[])
                .dp_fd = stdout,
        };
  
-       ct = nlt_alloc_ct();
+       ct = nl_cli_ct_alloc();
  
        for (;;) {
                int c, optidx = 0;
@@ -103,31 +104,31 @@ int main(int argc, char *argv[])
                case '?': exit(NLE_INVAL);
                case '4': nfnl_ct_set_family(ct, AF_INET); break;
                case '6': nfnl_ct_set_family(ct, AF_INET6); break;
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'i': parse_id(ct, optarg); break;
-               case 'p': parse_protocol(ct, optarg); break;
-               case ARG_TCP_STATE: parse_tcp_state(ct, optarg); break;
-               case ARG_ORIG_SRC: parse_src(ct, 0, optarg); break;
-               case ARG_ORIG_SPORT: parse_src_port(ct, 0, optarg); break;
-               case ARG_ORIG_DST: parse_dst(ct, 0, optarg); break;
-               case ARG_ORIG_DPORT: parse_dst_port(ct, 0, optarg); break;
-               case ARG_REPLY_SRC: parse_src(ct, 1, optarg); break;
-               case ARG_REPLY_SPORT: parse_src_port(ct, 1, optarg); break;
-               case ARG_REPLY_DST: parse_dst(ct, 1, optarg); break;
-               case ARG_REPLY_DPORT: parse_dst_port(ct, 1, optarg); break;
-               case 'F': parse_family(ct, optarg); break;
-               case ARG_MARK: parse_mark(ct, optarg); break;
-               case ARG_TIMEOUT: parse_timeout(ct, optarg); break;
-               case ARG_REFCNT: parse_use(ct, optarg); break;
-               case ARG_FLAGS: parse_status(ct, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'i': nl_cli_ct_parse_id(ct, optarg); break;
+               case 'p': nl_cli_ct_parse_protocol(ct, optarg); break;
+               case ARG_TCP_STATE: nl_cli_ct_parse_tcp_state(ct, optarg); break;
+               case ARG_ORIG_SRC: nl_cli_ct_parse_src(ct, 0, optarg); break;
+               case ARG_ORIG_SPORT: nl_cli_ct_parse_src_port(ct, 0, optarg); break;
+               case ARG_ORIG_DST: nl_cli_ct_parse_dst(ct, 0, optarg); break;
+               case ARG_ORIG_DPORT: nl_cli_ct_parse_dst_port(ct, 0, optarg); break;
+               case ARG_REPLY_SRC: nl_cli_ct_parse_src(ct, 1, optarg); break;
+               case ARG_REPLY_SPORT: nl_cli_ct_parse_src_port(ct, 1, optarg); break;
+               case ARG_REPLY_DST: nl_cli_ct_parse_dst(ct, 1, optarg); break;
+               case ARG_REPLY_DPORT: nl_cli_ct_parse_dst_port(ct, 1, optarg); break;
+               case 'F': nl_cli_ct_parse_family(ct, optarg); break;
+               case ARG_MARK: nl_cli_ct_parse_mark(ct, optarg); break;
+               case ARG_TIMEOUT: nl_cli_ct_parse_timeout(ct, optarg); break;
+               case ARG_REFCNT: nl_cli_ct_parse_use(ct, optarg); break;
+               case ARG_FLAGS: nl_cli_ct_parse_status(ct, optarg); break;
                }
        }
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_NETFILTER);
-       ct_cache = nlt_alloc_ct_cache(sock);
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_NETFILTER);
+       ct_cache = nl_cli_ct_alloc_cache(sock);
 
        nl_cache_dump_filter(ct_cache, &params, OBJ_CAST(ct));
 
index 33a689be4d78af13aa1a407ccbdbaccdaf43aece..26bae6da33fb2afc2a6e6d794ad273de5cff8449 100644 (file)
  * Copyright (c) 2007 Secure Computing Corporation
  */
 
-#include "log-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
+#include <linux/netfilter/nfnetlink_log.h>
+#include <netlink/netfilter/nfnl.h>
+#include <netlink/netfilter/log.h>
+
+static struct nfnl_log *alloc_log(void)
+{
+       struct nfnl_log *log;
+
+       log = nfnl_log_alloc();
+       if (!log)
+               nl_cli_fatal(ENOMEM, "Unable to allocate log object");
+
+       return log;
+}
 
 static void obj_input(struct nl_object *obj, void *arg)
 {
@@ -44,7 +59,7 @@ int main(int argc, char *argv[])
        int err;
        int family;
 
-       nf_sock = nlt_alloc_socket();
+       nf_sock = nl_cli_alloc_socket();
        nl_socket_disable_seq_check(nf_sock);
        nl_socket_modify_cb(nf_sock, NL_CB_VALID, NL_CB_CUSTOM, event_input, NULL);
 
@@ -54,26 +69,28 @@ int main(int argc, char *argv[])
                return 2;
        }
 
-       nlt_connect(nf_sock, NETLINK_NETFILTER);
+       nl_cli_connect(nf_sock, NETLINK_NETFILTER);
 
        family = nl_str2af(argv[1]);
        if (family == AF_UNSPEC)
-               fatal(NLE_INVAL, "Unknown family \"%s\": %s",
-                     argv[1], nl_geterror(family));
+               nl_cli_fatal(NLE_INVAL, "Unknown family \"%s\": %s",
+                            argv[1], nl_geterror(family));
 
        nfnl_log_pf_unbind(nf_sock, family);
        if ((err = nfnl_log_pf_bind(nf_sock, family)) < 0)
-               fatal(err, "Unable to bind logger: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to bind logger: %s",
+                            nl_geterror(err));
 
-       log = nlt_alloc_log();
+       log = alloc_log();
        nfnl_log_set_group(log, atoi(argv[2]));
 
        copy_mode = NFNL_LOG_COPY_META;
        if (argc > 3) {
                copy_mode = nfnl_log_str2copy_mode(argv[3]);
                if (copy_mode < 0)
-                       fatal(copy_mode, "Unable to parse copy mode \"%s\": %s",
-                             argv[3], nl_geterror(copy_mode));
+                       nl_cli_fatal(copy_mode,
+                                    "Unable to parse copy mode \"%s\": %s",
+                                    argv[3], nl_geterror(copy_mode));
        }
        nfnl_log_set_copy_mode(log, copy_mode);
 
@@ -83,7 +100,8 @@ int main(int argc, char *argv[])
        nfnl_log_set_copy_range(log, copy_range);
 
        if ((err = nfnl_log_create(nf_sock, log)) < 0)
-               fatal(err, "Unable to bind instance: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to bind instance: %s",
+                            nl_geterror(err));
 
        {
                struct nl_dump_params dp = {
@@ -96,9 +114,9 @@ int main(int argc, char *argv[])
                nl_object_dump((struct nl_object *) log, &dp);
        }
 
-       rt_sock = nlt_alloc_socket();
-       nlt_connect(rt_sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(rt_sock);
+       rt_sock = nl_cli_alloc_socket();
+       nl_cli_connect(rt_sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(rt_sock);
 
        while (1) {
                fd_set rfds;
index 619254a7fbf0b116c6c2e6d0babcb1feabd24580..fe99af4846beb532d7e6fd3d06f4963cb527ebbe 100644 (file)
@@ -11,7 +11,7 @@
  * Copyright (c) 2007 Secure Computing Corporation
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
 #include <netlink/netfilter/nfnl.h>
 
 static void obj_input(struct nl_object *obj, void *arg)
@@ -50,7 +50,7 @@ int main(int argc, char *argv[])
                { NFNLGRP_NONE, NULL }
        };
 
-       sock = nlt_alloc_socket();
+       sock = nl_cli_alloc_socket();
        nl_socket_disable_seq_check(sock);
        nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, event_input, NULL);
 
@@ -64,7 +64,7 @@ int main(int argc, char *argv[])
                return 2;
        }
 
-       nlt_connect(sock, NETLINK_NETFILTER);
+       nl_cli_connect(sock, NETLINK_NETFILTER);
 
        for (idx = 1; argc > idx; idx++) {
                for (i = 0; groups[i].gr_id != NFNLGRP_NONE; i++) {
@@ -73,14 +73,15 @@ int main(int argc, char *argv[])
 
                        err = nl_socket_add_membership(sock, groups[i].gr_id);
                        if (err < 0)
-                               fatal(err, "Unable to add membership: %s",
-                                     nl_geterror(err));
+                               nl_cli_fatal(err,
+                                            "Unable to add membership: %s",
+                                            nl_geterror(err));
                        break;
                }
 
                if (groups[i].gr_id == NFNLGRP_NONE)
-                       fatal(NLE_OBJ_NOTFOUND, "Unknown group: \"%s\"",
-                             argv[idx]);
+                       nl_cli_fatal(NLE_OBJ_NOTFOUND, "Unknown group: \"%s\"",
+                                    argv[idx]);
        }
 
        while (1) {
index ac2f4ea9dfa2fe04516d00111c32f0ded0889a26..5874688ce7210ba99722d677e2471713cbc45c2c 100644 (file)
  */
 
 
-#include "queue-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
+#include <linux/netfilter.h>
+#include <linux/netfilter/nfnetlink_queue.h>
+#include <netlink/netfilter/nfnl.h>
+#include <netlink/netfilter/queue.h>
+#include <netlink/netfilter/queue_msg.h>
 
 static struct nl_sock *nf_sock;
 
+static struct nfnl_queue *alloc_queue(void)
+{
+       struct nfnl_queue *queue;
+
+       queue = nfnl_queue_alloc();
+       if (!queue)
+               nl_cli_fatal(ENOMEM, "Unable to allocate queue object");
+
+       return queue;
+}
+
+
 static void obj_input(struct nl_object *obj, void *arg)
 {
        struct nfnl_queue_msg *msg = (struct nfnl_queue_msg *) obj;
@@ -49,7 +67,7 @@ int main(int argc, char *argv[])
 
        nf_sock = nfnl_queue_socket_alloc();
        if (nf_sock == NULL)
-               fatal(ENOBUFS, "Unable to allocate netlink socket");
+               nl_cli_fatal(ENOBUFS, "Unable to allocate netlink socket");
 
        nl_socket_disable_seq_check(nf_sock);
        nl_socket_modify_cb(nf_sock, NL_CB_VALID, NL_CB_CUSTOM, event_input, NULL);
@@ -60,24 +78,26 @@ int main(int argc, char *argv[])
                return 2;
        }
 
-       nlt_connect(nf_sock, NETLINK_NETFILTER);
+       nl_cli_connect(nf_sock, NETLINK_NETFILTER);
 
        if ((family = nl_str2af(argv[1])) == AF_UNSPEC)
-               fatal(NLE_INVAL, "Unknown family \"%s\"", argv[1]);
+               nl_cli_fatal(NLE_INVAL, "Unknown family \"%s\"", argv[1]);
 
        nfnl_queue_pf_unbind(nf_sock, family);
        if ((err = nfnl_queue_pf_bind(nf_sock, family)) < 0)
-               fatal(err, "Unable to bind logger: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to bind logger: %s",
+                            nl_geterror(err));
 
-       queue = nlt_alloc_queue();
+       queue = alloc_queue();
        nfnl_queue_set_group(queue, atoi(argv[2]));
 
        copy_mode = NFNL_QUEUE_COPY_PACKET;
        if (argc > 3) {
                copy_mode = nfnl_queue_str2copy_mode(argv[3]);
                if (copy_mode < 0)
-                       fatal(copy_mode, "Unable to parse copy mode \"%s\": %s",
-                             argv[3], nl_geterror(copy_mode));
+                       nl_cli_fatal(copy_mode,
+                                    "Unable to parse copy mode \"%s\": %s",
+                                    argv[3], nl_geterror(copy_mode));
        }
        nfnl_queue_set_copy_mode(queue, copy_mode);
 
@@ -87,11 +107,11 @@ int main(int argc, char *argv[])
        nfnl_queue_set_copy_range(queue, copy_range);
 
        if ((err = nfnl_queue_create(nf_sock, queue)) < 0)
-               fatal(err, "Unable to bind queue: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to bind queue: %s", nl_geterror(err));
 
-       rt_sock = nlt_alloc_socket();
-       nlt_connect(rt_sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(rt_sock);
+       rt_sock = nl_cli_alloc_socket();
+       nl_cli_connect(rt_sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(rt_sock);
 
        while (1) {
                fd_set rfds;
index 74911a6040f1cd8aa0167350f11b842fcd0cd833..52995ec68a37639839111253e8eb44bc1c2a9014 100644 (file)
@@ -5,10 +5,12 @@
  *     modify it under the terms of the GNU General Public License as
  *     published by the Free Software Foundation version 2 of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "addr-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/addr.h>
+#include <netlink/cli/link.h>
 
 static int quiet = 0;
 
@@ -49,10 +51,10 @@ int main(int argc, char *argv[])
        };
        int err, nlflags = NLM_F_CREATE;
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       addr = nlt_alloc_addr();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       addr = nl_cli_addr_alloc();
  
        for (;;) {
                int c, optidx = 0;
@@ -92,21 +94,22 @@ int main(int argc, char *argv[])
                case ARG_REPLACE: nlflags |= NLM_F_REPLACE; break;
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'a': parse_local(addr, optarg); break;
-               case 'd': parse_dev(addr, link_cache, optarg); break;
-               case ARG_FAMILY: parse_family(addr, optarg); break;
-               case ARG_LABEL: parse_label(addr, optarg); break;
-               case ARG_PEER: parse_peer(addr, optarg); break;
-               case ARG_SCOPE: parse_scope(addr, optarg); break;
-               case ARG_BROADCAST: parse_broadcast(addr, optarg); break;
-               case ARG_PREFERRED: parse_preferred(addr, optarg); break;
-               case ARG_VALID: parse_valid(addr, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'a': nl_cli_addr_parse_local(addr, optarg); break;
+               case 'd': nl_cli_addr_parse_dev(addr, link_cache, optarg); break;
+               case ARG_FAMILY: nl_cli_addr_parse_family(addr, optarg); break;
+               case ARG_LABEL: nl_cli_addr_parse_label(addr, optarg); break;
+               case ARG_PEER: nl_cli_addr_parse_peer(addr, optarg); break;
+               case ARG_SCOPE: nl_cli_addr_parse_scope(addr, optarg); break;
+               case ARG_BROADCAST: nl_cli_addr_parse_broadcast(addr, optarg); break;
+               case ARG_PREFERRED: nl_cli_addr_parse_preferred(addr, optarg); break;
+               case ARG_VALID: nl_cli_addr_parse_valid(addr, optarg); break;
                }
        }
 
        if ((err = rtnl_addr_add(sock, addr, nlflags)) < 0)
-               fatal(err, "Unable to add address: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to add address: %s",
+                            nl_geterror(err));
 
        if (!quiet) {
                printf("Added ");
index f18556389c6185cc0dd5173fcb188131e435c81b..2849c017d8c28ac205b39c17833c36839be70544 100644 (file)
@@ -5,10 +5,12 @@
  *     modify it under the terms of the GNU General Public License as
  *     published by the Free Software Foundation version 2 of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "addr-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/addr.h>
+#include <netlink/cli/link.h>
 
 static struct nl_sock *sock;
 static int interactive = 0, default_yes = 0, quiet = 0;
@@ -51,11 +53,12 @@ static void delete_cb(struct nl_object *obj, void *arg)
        };
        int err;
 
-       if (interactive && !nlt_confirm(obj, &params, default_yes))
+       if (interactive && !nl_cli_confirm(obj, &params, default_yes))
                return;
 
        if ((err = rtnl_addr_delete(sock, addr, 0)) < 0)
-               fatal(err, "Unable to delete address: %s\n", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to delete address: %s\n",
+                            nl_geterror(err));
 
        if (!quiet) {
                printf("Deleted ");
@@ -70,11 +73,11 @@ int main(int argc, char *argv[])
        struct rtnl_addr *addr;
        struct nl_cache *link_cache, *addr_cache;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       addr_cache = nlt_alloc_addr_cache(sock);
-       addr = nlt_alloc_addr();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       addr_cache = nl_cli_addr_alloc_cache(sock);
+       addr = nl_cli_addr_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -115,16 +118,16 @@ int main(int argc, char *argv[])
                case ARG_YES: default_yes = 1; break;
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'a': parse_local(addr, optarg); break;
-               case 'd': parse_dev(addr, link_cache, optarg); break;
-               case ARG_FAMILY: parse_family(addr, optarg); break;
-               case ARG_LABEL: parse_label(addr, optarg); break;
-               case ARG_PEER: parse_peer(addr, optarg); break;
-               case ARG_SCOPE: parse_scope(addr, optarg); break;
-               case ARG_BROADCAST: parse_broadcast(addr, optarg); break;
-               case ARG_PREFERRED: parse_preferred(addr, optarg); break;
-               case ARG_VALID: parse_valid(addr, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'a': nl_cli_addr_parse_local(addr, optarg); break;
+               case 'd': nl_cli_addr_parse_dev(addr, link_cache, optarg); break;
+               case ARG_FAMILY: nl_cli_addr_parse_family(addr, optarg); break;
+               case ARG_LABEL: nl_cli_addr_parse_label(addr, optarg); break;
+               case ARG_PEER: nl_cli_addr_parse_peer(addr, optarg); break;
+               case ARG_SCOPE: nl_cli_addr_parse_scope(addr, optarg); break;
+               case ARG_BROADCAST: nl_cli_addr_parse_broadcast(addr, optarg); break;
+               case ARG_PREFERRED: nl_cli_addr_parse_preferred(addr, optarg); break;
+               case ARG_VALID: nl_cli_addr_parse_valid(addr, optarg); break;
                }
        }
 
index 1393f6e21569adb276055846d206a370fc12730b..9b045a524c9de23076c610fb7c7dc69ca20d101c 100644 (file)
@@ -5,10 +5,12 @@
  *     modify it under the terms of the GNU General Public License as
  *     published by the Free Software Foundation version 2 of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "addr-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/addr.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -118,11 +120,11 @@ int main(int argc, char *argv[])
        };
        int dump_env = 0;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       addr_cache = nlt_alloc_addr_cache(sock);
-       addr = nlt_alloc_addr();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       addr_cache = nl_cli_addr_alloc_cache(sock);
+       addr = nl_cli_addr_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -168,16 +170,16 @@ int main(int argc, char *argv[])
                case ARG_ENV: dump_env = 1; break;
                case ARG_PREFIX: prefix = strdup(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'a': parse_local(addr, optarg); break;
-               case 'd': parse_dev(addr, link_cache, optarg); break;
-               case ARG_FAMILY: parse_family(addr, optarg); break;
-               case ARG_LABEL: parse_label(addr, optarg); break;
-               case ARG_PEER: parse_peer(addr, optarg); break;
-               case ARG_SCOPE: parse_scope(addr, optarg); break;
-               case ARG_BROADCAST: parse_broadcast(addr, optarg); break;
-               case ARG_PREFERRED: parse_preferred(addr, optarg); break;
-               case ARG_VALID: parse_valid(addr, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'a': nl_cli_addr_parse_local(addr, optarg); break;
+               case 'd': nl_cli_addr_parse_dev(addr, link_cache, optarg); break;
+               case ARG_FAMILY: nl_cli_addr_parse_family(addr, optarg); break;
+               case ARG_LABEL: nl_cli_addr_parse_label(addr, optarg); break;
+               case ARG_PEER: nl_cli_addr_parse_peer(addr, optarg); break;
+               case ARG_SCOPE: nl_cli_addr_parse_scope(addr, optarg); break;
+               case ARG_BROADCAST: nl_cli_addr_parse_broadcast(addr, optarg); break;
+               case ARG_PREFERRED: nl_cli_addr_parse_preferred(addr, optarg); break;
+               case ARG_VALID: nl_cli_addr_parse_valid(addr, optarg); break;
                }
        }
 
index 328e60fb32cf06623466dc95bb7ffe11b5beb060..705cf329b891cf3809d4e7a7c5fc4dae00b8a0d7 100644 (file)
@@ -6,10 +6,10 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
 
 static void print_usage(void)
 {
@@ -73,19 +73,19 @@ int main(int argc, char *argv[])
        if (optind >= argc)
                print_usage();
 
-       nlh = nlt_alloc_socket();
+       nlh = nl_cli_alloc_socket();
 
        if ((err = nl_addr_parse(argv[optind], AF_INET, &addr)) < 0)
-               fatal(err, "Unable to parse address \"%s\": %s\n",
+               nl_cli_fatal(err, "Unable to parse address \"%s\": %s\n",
                        argv[optind], nl_geterror(err));
 
        result = flnl_result_alloc_cache();
        if (!result)
-               fatal(ENOMEM, "Unable to allocate cache");
+               nl_cli_fatal(ENOMEM, "Unable to allocate cache");
 
        request = flnl_request_alloc();
        if (!request)
-               fatal(ENOMEM, "Unable to allocate request");
+               nl_cli_fatal(ENOMEM, "Unable to allocate request");
 
        flnl_request_set_table(request, table);
        flnl_request_set_fwmark(request, fwmark);
@@ -95,13 +95,13 @@ int main(int argc, char *argv[])
        err = flnl_request_set_addr(request, addr);
        nl_addr_put(addr);
        if (err < 0)
-               fatal(err, "Unable to send request: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to send request: %s", nl_geterror(err));
 
-       nlt_connect(nlh, NETLINK_FIB_LOOKUP);
+       nl_cli_connect(nlh, NETLINK_FIB_LOOKUP);
 
        err = flnl_lookup(nlh, request, result);
        if (err < 0)
-               fatal(err, "Unable to lookup: %s\n", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to lookup: %s\n", nl_geterror(err));
 
        nl_cache_dump(result, &params);
 
index 109ec467c3f5e8a5b165cf6e521afe459b006ae9..68e5158a7afe38d63c0e321588a412bfcb36df62 100644 (file)
@@ -6,10 +6,11 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -27,14 +28,15 @@ int main(int argc, char *argv[])
        if (argc < 2)
                print_usage();
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
 
-       ifindex = parse_u32(argv[1]);
+       ifindex = nl_cli_parse_u32(argv[1]);
 
        if (!rtnl_link_i2name(link_cache, ifindex, name, sizeof(name)))
-               fatal(ENOENT, "Interface index %d does not exist", ifindex);
+               nl_cli_fatal(ENOENT, "Interface index %d does not exist",
+                            ifindex);
 
        printf("%s\n", name);
 
index 99b1ad8474b94c98e13068cedcb387e9c20e749b..5e1e3f6afbc4311422a416f1db2d0d804c83e565 100644 (file)
@@ -6,7 +6,7 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
 #if 0
@@ -24,7 +24,8 @@ static void print_usage(void)
 }
 #endif
 
-#include "link-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -56,10 +57,10 @@ int main(int argc, char *argv[])
                .dp_fd = stdout,
        };
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       link = nlt_alloc_link();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       link = nl_cli_link_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -87,15 +88,15 @@ int main(int argc, char *argv[])
                        break;
 
                switch (c) {
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'n': parse_name(link, optarg); break;
-               case 'i': parse_ifindex(link, optarg); break;
-               case ARG_FAMILY: parse_family(link, optarg); break;
-               case ARG_MTU: parse_mtu(link, optarg); break;
-               case ARG_TXQLEN: parse_txqlen(link, optarg); break;
-               case ARG_WEIGHT: parse_weight(link, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'n': nl_cli_link_parse_name(link, optarg); break;
+               case 'i': nl_cli_link_parse_ifindex(link, optarg); break;
+               case ARG_FAMILY: nl_cli_link_parse_family(link, optarg); break;
+               case ARG_MTU: nl_cli_link_parse_mtu(link, optarg); break;
+               case ARG_TXQLEN: nl_cli_link_parse_txqlen(link, optarg); break;
+               case ARG_WEIGHT: nl_cli_link_parse_weight(link, optarg); break;
                }
        }
 
index 12a61c64bdbd5d3ed1bd2e975c678ad984bdb419..b04af04eb47de423e57ec7827ced324ffd5e4f2a 100644 (file)
@@ -9,7 +9,8 @@
  * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -26,12 +27,13 @@ int main(int argc, char *argv[])
        if (argc < 2)
                print_usage();
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
 
        if (!(ifindex = rtnl_link_name2i(link_cache, argv[1])))
-               fatal(ENOENT, "Interface \"%s\" does not exist", argv[1]);
+               nl_cli_fatal(ENOENT, "Interface \"%s\" does not exist",
+                            argv[1]);
 
        printf("%u\n", ifindex);
 
index 6dbf99e8ac4a700a51ab265bf9bd47a358e88198..94c94e78616062c587254daa405a57a9f348ad0a 100644 (file)
@@ -6,10 +6,11 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "link-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
 
 static struct nl_sock *sock;
 static int quiet = 0;
@@ -55,7 +56,8 @@ static void set_cb(struct nl_object *obj, void *arg)
        int err;
 
        if ((err = rtnl_link_change(sock, link, change, 0) < 0))
-               fatal(err, "Unable to change link: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to change link: %s",
+                            nl_geterror(err));
 
        if (!quiet) {
                printf("Changed ");
@@ -69,11 +71,11 @@ int main(int argc, char *argv[])
        struct rtnl_link *link, *change;
        int ok = 0;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       link = nlt_alloc_link();
-       change = nlt_alloc_link();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       link = nl_cli_link_alloc();
+       change = nl_cli_link_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -103,13 +105,13 @@ int main(int argc, char *argv[])
                switch (c) {
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'n': ok++; parse_name(link, optarg); break;
-               case 'i': ok++; parse_ifindex(link, optarg); break;
-               case ARG_RENAME: parse_name(change, optarg); break;
-               case ARG_MTU: parse_mtu(link, optarg); break;
-               case ARG_TXQLEN: parse_txqlen(link, optarg); break;
-               case ARG_WEIGHT: parse_weight(link, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'n': ok++; nl_cli_link_parse_name(link, optarg); break;
+               case 'i': ok++; nl_cli_link_parse_ifindex(link, optarg); break;
+               case ARG_RENAME: nl_cli_link_parse_name(change, optarg); break;
+               case ARG_MTU: nl_cli_link_parse_mtu(link, optarg); break;
+               case ARG_TXQLEN: nl_cli_link_parse_txqlen(link, optarg); break;
+               case ARG_WEIGHT: nl_cli_link_parse_weight(link, optarg); break;
                }
        }
 
index 9203e08ba87682b7f881e2b4c926cb43cf4a1d95..4dfca867b01b0c89bcc268f413656d812cdab747 100644 (file)
@@ -6,10 +6,11 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "link-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -81,10 +82,10 @@ int main(int argc, char *argv[])
        struct nl_cache *link_cache;
        struct rtnl_link *link;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       link = nlt_alloc_link();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       link = nl_cli_link_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -104,9 +105,9 @@ int main(int argc, char *argv[])
                switch (c) {
                case 'l': list_stat_names(); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'n': parse_name(link, optarg); break;
-               case 'i': parse_ifindex(link, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'n': nl_cli_link_parse_name(link, optarg); break;
+               case 'i': nl_cli_link_parse_ifindex(link, optarg); break;
                }
        }
 
index abd5ff3f6facb521029defcbf1487e7250c5fead..7e4ffc15b5c3339004a296f0741d20ee24c586f2 100644 (file)
@@ -6,11 +6,11 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
 #include <netlink-local.h>
-#include "utils.h"
+#include <netlink/cli/utils.h>
 
 static void print_usage(void)
 {
index f769adc15a7f09616eb6ce3106c46a726235eac0..868006eba7e05df11f03538c03329a6e69549c9d 100644 (file)
@@ -6,10 +6,10 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
 
 #define PROC_NETLINK "/proc/net/netlink"
 
index 19117a2c37e443614d526c80fcd9b5453fef1115..fdf649779b98680a903aaac3627f3eb90e4c7de3 100644 (file)
@@ -6,12 +6,11 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
-#include <netlink/route/link.h>
-#include <netlink/route/addr.h>
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
 
 static void obj_input(struct nl_object *obj, void *arg)
 {
@@ -61,7 +60,7 @@ int main(int argc, char *argv[])
                { RTNLGRP_NONE, NULL }
        };
 
-       sock = nlt_alloc_socket();
+       sock = nl_cli_alloc_socket();
        nl_socket_disable_seq_check(sock);
        nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, event_input, NULL);
 
@@ -75,14 +74,15 @@ int main(int argc, char *argv[])
                return 2;
        }
 
-       nlt_connect(sock, NETLINK_ROUTE);
+       nl_cli_connect(sock, NETLINK_ROUTE);
 
        for (idx = 1; argc > idx; idx++) {
                for (i = 0; known_groups[i].gr_id != RTNLGRP_NONE; i++) {
                        if (!strcmp(argv[idx], known_groups[i].gr_name)) {
 
                                if ((err = nl_socket_add_membership(sock, known_groups[i].gr_id)) < 0) {
-                                       fatal(err, "%s: %s\n", argv[idx], nl_geterror(err));
+                                       nl_cli_fatal(err, "%s: %s\n", argv[idx],
+                                                    nl_geterror(err));
                                }
 
                                break;
@@ -92,7 +92,7 @@ int main(int argc, char *argv[])
                        fprintf(stderr, "Warning: Unknown group: %s\n", argv[idx]);
        }
 
-       link_cache = nlt_alloc_link_cache(sock);
+       link_cache = nl_cli_link_alloc_cache(sock);
 
        while (1) {
                fd_set rfds;
index 1c73e2470098705685eb536915d8591ab1407441..4cddabe4097303d0b8f5dc9a4693156e3e9891be 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "neigh-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/neigh.h>
+#include <netlink/cli/link.h>
 
 static int quiet = 0;
 
@@ -50,10 +52,10 @@ int main(int argc, char *argv[])
        };
        int err, ok = 0, nlflags = NLM_F_REPLACE | NLM_F_CREATE;
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       neigh = nlt_alloc_neigh();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       neigh = nl_cli_neigh_alloc();
  
        for (;;) {
                int c, optidx = 0;
@@ -84,11 +86,11 @@ int main(int argc, char *argv[])
                case ARG_CREATE_ONLY: nlflags |= NLM_F_EXCL; break;
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'a': ok++; parse_dst(neigh, optarg); break;
-               case 'l': parse_lladdr(neigh, optarg); break;
-               case 'd': parse_dev(neigh, link_cache, optarg); break;
-               case ARG_STATE: parse_state(neigh, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'a': ok++; nl_cli_neigh_parse_dst(neigh, optarg); break;
+               case 'l': nl_cli_neigh_parse_lladdr(neigh, optarg); break;
+               case 'd': nl_cli_neigh_parse_dev(neigh, link_cache, optarg); break;
+               case ARG_STATE: nl_cli_neigh_parse_state(neigh, optarg); break;
                }
        }
 
@@ -96,7 +98,8 @@ int main(int argc, char *argv[])
                print_usage();
 
        if ((err = rtnl_neigh_add(sock, neigh, nlflags)) < 0)
-               fatal(err, "Unable to add neighbour: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to add neighbour: %s",
+                            nl_geterror(err));
 
        if (!quiet) {
                printf("Added ");
index 474d5f0f0307faffc92c4425754508b39ac7b5b4..887bd8460fd7a077de2e74a7ae5ee13375f03c0e 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "neigh-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/neigh.h>
+#include <netlink/cli/link.h>
 
 static int quiet = 0, default_yes = 0, deleted = 0, interactive = 0;
 struct nl_sock *sock;
@@ -46,11 +48,12 @@ static void delete_cb(struct nl_object *obj, void *arg)
        };
        int err;
 
-       if (interactive && !nlt_confirm(obj, &params, default_yes))
+       if (interactive && !nl_cli_confirm(obj, &params, default_yes))
                return;
 
        if ((err = rtnl_neigh_delete(sock, neigh, 0)) < 0)
-               fatal(err, "Unable to delete neighbour: %s\n", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to delete neighbour: %s\n",
+                            nl_geterror(err));
 
        if (!quiet) {
                printf("Deleted ");
@@ -65,11 +68,11 @@ int main(int argc, char *argv[])
        struct rtnl_neigh *neigh;
        struct nl_cache *link_cache, *neigh_cache;
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       neigh_cache = nlt_alloc_neigh_cache(sock);
-       neigh = nlt_alloc_neigh();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       neigh_cache = nl_cli_neigh_alloc_cache(sock);
+       neigh = nl_cli_neigh_alloc();
  
        for (;;) {
                int c, optidx = 0;
@@ -101,12 +104,12 @@ int main(int argc, char *argv[])
                case ARG_YES: default_yes = 1; break;
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'a': parse_dst(neigh, optarg); break;
-               case 'l': parse_lladdr(neigh, optarg); break;
-               case 'd': parse_dev(neigh, link_cache, optarg); break;
-               case ARG_FAMILY: parse_family(neigh, optarg); break;
-               case ARG_STATE: parse_state(neigh, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'a': nl_cli_neigh_parse_dst(neigh, optarg); break;
+               case 'l': nl_cli_neigh_parse_lladdr(neigh, optarg); break;
+               case 'd': nl_cli_neigh_parse_dev(neigh, link_cache, optarg); break;
+               case ARG_FAMILY: nl_cli_neigh_parse_family(neigh, optarg); break;
+               case ARG_STATE: nl_cli_neigh_parse_state(neigh, optarg); break;
                }
        }
 
index 4a74e279b514efa77d6829c45be9cf9890a4a6a9..ebf54863a8e89e630f28c8c1b57d98ff6b0999b7 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "neigh-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/neigh.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -41,11 +43,11 @@ int main(int argc, char *argv[])
                .dp_fd = stdout,
        };
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       neigh_cache = nlt_alloc_neigh_cache(sock);
-       neigh = nlt_alloc_neigh();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       neigh_cache = nl_cli_neigh_alloc_cache(sock);
+       neigh = nl_cli_neigh_alloc();
  
        for (;;) {
                int c, optidx = 0;
@@ -70,14 +72,14 @@ int main(int argc, char *argv[])
                        break;
 
                switch (c) {
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'a': parse_dst(neigh, optarg); break;
-               case 'l': parse_lladdr(neigh, optarg); break;
-               case 'd': parse_dev(neigh, link_cache, optarg); break;
-               case ARG_FAMILY: parse_family(neigh, optarg); break;
-               case ARG_STATE: parse_state(neigh, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'a': nl_cli_neigh_parse_dst(neigh, optarg); break;
+               case 'l': nl_cli_neigh_parse_lladdr(neigh, optarg); break;
+               case 'd': nl_cli_neigh_parse_dev(neigh, link_cache, optarg); break;
+               case ARG_FAMILY: nl_cli_neigh_parse_family(neigh, optarg); break;
+               case ARG_STATE: nl_cli_neigh_parse_state(neigh, optarg); break;
                }
        }
 
index 8a7a83f1fe09f1839f55989b7b19689ea611ae15..5010b92d02b4e062e916d90edddb8753b50fe1c7 100644 (file)
@@ -6,10 +6,11 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -33,10 +34,11 @@ int main(int argc, char *argv[])
                .dp_fd = stdout,
        };
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       neightbl_cache = nlt_alloc_neightbl_cache(sock);
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       neightbl_cache = nl_cli_alloc_cache(sock, "neighbour table",
+                                           rtnl_neightbl_alloc_cache);
  
        for (;;) {
                int c, optidx = 0;
@@ -52,9 +54,9 @@ int main(int argc, char *argv[])
                        break;
 
                switch (c) {
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
+               case 'v': nl_cli_print_version(); break;
                }
        }
 
index e0c82a27343d12dc6ce2e9c4fceb80388402f039..5cb7aa35bfe110b8d530c4f36bc4e08c15d3fe98 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "qdisc-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/qdisc.h>
+#include <netlink/cli/link.h>
 
 static int quiet = 0, default_yes = 0, deleted = 0, interactive = 0;
 struct nl_sock *sock;
@@ -45,11 +47,11 @@ static void delete_cb(struct nl_object *obj, void *arg)
        };
        int err;
 
-       if (interactive && !nlt_confirm(obj, &params, default_yes))
+       if (interactive && !nl_cli_confirm(obj, &params, default_yes))
                return;
 
        if ((err = rtnl_qdisc_delete(sock, qdisc)) < 0)
-               fatal(err, "Unable to delete qdisc: %s\n", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to delete qdisc: %s\n", nl_geterror(err));
 
        if (!quiet) {
                printf("Deleted ");
@@ -64,11 +66,11 @@ int main(int argc, char *argv[])
        struct rtnl_qdisc *qdisc;
        struct nl_cache *link_cache, *qdisc_cache;
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       qdisc_cache = nlt_alloc_qdisc_cache(sock);
-       qdisc = nlt_alloc_qdisc();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       qdisc_cache = nl_cli_qdisc_alloc_cache(sock);
+       qdisc = nl_cli_qdisc_alloc();
  
        for (;;) {
                int c, optidx = 0;
@@ -97,11 +99,11 @@ int main(int argc, char *argv[])
                case ARG_YES: default_yes = 1; break;
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'd': parse_dev(qdisc, link_cache, optarg); break;
-               case 'p': parse_parent(qdisc, optarg); break;
-               case 'H': parse_handle(qdisc, optarg); break;
-               case 'k': parse_kind(qdisc, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'd': nl_cli_qdisc_parse_dev(qdisc, link_cache, optarg); break;
+               case 'p': nl_cli_qdisc_parse_parent(qdisc, optarg); break;
+               case 'H': nl_cli_qdisc_parse_handle(qdisc, optarg); break;
+               case 'k': nl_cli_qdisc_parse_kind(qdisc, optarg); break;
                }
        }
 
index b4e7116fa10a567fe1e5bde12768144de6eca56e..ec6e25f055e71d2feb031baaefe8f8ad98a8b4f3 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "qdisc-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/qdisc.h>
+#include <netlink/cli/link.h>
 
 static int quiet = 0;
 
@@ -42,11 +44,11 @@ int main(int argc, char *argv[])
                .dp_fd = stdout,
        };
  
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       qdisc_cache = nlt_alloc_qdisc_cache(sock);
-       qdisc = nlt_alloc_qdisc();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       qdisc_cache = nl_cli_qdisc_alloc_cache(sock);
+       qdisc = nl_cli_qdisc_alloc();
  
        for (;;) {
                int c, optidx = 0;
@@ -71,14 +73,14 @@ int main(int argc, char *argv[])
                        break;
 
                switch (c) {
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'd': parse_dev(qdisc, link_cache, optarg); break;
-               case 'p': parse_parent(qdisc, optarg); break;
-               case 'H': parse_handle(qdisc, optarg); break;
-               case 'k': parse_kind(qdisc, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'd': nl_cli_qdisc_parse_dev(qdisc, link_cache, optarg); break;
+               case 'p': nl_cli_qdisc_parse_parent(qdisc, optarg); break;
+               case 'H': nl_cli_qdisc_parse_handle(qdisc, optarg); break;
+               case 'k': nl_cli_qdisc_parse_kind(qdisc, optarg); break;
                }
        }
 
index a1ab7f3ff1f805e458e0a255bda0f9d0608f0599..2f187df3ea6cc5070c433cc431543ffe810205af 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "route-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/route.h>
+#include <netlink/cli/link.h>
 
 static int quiet = 0;
 static struct nl_cache *link_cache, *route_cache;
@@ -57,11 +59,11 @@ int main(int argc, char *argv[])
        };
        int err = 1;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       route_cache = nlt_alloc_route_cache(sock, 0);
-       route = nlt_alloc_route();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       route_cache = nl_cli_route_alloc_cache(sock, 0);
+       route = nl_cli_route_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -102,24 +104,24 @@ int main(int argc, char *argv[])
                switch (c) {
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'd': parse_dst(route, optarg); break;
-               case 'n': parse_nexthop(route, optarg, link_cache); break;
-               case 't': parse_table(route, optarg); break;
-               case ARG_FAMILY: parse_family(route, optarg); break;
-               case ARG_SRC: parse_src(route, optarg); break;
-               case ARG_IIF: parse_iif(route, optarg, link_cache); break;
-               case ARG_PREF_SRC: parse_pref_src(route, optarg); break;
-               case ARG_METRICS: parse_metric(route, optarg); break;
-               case ARG_PRIORITY: parse_prio(route, optarg); break;
-               case ARG_SCOPE: parse_scope(route, optarg); break;
-               case ARG_PROTOCOL: parse_protocol(route, optarg); break;
-               case ARG_TYPE: parse_type(route, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'd': nl_cli_route_parse_dst(route, optarg); break;
+               case 'n': nl_cli_route_parse_nexthop(route, optarg, link_cache); break;
+               case 't': nl_cli_route_parse_table(route, optarg); break;
+               case ARG_FAMILY: nl_cli_route_parse_family(route, optarg); break;
+               case ARG_SRC: nl_cli_route_parse_src(route, optarg); break;
+               case ARG_IIF: nl_cli_route_parse_iif(route, optarg, link_cache); break;
+               case ARG_PREF_SRC: nl_cli_route_parse_pref_src(route, optarg); break;
+               case ARG_METRICS: nl_cli_route_parse_metric(route, optarg); break;
+               case ARG_PRIORITY: nl_cli_route_parse_prio(route, optarg); break;
+               case ARG_SCOPE: nl_cli_route_parse_scope(route, optarg); break;
+               case ARG_PROTOCOL: nl_cli_route_parse_protocol(route, optarg); break;
+               case ARG_TYPE: nl_cli_route_parse_type(route, optarg); break;
                }
        }
 
        if ((err = rtnl_route_add(sock, route, 0)) < 0)
-               fatal(err, "Unable to add route: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to add route: %s", nl_geterror(err));
 
        if (!quiet) {
                printf("Added ");
index aca3a39f8fb093e2a69bedebff91693087a58671..884fd7fc727a77df116cf13b8f064b0b56a1a707 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "route-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/route.h>
+#include <netlink/cli/link.h>
 
 static int interactive = 0, default_yes = 0, quiet = 0;
 static int deleted = 0;
@@ -65,11 +67,11 @@ static void delete_cb(struct nl_object *obj, void *arg)
        };
        int err;
 
-       if (interactive && !nlt_confirm(obj, &params, default_yes))
+       if (interactive && !nl_cli_confirm(obj, &params, default_yes))
                return;
 
        if ((err = rtnl_route_delete(sock, route, 0)) < 0)
-               fatal(err, "Unable to delete route: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to delete route: %s", nl_geterror(err));
 
        if (!quiet) {
                printf("Deleted ");
@@ -85,11 +87,11 @@ int main(int argc, char *argv[])
        struct rtnl_route *route;
        int nf = 0;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       route_cache = nlt_alloc_route_cache(sock, 0);
-       route = nlt_alloc_route();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       route_cache = nl_cli_route_alloc_cache(sock, 0);
+       route = nl_cli_route_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -136,18 +138,18 @@ int main(int argc, char *argv[])
                case 'q': quiet = 1; break;
                case 'h': print_usage(); break;
                case 'v': print_version(); break;
-               case 'd': nf++; parse_dst(route, optarg); break;
-               case 'n': nf++; parse_nexthop(route, optarg, link_cache); break;
-               case 't': nf++; parse_table(route, optarg); break;
-               case ARG_FAMILY: nf++; parse_family(route, optarg); break;
-               case ARG_SRC: nf++; parse_src(route, optarg); break;
-               case ARG_IIF: nf++; parse_iif(route, optarg, link_cache); break;
-               case ARG_PREF_SRC: nf++; parse_pref_src(route, optarg); break;
-               case ARG_METRICS: nf++; parse_metric(route, optarg); break;
-               case ARG_PRIORITY: nf++; parse_prio(route, optarg); break;
-               case ARG_SCOPE: nf++; parse_scope(route, optarg); break;
-               case ARG_PROTOCOL: nf++; parse_protocol(route, optarg); break;
-               case ARG_TYPE: nf++; parse_type(route, optarg); break;
+               case 'd': nf++; nl_cli_route_parse_dst(route, optarg); break;
+               case 'n': nf++; nl_cli_route_parse_nexthop(route, optarg, link_cache); break;
+               case 't': nf++; nl_cli_route_parse_table(route, optarg); break;
+               case ARG_FAMILY: nf++; nl_cli_route_parse_family(route, optarg); break;
+               case ARG_SRC: nf++; nl_cli_route_parse_src(route, optarg); break;
+               case ARG_IIF: nf++; nl_cli_route_parse_iif(route, optarg, link_cache); break;
+               case ARG_PREF_SRC: nf++; nl_cli_route_parse_pref_src(route, optarg); break;
+               case ARG_METRICS: nf++; nl_cli_route_parse_metric(route, optarg); break;
+               case ARG_PRIORITY: nf++; nl_cli_route_parse_prio(route, optarg); break;
+               case ARG_SCOPE: nf++; nl_cli_route_parse_scope(route, optarg); break;
+               case ARG_PROTOCOL: nf++; nl_cli_route_parse_protocol(route, optarg); break;
+               case ARG_TYPE: nf++; nl_cli_route_parse_type(route, optarg); break;
                }
        }
 
index ce267ec9585396e45f96c4765addf2df9784807f..c2f07d4cc2978fc27e9ac32a76d6ebafccc734ba 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/route.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -33,7 +35,7 @@ static int cb(struct nl_msg *msg, void *arg)
        int err;
 
        if ((err = nl_msg_parse(msg, &parse_cb, NULL)) < 0)
-               fatal(err, "Unable to parse object: %s", nl_geterror(err));
+               nl_cli_fatal(err, "Unable to parse object: %s", nl_geterror(err));
 
        return 0;
 }
@@ -48,12 +50,12 @@ int main(int argc, char *argv[])
        if (argc < 2 || !strcmp(argv[1], "-h"))
                print_usage();
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       route_cache = nlt_alloc_route_cache(sock, 0);
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       route_cache = nl_cli_route_alloc_cache(sock, 0);
 
-       dst = nlt_addr_parse(argv[1], AF_INET);
+       dst = nl_cli_addr_parse(argv[1], AF_INET);
 
        {
                struct nl_msg *m;
@@ -69,12 +71,12 @@ int main(int argc, char *argv[])
                err = nl_send_auto_complete(sock, m);
                nlmsg_free(m);
                if (err < 0)
-                       fatal(err, "%s", nl_geterror(err));
+                       nl_cli_fatal(err, "%s", nl_geterror(err));
 
                nl_socket_modify_cb(sock, NL_CB_VALID, NL_CB_CUSTOM, cb, NULL);
 
                if (nl_recvmsgs_default(sock) < 0)
-                       fatal(err, "%s", nl_geterror(err));
+                       nl_cli_fatal(err, "%s", nl_geterror(err));
        }
 
        //nl_cache_dump(route_cache, &params);
index f9f88138f30ececcbb2fd14161e0cf8f3cdac2cf..e0e57be2fb4dfecff27d67fae44f7d2e8758316d 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "route-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/route.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -56,10 +58,10 @@ int main(int argc, char *argv[])
        };
        int print_cache = 0;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       route = nlt_alloc_route();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       route = nl_cli_route_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -100,25 +102,25 @@ int main(int argc, char *argv[])
 
                switch (c) {
                case 'c': print_cache = 1; break;
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case 'd': parse_dst(route, optarg); break;
-               case 'n': parse_nexthop(route, optarg, link_cache); break;
-               case 't': parse_table(route, optarg); break;
-               case ARG_FAMILY: parse_family(route, optarg); break;
-               case ARG_SRC: parse_src(route, optarg); break;
-               case ARG_IIF: parse_iif(route, optarg, link_cache); break;
-               case ARG_PREF_SRC: parse_pref_src(route, optarg); break;
-               case ARG_METRICS: parse_metric(route, optarg); break;
-               case ARG_PRIORITY: parse_prio(route, optarg); break;
-               case ARG_SCOPE: parse_scope(route, optarg); break;
-               case ARG_PROTOCOL: parse_protocol(route, optarg); break;
-               case ARG_TYPE: parse_type(route, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case 'd': nl_cli_route_parse_dst(route, optarg); break;
+               case 'n': nl_cli_route_parse_nexthop(route, optarg, link_cache); break;
+               case 't': nl_cli_route_parse_table(route, optarg); break;
+               case ARG_FAMILY: nl_cli_route_parse_family(route, optarg); break;
+               case ARG_SRC: nl_cli_route_parse_src(route, optarg); break;
+               case ARG_IIF: nl_cli_route_parse_iif(route, optarg, link_cache); break;
+               case ARG_PREF_SRC: nl_cli_route_parse_pref_src(route, optarg); break;
+               case ARG_METRICS: nl_cli_route_parse_metric(route, optarg); break;
+               case ARG_PRIORITY: nl_cli_route_parse_prio(route, optarg); break;
+               case ARG_SCOPE: nl_cli_route_parse_scope(route, optarg); break;
+               case ARG_PROTOCOL: nl_cli_route_parse_protocol(route, optarg); break;
+               case ARG_TYPE: nl_cli_route_parse_type(route, optarg); break;
                }
        }
 
-       route_cache = nlt_alloc_route_cache(sock,
+       route_cache = nl_cli_route_alloc_cache(sock,
                                print_cache ? ROUTE_CACHE_CONTENT : 0);
 
        nl_cache_dump_filter(route_cache, &params, OBJ_CAST(route));
index 12fc84b4aa3add797a3cab3b7085e24be51bb8a0..8b474fa39fc8a3987921e1baf91123178ecb4e03 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "rule-utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/rule.h>
+#include <netlink/cli/link.h>
 
 static void print_usage(void)
 {
@@ -38,11 +40,11 @@ int main(int argc, char *argv[])
                .dp_type = NL_DUMP_LINE,
        };
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       rule_cache = nlt_alloc_rule_cache(sock);
-       rule = nlt_alloc_rule();
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       rule_cache = nl_cli_rule_alloc_cache(sock);
+       rule = nl_cli_rule_alloc();
 
        for (;;) {
                int c, optidx = 0;
@@ -62,10 +64,10 @@ int main(int argc, char *argv[])
                        break;
 
                switch (c) {
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
-               case ARG_FAMILY: parse_family(rule, optarg); break;
+               case 'v': nl_cli_print_version(); break;
+               case ARG_FAMILY: nl_cli_rule_parse_family(rule, optarg); break;
                }
        }
 
index 6f6bf56d73d27596dfdea5ac5aaefdb77534202f..a074a512d6cd8dbbcf34fb6c5226883cd3b04f21 100644 (file)
@@ -6,10 +6,12 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
+#include <netlink/cli/link.h>
+#include <netlink/cli/qdisc.h>
 #include <linux/pkt_sched.h>
 
 static struct nl_sock *sock;
@@ -114,10 +116,10 @@ int main(int argc, char *argv[])
 {
        struct nl_cache *link_cache;
 
-       sock = nlt_alloc_socket();
-       nlt_connect(sock, NETLINK_ROUTE);
-       link_cache = nlt_alloc_link_cache(sock);
-       qdisc_cache = nlt_alloc_qdisc_cache(sock);
+       sock = nl_cli_alloc_socket();
+       nl_cli_connect(sock, NETLINK_ROUTE);
+       link_cache = nl_cli_link_alloc_cache(sock);
+       qdisc_cache = nl_cli_qdisc_alloc_cache(sock);
 
        params.dp_fd = stdout;
 
@@ -135,9 +137,9 @@ int main(int argc, char *argv[])
                        break;
 
                switch (c) {
-               case 'f': params.dp_type = nlt_parse_dumptype(optarg); break;
+               case 'f': params.dp_type = nl_cli_parse_dumptype(optarg); break;
                case 'h': print_usage(); break;
-               case 'v': nlt_print_version(); break;
+               case 'v': nl_cli_print_version(); break;
                }
        }
 
index 93779ea93cbf2f45f8aa97f6831dfcf87a7a7338..5f0738d53d78cf0eaa2d88bd29506fbef112a83e 100644 (file)
@@ -6,10 +6,10 @@
  *     License as published by the Free Software Foundation version 2.1
  *     of the License.
  *
- * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
+ * Copyright (c) 2003-2009 Thomas Graf <tgraf@suug.ch>
  */
 
-#include "utils.h"
+#include <netlink/cli/utils.h>
 
 int main(int argc, char *argv[])
 {
@@ -22,10 +22,10 @@ int main(int argc, char *argv[])
                return -1;
        }
 
-       a = nlt_addr_parse(argv[1], AF_UNSPEC);
+       a = nl_cli_addr_parse(argv[1], AF_UNSPEC);
        err = nl_addr_resolve(a, host, sizeof(host));
        if (err != 0)
-               fatal(err, "Unable to resolve address \"%s\": %s",
+               nl_cli_fatal(err, "Unable to resolve address \"%s\": %s",
                      argv[1], nl_geterror(err));
 
        printf("%s\n", host);
diff --git a/src/qdisc-utils.c b/src/qdisc-utils.c
deleted file mode 100644 (file)
index 57b5066..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * src/qdisc-utils.c     QDisc Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "qdisc-utils.h"
-
-struct rtnl_qdisc *nlt_alloc_qdisc(void)
-{
-       struct rtnl_qdisc *qdisc;
-
-       qdisc = rtnl_qdisc_alloc();
-       if (!qdisc)
-               fatal(ENOMEM, "Unable to allocate qdisc object");
-
-       return qdisc;
-}
-
-void parse_dev(struct rtnl_qdisc *qdisc, struct nl_cache *link_cache, char *arg)
-{
-       int ival;
-
-       if (!(ival = rtnl_link_name2i(link_cache, arg)))
-               fatal(ENOENT, "Link \"%s\" does not exist", arg);
-
-       rtnl_qdisc_set_ifindex(qdisc, ival);
-}
-
-void parse_parent(struct rtnl_qdisc *qdisc, char *arg)
-{
-       uint32_t parent;
-       int err;
-
-       if ((err = rtnl_tc_str2handle(arg, &parent)) < 0)
-               fatal(err, "Unable to parse handle \"%s\": %s",
-                     arg, nl_geterror(err));
-
-       rtnl_qdisc_set_parent(qdisc, parent);
-}
-
-void parse_handle(struct rtnl_qdisc *qdisc, char *arg)
-{
-       uint32_t handle;
-       int err;
-
-       if ((err = rtnl_tc_str2handle(arg, &handle)) < 0)
-               fatal(err, "Unable to parse handle \"%s\": %s",
-                     arg, nl_geterror(err));
-
-       rtnl_qdisc_set_handle(qdisc, handle);
-}
-
-void parse_kind(struct rtnl_qdisc *qdisc, char *arg)
-{
-       rtnl_qdisc_set_kind(qdisc, arg);
-}
diff --git a/src/qdisc-utils.h b/src/qdisc-utils.h
deleted file mode 100644 (file)
index f6ce3ef..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * src/qdisc-utils.h     QDisc Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __QDISC_UTILS_H_
-#define __QDISC_UTILS_H_
-
-#include "utils.h"
-
-extern struct rtnl_qdisc *nlt_alloc_qdisc(void);
-extern void parse_dev(struct rtnl_qdisc *, struct nl_cache *, char *);
-extern void parse_parent(struct rtnl_qdisc *, char *);
-extern void parse_handle(struct rtnl_qdisc *, char *);
-extern void parse_kind(struct rtnl_qdisc *, char *);
-
-#endif
diff --git a/src/queue-utils.c b/src/queue-utils.c
deleted file mode 100644 (file)
index 77038aa..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * src/queue-utils.c           Queue Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "queue-utils.h"
-
-struct nfnl_queue *nlt_alloc_queue(void)
-{
-       struct nfnl_queue *queue;
-
-       queue = nfnl_queue_alloc();
-       if (!queue)
-               fatal(ENOMEM, "Unable to allocate queue object");
-
-       return queue;
-}
-
diff --git a/src/queue-utils.h b/src/queue-utils.h
deleted file mode 100644 (file)
index 5a628fe..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * src/queue-utils.h           Queue Helper
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __QUEUE_UTILS_H_
-#define __QUEUE_UTILS_H_
-
-#include "utils.h"
-#include <linux/netfilter.h>
-#include <linux/netfilter/nfnetlink_queue.h>
-#include <netlink/netfilter/nfnl.h>
-#include <netlink/netfilter/queue.h>
-#include <netlink/netfilter/queue_msg.h>
-
-extern struct nfnl_queue *nlt_alloc_queue(void);
-
-#endif
diff --git a/src/route-utils.h b/src/route-utils.h
deleted file mode 100644 (file)
index b410557..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * src/route-utils.h     Route Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __ROUTE_UTILS_H_
-#define __ROUTE_UTILS_H_
-
-#include "utils.h"
-
-extern struct rtnl_route *nlt_alloc_route(void);
-extern void    parse_family(struct rtnl_route *, char *);
-extern void    parse_dst(struct rtnl_route *, char *);
-extern void    parse_src(struct rtnl_route *, char *);
-extern void    parse_pref_src(struct rtnl_route *, char *);
-extern void    parse_metric(struct rtnl_route *, char *);
-extern void    parse_nexthop(struct rtnl_route *, char *, struct nl_cache *);
-extern void    parse_table(struct rtnl_route *, char *);
-extern void    parse_prio(struct rtnl_route *, char *);
-extern void    parse_scope(struct rtnl_route *, char *);
-extern void    parse_protocol(struct rtnl_route *, char *);
-extern void    parse_type(struct rtnl_route *, char *);
-extern void    parse_iif(struct rtnl_route *, char *, struct nl_cache *);
-
-#endif
diff --git a/src/rtnl-utils.c b/src/rtnl-utils.c
deleted file mode 100644 (file)
index 5c4228b..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * src/rtnl-utils.c    rtnetlink helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "rtnl-utils.h"
-
-struct nl_cache *nlt_alloc_link_cache(struct nl_sock *sk)
-{
-       return alloc_cache(sk, "link", rtnl_link_alloc_cache);
-}
-
-struct nl_cache *nlt_alloc_addr_cache(struct nl_sock *sk)
-{
-       return alloc_cache(sk, "address", rtnl_addr_alloc_cache);
-}
-
-struct nl_cache *nlt_alloc_neigh_cache(struct nl_sock *sk)
-{
-       return alloc_cache(sk, "neighbour", rtnl_neigh_alloc_cache);
-}
-
-struct nl_cache *nlt_alloc_neightbl_cache(struct nl_sock *sk)
-{
-       return alloc_cache(sk, "neighbour table", rtnl_neightbl_alloc_cache);
-}
-
-struct nl_cache *nlt_alloc_route_cache(struct nl_sock *sk, int flags)
-{
-       struct nl_cache *cache;
-       int err;
-
-       if ((err = rtnl_route_alloc_cache(sk, AF_UNSPEC, flags, &cache)) < 0)
-               fatal(err, "Unable to allocate route cache: %s\n",
-                     nl_geterror(err));
-
-       nl_cache_mngt_provide(cache);
-
-       return cache;
-}
-
-struct nl_cache *nlt_alloc_rule_cache(struct nl_sock *sk)
-{
-       struct nl_cache *cache;
-       int err;
-
-       if ((err = rtnl_rule_alloc_cache(sk, AF_UNSPEC, &cache)) < 0)
-               fatal(err, "Unable to allocate routing rule cache: %s\n",
-                     nl_geterror(err));
-
-       nl_cache_mngt_provide(cache);
-
-       return cache;
-}
-
-struct nl_cache *nlt_alloc_qdisc_cache(struct nl_sock *sk)
-{
-       return alloc_cache(sk, "queueing disciplines", rtnl_qdisc_alloc_cache);
-}
-
diff --git a/src/rtnl-utils.h b/src/rtnl-utils.h
deleted file mode 100644 (file)
index 5f2bbe3..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * src/rtnl-utils.h    rtnetlink helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __SRC_RTNL_UTILS_H_
-#define __SRC_RTNL_UTILS_H_
-
-#include "utils.h"
-
-extern struct nl_cache *nlt_alloc_link_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_addr_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_neigh_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_neightbl_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_qdisc_cache(struct nl_sock *);
-extern struct nl_cache *nlt_alloc_route_cache(struct nl_sock *, int);
-extern struct nl_cache *nlt_alloc_rule_cache(struct nl_sock *);
-
-#endif
diff --git a/src/rule-utils.c b/src/rule-utils.c
deleted file mode 100644 (file)
index e8f3ba7..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * src/rule-utils.c     Routing Rule Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#include "rule-utils.h"
-
-struct rtnl_rule *nlt_alloc_rule(void)
-{
-       struct rtnl_rule *rule;
-
-       rule = rtnl_rule_alloc();
-       if (!rule)
-               fatal(ENOMEM, "Unable to allocate rule object");
-
-       return rule;
-}
-
-void parse_family(struct rtnl_rule *rule, char *arg)
-{
-       int family;
-
-       if ((family = nl_str2af(arg)) != AF_UNSPEC)
-               rtnl_rule_set_family(rule, family);
-}
diff --git a/src/rule-utils.h b/src/rule-utils.h
deleted file mode 100644 (file)
index fcbf9a7..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * src/rule-utils.h     Routing Rule Helpers
- *
- *     This library is free software; you can redistribute it and/or
- *     modify it under the terms of the GNU Lesser General Public
- *     License as published by the Free Software Foundation version 2.1
- *     of the License.
- *
- * Copyright (c) 2008 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __RULE_UTILS_H_
-#define __RULE_UTILS_H_
-
-#include "utils.h"
-
-extern struct rtnl_rule *nlt_alloc_rule(void);
-extern void parse_family(struct rtnl_rule *, char *);
-
-#endif