diff options
Diffstat (limited to 'include/netlink/route')
-rw-r--r-- | include/netlink/route/link/api.h | 153 | ||||
-rw-r--r-- | include/netlink/route/link/info-api.h | 20 | ||||
-rw-r--r-- | include/netlink/route/tc-api.h | 136 | ||||
-rw-r--r-- | include/netlink/route/tc.h | 2 |
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 |