• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* SPDX-License-Identifier: LGPL-2.1-only */
2 /*
3  * Copyright (c) 2003-2012 Thomas Graf <tgraf@suug.ch>
4  */
5 
6 #ifndef __NETLINK_TYPES_H_
7 #define __NETLINK_TYPES_H_
8 
9 #include <stdio.h>
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 /**
16  * @ingroup utils
17  * Enumeration of dumping variations (dp_type)
18  */
19 enum nl_dump_type {
20 	NL_DUMP_LINE,		/**< Dump object briefly on one line */
21 	NL_DUMP_DETAILS,	/**< Dump all attributes but no statistics */
22 	NL_DUMP_STATS,		/**< Dump all attributes including statistics */
23 	__NL_DUMP_MAX,
24 };
25 #define NL_DUMP_MAX (__NL_DUMP_MAX - 1)
26 
27 /**
28  * @ingroup utils
29  * Dumping parameters
30  */
31 struct nl_dump_params
32 {
33 	/**
34 	 * Specifies the type of dump that is requested.
35 	 */
36 	enum nl_dump_type	dp_type;
37 
38 	/**
39 	 * Specifies the number of whitespaces to be put in front
40 	 * of every new line (indentation).
41 	 */
42 	int			dp_prefix;
43 
44 	/**
45 	 * Causes the cache index to be printed for each element.
46 	 */
47 	int			dp_print_index;
48 
49 	/**
50 	 * Causes each element to be prefixed with the message type.
51 	 */
52 	int			dp_dump_msgtype;
53 
54 	/**
55 	 * A callback invoked for output
56 	 *
57 	 * Passed arguments are:
58 	 *  - dumping parameters
59 	 *  - string to append to the output
60 	 */
61 	void			(*dp_cb)(struct nl_dump_params *, char *);
62 
63 	/**
64 	 * A callback invoked for every new line, can be used to
65 	 * customize the indentation.
66 	 *
67 	 * Passed arguments are:
68 	 *  - dumping parameters
69 	 *  - line number starting from 0
70 	 */
71 	void			(*dp_nl_cb)(struct nl_dump_params *, int);
72 
73 	/**
74 	 * User data pointer, can be used to pass data to callbacks.
75 	 */
76 	void			*dp_data;
77 
78 	/**
79 	 * File descriptor the dumping output should go to
80 	 */
81 	FILE *			dp_fd;
82 
83 	/**
84 	 * Alternatively the output may be redirected into a buffer
85 	 */
86 	char *			dp_buf;
87 
88 	/**
89 	 * Length of the buffer dp_buf
90 	 */
91 	size_t			dp_buflen;
92 
93 	/**
94 	 * PRIVATE
95 	 * Set if a dump was performed prior to the actual dump handler.
96 	 */
97 	int			dp_pre_dump;
98 
99 	/**
100 	 * PRIVATE
101 	 * Owned by the current caller
102 	 */
103 	int			dp_ivar;
104 
105 	unsigned int		dp_line;
106 };
107 
108 #ifdef __cplusplus
109 }
110 #endif
111 
112 #endif
113