types.h revision 662887c052f0fcd98287e2a7fa5843a4f66ca256
144d362409d5469aed47d19e7908d19bd194493aThomas Graf/*
244d362409d5469aed47d19e7908d19bd194493aThomas Graf * netlink/netlink-types.h	Netlink Types
344d362409d5469aed47d19e7908d19bd194493aThomas Graf *
444d362409d5469aed47d19e7908d19bd194493aThomas Graf *	This library is free software; you can redistribute it and/or
544d362409d5469aed47d19e7908d19bd194493aThomas Graf *	modify it under the terms of the GNU Lesser General Public
644d362409d5469aed47d19e7908d19bd194493aThomas Graf *	License as published by the Free Software Foundation version 2.1
744d362409d5469aed47d19e7908d19bd194493aThomas Graf *	of the License.
844d362409d5469aed47d19e7908d19bd194493aThomas Graf *
944d362409d5469aed47d19e7908d19bd194493aThomas Graf * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */
1144d362409d5469aed47d19e7908d19bd194493aThomas Graf
1244d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef __NETLINK_TYPES_H_
1344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define __NETLINK_TYPES_H_
1444d362409d5469aed47d19e7908d19bd194493aThomas Graf
1544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <stdio.h>
1644d362409d5469aed47d19e7908d19bd194493aThomas Graf
1744d362409d5469aed47d19e7908d19bd194493aThomas Graf/**
1844d362409d5469aed47d19e7908d19bd194493aThomas Graf * Dumping types (dp_type)
1944d362409d5469aed47d19e7908d19bd194493aThomas Graf * @ingroup utils
2044d362409d5469aed47d19e7908d19bd194493aThomas Graf */
2144d362409d5469aed47d19e7908d19bd194493aThomas Grafenum nl_dump_type {
22662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	NL_DUMP_ONELINE,	/**< Dump object briefly on one line */
23662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	NL_DUMP_DETAILS,	/**< Dump all attributes but no statistics */
2444d362409d5469aed47d19e7908d19bd194493aThomas Graf	NL_DUMP_STATS,		/**< Dump all attributes including statistics */
2544d362409d5469aed47d19e7908d19bd194493aThomas Graf	NL_DUMP_XML,		/**< Dump all attribtes in XML format */
2644d362409d5469aed47d19e7908d19bd194493aThomas Graf	NL_DUMP_ENV,		/**< Dump all attribtues as env variables */
2744d362409d5469aed47d19e7908d19bd194493aThomas Graf	__NL_DUMP_MAX,
2844d362409d5469aed47d19e7908d19bd194493aThomas Graf};
2944d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_DUMP_MAX (__NL_DUMP_MAX - 1)
3044d362409d5469aed47d19e7908d19bd194493aThomas Graf
31662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf/* backards compat */
32662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf#define NL_DUMP_BRIEF NL_DUMP_ONELINE
33662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf#define NL_DUMP_FULL NL_DUMP_DETAILS
34662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf
3544d362409d5469aed47d19e7908d19bd194493aThomas Graf/**
3644d362409d5469aed47d19e7908d19bd194493aThomas Graf * Dumping parameters
3744d362409d5469aed47d19e7908d19bd194493aThomas Graf * @ingroup utils
3844d362409d5469aed47d19e7908d19bd194493aThomas Graf */
3944d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_dump_params
4044d362409d5469aed47d19e7908d19bd194493aThomas Graf{
4144d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
4244d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Specifies the type of dump that is requested.
4344d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
4444d362409d5469aed47d19e7908d19bd194493aThomas Graf	enum nl_dump_type	dp_type;
4544d362409d5469aed47d19e7908d19bd194493aThomas Graf
4644d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
4744d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Specifies the number of whitespaces to be put in front
4844d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * of every new line (indentation).
4944d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
5044d362409d5469aed47d19e7908d19bd194493aThomas Graf	int			dp_prefix;
5144d362409d5469aed47d19e7908d19bd194493aThomas Graf
5244d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
5344d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Causes the cache index to be printed for each element.
5444d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
5544d362409d5469aed47d19e7908d19bd194493aThomas Graf	int			dp_print_index;
5644d362409d5469aed47d19e7908d19bd194493aThomas Graf
5744d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
5844d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Causes each element to be prefixed with the message type.
5944d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
6044d362409d5469aed47d19e7908d19bd194493aThomas Graf	int			dp_dump_msgtype;
6144d362409d5469aed47d19e7908d19bd194493aThomas Graf
6244d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
6344d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * A callback invoked for output
6444d362409d5469aed47d19e7908d19bd194493aThomas Graf	 *
6544d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Passed arguments are:
6644d362409d5469aed47d19e7908d19bd194493aThomas Graf	 *  - dumping parameters
6744d362409d5469aed47d19e7908d19bd194493aThomas Graf	 *  - string to append to the output
6844d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
6944d362409d5469aed47d19e7908d19bd194493aThomas Graf	void			(*dp_cb)(struct nl_dump_params *, char *);
7044d362409d5469aed47d19e7908d19bd194493aThomas Graf
7144d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
7244d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * A callback invoked for every new line, can be used to
7344d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * customize the indentation.
7444d362409d5469aed47d19e7908d19bd194493aThomas Graf	 *
7544d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Passed arguments are:
7644d362409d5469aed47d19e7908d19bd194493aThomas Graf	 *  - dumping parameters
7744d362409d5469aed47d19e7908d19bd194493aThomas Graf	 *  - line number starting from 0
7844d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
7944d362409d5469aed47d19e7908d19bd194493aThomas Graf	void			(*dp_nl_cb)(struct nl_dump_params *, int);
8044d362409d5469aed47d19e7908d19bd194493aThomas Graf
8144d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
8244d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * User data pointer, can be used to pass data to callbacks.
8344d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
8444d362409d5469aed47d19e7908d19bd194493aThomas Graf	void			*dp_data;
8544d362409d5469aed47d19e7908d19bd194493aThomas Graf
8644d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
8744d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * File descriptor the dumping output should go to
8844d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
8944d362409d5469aed47d19e7908d19bd194493aThomas Graf	FILE *			dp_fd;
9044d362409d5469aed47d19e7908d19bd194493aThomas Graf
9144d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
9244d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Alternatively the output may be redirected into a buffer
9344d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
9444d362409d5469aed47d19e7908d19bd194493aThomas Graf	char *			dp_buf;
9544d362409d5469aed47d19e7908d19bd194493aThomas Graf
9644d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
9744d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Length of the buffer dp_buf
9844d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
9944d362409d5469aed47d19e7908d19bd194493aThomas Graf	size_t			dp_buflen;
10044d362409d5469aed47d19e7908d19bd194493aThomas Graf
10144d362409d5469aed47d19e7908d19bd194493aThomas Graf	/**
10244d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * PRIVATE
10344d362409d5469aed47d19e7908d19bd194493aThomas Graf	 * Set if a dump was performed prior to the actual dump handler.
10444d362409d5469aed47d19e7908d19bd194493aThomas Graf	 */
10544d362409d5469aed47d19e7908d19bd194493aThomas Graf	int			dp_pre_dump;
106662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf
107662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	/**
108662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	 * PRIVATE
109662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	 * Owned by the current caller
110662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	 */
111662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	int			dp_ivar;
112662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf
113662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf	unsigned int		dp_line;
11444d362409d5469aed47d19e7908d19bd194493aThomas Graf};
11544d362409d5469aed47d19e7908d19bd194493aThomas Graf
11644d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif
117