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