Home | History | Annotate | Download | only in netlink
      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 (at) 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  */
     21 enum 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  */
     34 struct 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