libnl  1.1
class-modules.h
1 /*
2  * netlink/route/class-modules.h Class 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_CLASS_MODULES_H_
13 #define NETLINK_CLASS_MODULES_H_
14 
15 #include <netlink/netlink.h>
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 /**
22  * Class operations
23  * @ingroup class_api
24  */
26 {
27  /**
28  * Kind/Name of class
29  */
30  char co_kind[32];
31 
32  /**
33  * Dump callbacks
34  */
35  int (*co_dump[NL_DUMP_MAX+1])(struct rtnl_class *,
36  struct nl_dump_params *, int);
37 
38  /**
39  * Must return the contents supposed to be in TCA_OPTIONS
40  */
41  struct nl_msg *(*co_get_opts)(struct rtnl_class *);
42 
43  /**
44  * TCA_OPTIONS message parser
45  */
46  int (*co_msg_parser)(struct rtnl_class *);
47 
48  /**
49  * Called before a class object gets destroyed
50  */
51  void (*co_free_data)(struct rtnl_class *);
52 
53  /**
54  * Called whenever a class object needs to be cloned
55  */
56  int (*co_clone)(struct rtnl_class *, struct rtnl_class *);
57 
58  /**
59  * INTERNAL (Do not use)
60  */
62 };
63 
64 extern int rtnl_class_register(struct rtnl_class_ops *);
65 extern int rtnl_class_unregister(struct rtnl_class_ops *);
66 extern struct rtnl_class_ops * rtnl_class_lookup_ops(struct rtnl_class *);
67 extern struct rtnl_class_ops * __rtnl_class_lookup_ops(const char *);
68 
69 #ifdef __cplusplus
70 }
71 #endif
72 
73 #endif
int rtnl_class_register(struct rtnl_class_ops *)
Register a class module.
Definition: class_api.c:37
Class operations.
Definition: class-modules.h:25
int(* co_dump[NL_DUMP_MAX+1])(struct rtnl_class *, struct nl_dump_params *, int)
Dump callbacks.
Definition: class-modules.h:35
struct rtnl_class_ops * rtnl_class_lookup_ops(struct rtnl_class *)
Lookup class operations for a class object.
Definition: class_api.c:91
struct rtnl_class_ops * co_next
INTERNAL (Do not use)
Definition: class-modules.h:61
int rtnl_class_unregister(struct rtnl_class_ops *)
Unregister a class module.
Definition: class_api.c:58
void(* co_free_data)(struct rtnl_class *)
Called before a class object gets destroyed.
Definition: class-modules.h:51
int(* co_clone)(struct rtnl_class *, struct rtnl_class *)
Called whenever a class object needs to be cloned.
Definition: class-modules.h:56
int(* co_msg_parser)(struct rtnl_class *)
TCA_OPTIONS message parser.
Definition: class-modules.h:46
Dumping parameters.
Definition: types.h:36
char co_kind[32]
Kind/Name of class.
Definition: class-modules.h:30