summaryrefslogtreecommitdiffstats
path: root/include/netlink/route
diff options
context:
space:
mode:
Diffstat (limited to 'include/netlink/route')
-rw-r--r--include/netlink/route/link/api.h153
-rw-r--r--include/netlink/route/link/info-api.h20
-rw-r--r--include/netlink/route/tc-api.h136
-rw-r--r--include/netlink/route/tc.h2
4 files changed, 2 insertions, 309 deletions
diff --git a/include/netlink/route/link/api.h b/include/netlink/route/link/api.h
deleted file mode 100644
index 28f2464..0000000
--- a/include/netlink/route/link/api.h
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * netlink/route/link/api.h Link Modules API
- *
- * 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) 2003-2010 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef NETLINK_LINK_API_H_
-#define NETLINK_LINK_API_H_
-
-#include <netlink/netlink.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @ingroup link_api
- *
- * Available operations to modules implementing a link info type.
- */
-struct rtnl_link_info_ops
-{
- /** Name of link info type, must match name on kernel side */
- char * io_name;
-
- /** Reference count, DO NOT MODIFY */
- int io_refcnt;
-
- /** Called to assign an info type to a link.
- * Has to allocate enough resources to hold attributes. Can
- * use link->l_info to store a pointer. */
- int (*io_alloc)(struct rtnl_link *);
-
- /** Called to parse the link info attribute.
- * Must parse the attribute and assign all values to the link.
- */
- int (*io_parse)(struct rtnl_link *,
- struct nlattr *,
- struct nlattr *);
-
- /** Called when the link object is dumped.
- * Must dump the info type specific attributes. */
- void (*io_dump[NL_DUMP_MAX+1])(struct rtnl_link *,
- struct nl_dump_params *);
-
- /** Called when a link object is cloned.
- * Must clone all info type specific attributes. */
- int (*io_clone)(struct rtnl_link *, struct rtnl_link *);
-
- /** Called when construction a link netlink message.
- * Must append all info type specific attributes to the message. */
- int (*io_put_attrs)(struct nl_msg *, struct rtnl_link *);
-
- /** Called to release all resources previously allocated
- * in either io_alloc() or io_parse(). */
- void (*io_free)(struct rtnl_link *);
-
- struct nl_list_head io_list;
-};
-
-extern struct rtnl_link_info_ops *rtnl_link_info_ops_lookup(const char *);
-extern void rtnl_link_info_ops_put(struct rtnl_link_info_ops *);
-extern int rtnl_link_register_info(struct rtnl_link_info_ops *);
-extern int rtnl_link_unregister_info(struct rtnl_link_info_ops *);
-
-
-/**
- * @ingroup link_api
- *
- * Available operations to modules implementing a link address family.
- */
-struct rtnl_link_af_ops
-{
- /** The address family this operations set implements */
- const unsigned int ao_family;
-
- /** Number of users of this operations, DO NOT MODIFY. */
- int ao_refcnt;
-
- /** Validation policy for IFLA_PROTINFO attribute. This pointer
- * can be set to a nla_policy structure describing the minimal
- * requirements the attribute must meet. Failure of meeting these
- * requirements will result in a parsing error. */
- const struct nla_policy *ao_protinfo_policy;
-
- /** Called after address family has been assigned to link. Must
- * allocate data buffer to hold address family specific data and
- * store it in link->l_af_data. */
- void * (*ao_alloc)(struct rtnl_link *);
-
- /** Called when the link is cloned, must allocate a clone of the
- * address family specific buffer and return it. */
- void * (*ao_clone)(struct rtnl_link *, void *);
-
- /** Called when the link gets freed. Must free all allocated data */
- void (*ao_free)(struct rtnl_link *, void *);
-
- /** Called if a IFLA_PROTINFO attribute needs to be parsed. Typically
- * stores the parsed data in the address family specific buffer. */
- int (*ao_parse_protinfo)(struct rtnl_link *,
- struct nlattr *, void *);
-
- /** Called if a IFLA_AF_SPEC attribute needs to be parsed. Typically
- * stores the parsed data in the address family specific buffer. */
- int (*ao_parse_af)(struct rtnl_link *,
- struct nlattr *, void *);
-
- /** Called if a link message is sent to the kernel. Must append the
- * link address family specific attributes to the message. */
- int (*ao_fill_af)(struct rtnl_link *,
- struct nl_msg *msg, void *);
-
- /** Dump address family specific link attributes */
- void (*ao_dump[NL_DUMP_MAX+1])(struct rtnl_link *,
- struct nl_dump_params *,
- void *);
-
- /** Comparison function
- *
- * Will be called when two links are compared for their af data. It
- * takes two link objects in question, an object specific bitmask
- * defining which attributes should be compared and flags to control
- * the behaviour
- *
- * The function must return a bitmask with the relevant bit set for
- * each attribute that mismatches
- */
- int (*ao_compare)(struct rtnl_link *,
- struct rtnl_link *, int, uint32_t, int);
-};
-
-extern struct rtnl_link_af_ops *rtnl_link_af_ops_lookup(unsigned int);
-extern void rtnl_link_af_ops_put(struct rtnl_link_af_ops *);
-extern void * rtnl_link_af_alloc(struct rtnl_link *,
- const struct rtnl_link_af_ops *);
-extern void * rtnl_link_af_data(const struct rtnl_link *,
- const struct rtnl_link_af_ops *);
-extern int rtnl_link_af_register(struct rtnl_link_af_ops *);
-extern int rtnl_link_af_unregister(struct rtnl_link_af_ops *);
-extern int rtnl_link_af_data_compare(struct rtnl_link *a,
- struct rtnl_link *b,
- int family);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/include/netlink/route/link/info-api.h b/include/netlink/route/link/info-api.h
deleted file mode 100644
index 4750e18..0000000
--- a/include/netlink/route/link/info-api.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * netlink/route/link/info-api.h Link Info API
- *
- * 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) 2003-2010 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef NETLINK_LINK_INFO_API_H_
-#define NETLINK_LINK_INFO_API_H_
-
-#warning "<netlink/route/link/info-api.h> is obsolete and may be removed in the future."
-#warning "include <netlink/route/link/api.h> instead.
-
-#include <netlink/route/link/api.h>
-
-#endif
diff --git a/include/netlink/route/tc-api.h b/include/netlink/route/tc-api.h
deleted file mode 100644
index 601a8df..0000000
--- a/include/netlink/route/tc-api.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * netlink/route/tc-api.h Traffic Control API
- *
- * 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) 2011 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef NETLINK_TC_API_H_
-#define NETLINK_TC_API_H_
-
-#include <netlink/netlink.h>
-#include <netlink/msg.h>
-#include <netlink/route/tc.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define RTNL_TC_TYPE_MAX (__RTNL_TC_TYPE_MAX - 1)
-
-/**
- * Traffic control object operations
- * @ingroup tc
- *
- * This structure holds function pointers and settings implementing
- * the features of each traffic control object implementation.
- */
-struct rtnl_tc_ops
-{
- /**
- * Name of traffic control module
- */
- char *to_kind;
-
- /**
- * Type of traffic control object
- */
- enum rtnl_tc_type to_type;
-
-
- /**
- * Size of private data
- */
- size_t to_size;
-
- /**
- * Dump callbacks
- */
- void (*to_dump[NL_DUMP_MAX+1])(struct rtnl_tc *, void *,
- struct nl_dump_params *);
- /**
- * Used to fill the contents of TCA_OPTIONS
- */
- int (*to_msg_fill)(struct rtnl_tc *, void *, struct nl_msg *);
-
- /**
- * Uesd to to fill tc related messages, unlike with to_msg_fill,
- * the contents is not encapsulated with a TCA_OPTIONS nested
- * attribute.
- */
- int (*to_msg_fill_raw)(struct rtnl_tc *, void *, struct nl_msg *);
-
- /**
- * TCA_OPTIONS message parser
- */
- int (*to_msg_parser)(struct rtnl_tc *, void *);
-
- /**
- * Called before a tc object is destroyed
- */
- void (*to_free_data)(struct rtnl_tc *, void *);
-
- /**
- * Called whenever a classifier object needs to be cloned
- */
- int (*to_clone)(void *, void *);
-
- /**
- * Internal, don't touch
- */
- struct nl_list_head to_list;
-};
-
-struct rtnl_tc_type_ops
-{
- enum rtnl_tc_type tt_type;
-
- char *tt_dump_prefix;
-
- /**
- * Dump callbacks
- */
- void (*tt_dump[NL_DUMP_MAX+1])(struct rtnl_tc *,
- struct nl_dump_params *);
-};
-
-extern int rtnl_tc_msg_parse(struct nlmsghdr *,
- struct rtnl_tc *);
-extern int rtnl_tc_msg_build(struct rtnl_tc *, int,
- int, struct nl_msg **);
-
-extern void rtnl_tc_free_data(struct nl_object *);
-extern int rtnl_tc_clone(struct nl_object *,
- struct nl_object *);
-extern void rtnl_tc_dump_line(struct nl_object *,
- struct nl_dump_params *);
-extern void rtnl_tc_dump_details(struct nl_object *,
- struct nl_dump_params *);
-extern void rtnl_tc_dump_stats(struct nl_object *,
- struct nl_dump_params *);
-extern int rtnl_tc_compare(struct nl_object *,
- struct nl_object *,
- uint32_t, int);
-
-extern void * rtnl_tc_data(struct rtnl_tc *);
-extern void * rtnl_tc_data_check(struct rtnl_tc *,
- struct rtnl_tc_ops *);
-
-extern struct rtnl_tc_ops * rtnl_tc_lookup_ops(enum rtnl_tc_type,
- const char *);
-extern struct rtnl_tc_ops * rtnl_tc_get_ops(struct rtnl_tc *);
-extern int rtnl_tc_register(struct rtnl_tc_ops *);
-extern void rtnl_tc_unregister(struct rtnl_tc_ops *);
-
-extern void rtnl_tc_type_register(struct rtnl_tc_type_ops *);
-extern void rtnl_tc_type_unregister(struct rtnl_tc_type_ops *);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/include/netlink/route/tc.h b/include/netlink/route/tc.h
index caee60c..836f7b1 100644
--- a/include/netlink/route/tc.h
+++ b/include/netlink/route/tc.h
@@ -30,6 +30,8 @@ enum rtnl_tc_type {
__RTNL_TC_TYPE_MAX,
};
+#define RTNL_TC_TYPE_MAX (__RTNL_TC_TYPE_MAX - 1)
+
/**
* Compute tc handle based on major and minor parts
* @ingroup tc