types.h revision 44d362409d5469aed47d19e7908d19bd194493a
1/*
2 * netlink/netlink-types.h	Netlink Types
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_TYPES_H_
13#define __NETLINK_TYPES_H_
14
15#include <stdio.h>
16
17/**
18 * Dumping types (dp_type)
19 * @ingroup utils
20 */
21enum nl_dump_type {
22	NL_DUMP_BRIEF,		/**< Dump object in a brief one-liner */
23	NL_DUMP_FULL,		/**< Dump all attributes but no statistics */
24	NL_DUMP_STATS,		/**< Dump all attributes including statistics */
25	NL_DUMP_XML,		/**< Dump all attribtes in XML format */
26	NL_DUMP_ENV,		/**< Dump all attribtues as env variables */
27	NL_DUMP_EVENTS,		/**< Dump event */
28	__NL_DUMP_MAX,
29};
30#define NL_DUMP_MAX (__NL_DUMP_MAX - 1)
31
32/**
33 * Dumping parameters
34 * @ingroup utils
35 */
36struct nl_dump_params
37{
38	/**
39	 * Specifies the type of dump that is requested.
40	 */
41	enum nl_dump_type	dp_type;
42
43	/**
44	 * Specifies the number of whitespaces to be put in front
45	 * of every new line (indentation).
46	 */
47	int			dp_prefix;
48
49	/**
50	 * Causes the cache index to be printed for each element.
51	 */
52	int			dp_print_index;
53
54	/**
55	 * Causes each element to be prefixed with the message type.
56	 */
57	int			dp_dump_msgtype;
58
59	/**
60	 * A callback invoked for output
61	 *
62	 * Passed arguments are:
63	 *  - dumping parameters
64	 *  - string to append to the output
65	 */
66	void			(*dp_cb)(struct nl_dump_params *, char *);
67
68	/**
69	 * A callback invoked for every new line, can be used to
70	 * customize the indentation.
71	 *
72	 * Passed arguments are:
73	 *  - dumping parameters
74	 *  - line number starting from 0
75	 */
76	void			(*dp_nl_cb)(struct nl_dump_params *, int);
77
78	/**
79	 * User data pointer, can be used to pass data to callbacks.
80	 */
81	void			*dp_data;
82
83	/**
84	 * File descriptor the dumping output should go to
85	 */
86	FILE *			dp_fd;
87
88	/**
89	 * Alternatively the output may be redirected into a buffer
90	 */
91	char *			dp_buf;
92
93	/**
94	 * Length of the buffer dp_buf
95	 */
96	size_t			dp_buflen;
97
98	/**
99	 * PRIVATE
100	 * Set if a dump was performed prior to the actual dump handler.
101	 */
102	int			dp_pre_dump;
103};
104
105#endif
106