blob: 802eac459ad59aa7ff1fe928aa5a98d533866c7b [file] [log] [blame]
Thomas Graf44d36242007-09-15 01:28:01 +02001/*
2 * netlink/route/qdisc-modules.h Qdisc Module API
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation version 2.1
7 * of the License.
8 *
9 * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
10 */
11
12#ifndef NETLINK_QDISC_MODULES_H_
13#define NETLINK_QDISC_MODULES_H_
14
15#include <netlink/netlink.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21/**
22 * Qdisc Operations
23 * @ingroup qdisc
24 */
25struct rtnl_qdisc_ops
26{
27 /**
28 * Kind/Name of Qdisc
29 */
30 char qo_kind[32];
31
32 /**
33 * Dump callbacks
34 */
35 int (*qo_dump[NL_DUMP_MAX+1])(struct rtnl_qdisc *,
36 struct nl_dump_params *, int);
37
38 /**
39 * Must return the contents supposed to be in TCA_OPTIONS
40 */
41 struct nl_msg *(*qo_get_opts)(struct rtnl_qdisc *);
42
43 /**
44 * TCA_OPTIONS message parser
45 */
46 int (*qo_msg_parser)(struct rtnl_qdisc *);
47
48 /**
49 * Called before a Qdisc object gets destroyed
50 */
51 void (*qo_free_data)(struct rtnl_qdisc *);
52
53 /**
54 * Called whenever a qdisc object needs to be cloned
55 */
56 int (*qo_clone)(struct rtnl_qdisc *, struct rtnl_qdisc *);
57
58 /**
59 * INTERNAL (Do not use)
60 */
61 struct rtnl_qdisc_ops *qo_next;
62};
63
64extern int rtnl_qdisc_register(struct rtnl_qdisc_ops *);
65extern int rtnl_qdisc_unregister(struct rtnl_qdisc_ops *);
66extern struct rtnl_qdisc_ops * rtnl_qdisc_lookup_ops(struct rtnl_qdisc *);
67extern struct rtnl_qdisc_ops * __rtnl_qdisc_lookup_ops(const char *);
68
69#ifdef __cplusplus
70}
71#endif
72
73#endif