route/link/bonding.c route/link/can.c route/link/macvlan.c \
route/link/vxlan.c route/link/veth.c route/link/ipip.c \
route/link/ipgre.c route/link/sit.c route/link/ipvti.c \
- route/link/ip6tnl.c \
+ route/link/ip6tnl.c route/link/ifb.c \
\
route/qdisc/blackhole.c route/qdisc/cbq.c route/qdisc/dsmark.c \
route/qdisc/fifo.c route/qdisc/htb.c route/qdisc/netem.c \
--- /dev/null
+/*
+ * lib/route/link/ifb.c IFB Interfaces
+ *
+ * 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) 2014 Cong Wang <xiyou.wangcong@gmail.com>
+ */
+
+/**
+ * @ingroup link
+ * @defgroup ifb Intermediate Functional Block
+ *
+ * @details
+ * \b Link Type Name: "ifb"
+ *
+ * @{
+ */
+
+#include <netlink-private/netlink.h>
+#include <netlink/netlink.h>
+#include <netlink-private/route/link/api.h>
+
+static struct rtnl_link_info_ops ifb_info_ops = {
+ .io_name = "ifb",
+};
+
+static void __init ifb_init(void)
+{
+ rtnl_link_register_info(&ifb_info_ops);
+}
+
+static void __exit ifb_exit(void)
+{
+ rtnl_link_unregister_info(&ifb_info_ops);
+}
+
+/** @} */
/test-create-veth
/test-create-vlan
/test-create-vxlan
+/test-create-ifb
/test-delete-link
/test-genl
/test-nf-cache-mngr
test-create-ipip \
test-create-ipvti \
test-create-sit \
+ test-create-ifb \
test-delete-link \
test-socket-creation \
test-complex-HTB-with-hash-filters \
test_create_vxlan_SOURCES = test-create-vxlan.c
test_create_veth_SOURCES = test-create-veth.c
test_create_bridge_SOURCES = test-create-bridge.c
+test_create_ifb_SOURCES = test-create-ifb.c
test_delete_link_SOURCES = test-delete-link.c
test_genl_SOURCES = test-genl.c
test_nf_cache_mngr_SOURCES = test-nf-cache-mngr.c
--- /dev/null
+#include <netlink/netlink.h>
+#include <netlink/route/link.h>
+
+int main(int argc, char *argv[])
+{
+ struct rtnl_link *link;
+ struct nl_sock *sk;
+ int err;
+
+ sk = nl_socket_alloc();
+ if ((err = nl_connect(sk, NETLINK_ROUTE)) < 0) {
+ nl_perror(err, "Unable to connect socket");
+ return err;
+ }
+
+ link = rtnl_link_alloc();
+ rtnl_link_set_type(link, "ifb");
+ rtnl_link_set_name(link, "ifb1");
+
+ if ((err = rtnl_link_add(sk, link, NLM_F_CREATE)) < 0) {
+ nl_perror(err, "Unable to add link");
+ return err;
+ }
+
+ rtnl_link_put(link);
+ nl_close(sk);
+
+ return 0;
+}