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 { 22d84430702496f617c01c5e2d27d0e82e02390bb7Thomas Graf NL_DUMP_LINE, /**< 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_ENV, /**< Dump all attribtues as env variables */ 2644d362409d5469aed47d19e7908d19bd194493aThomas Graf __NL_DUMP_MAX, 2744d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 2844d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NL_DUMP_MAX (__NL_DUMP_MAX - 1) 2944d362409d5469aed47d19e7908d19bd194493aThomas Graf 3044d362409d5469aed47d19e7908d19bd194493aThomas Graf/** 3144d362409d5469aed47d19e7908d19bd194493aThomas Graf * Dumping parameters 3244d362409d5469aed47d19e7908d19bd194493aThomas Graf * @ingroup utils 3344d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 3444d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct nl_dump_params 3544d362409d5469aed47d19e7908d19bd194493aThomas Graf{ 3644d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 3744d362409d5469aed47d19e7908d19bd194493aThomas Graf * Specifies the type of dump that is requested. 3844d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 3944d362409d5469aed47d19e7908d19bd194493aThomas Graf enum nl_dump_type dp_type; 4044d362409d5469aed47d19e7908d19bd194493aThomas Graf 4144d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 4244d362409d5469aed47d19e7908d19bd194493aThomas Graf * Specifies the number of whitespaces to be put in front 4344d362409d5469aed47d19e7908d19bd194493aThomas Graf * of every new line (indentation). 4444d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 4544d362409d5469aed47d19e7908d19bd194493aThomas Graf int dp_prefix; 4644d362409d5469aed47d19e7908d19bd194493aThomas Graf 4744d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 4844d362409d5469aed47d19e7908d19bd194493aThomas Graf * Causes the cache index to be printed for each element. 4944d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 5044d362409d5469aed47d19e7908d19bd194493aThomas Graf int dp_print_index; 5144d362409d5469aed47d19e7908d19bd194493aThomas Graf 5244d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 5344d362409d5469aed47d19e7908d19bd194493aThomas Graf * Causes each element to be prefixed with the message type. 5444d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 5544d362409d5469aed47d19e7908d19bd194493aThomas Graf int dp_dump_msgtype; 5644d362409d5469aed47d19e7908d19bd194493aThomas Graf 5744d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 5844d362409d5469aed47d19e7908d19bd194493aThomas Graf * A callback invoked for output 5944d362409d5469aed47d19e7908d19bd194493aThomas Graf * 6044d362409d5469aed47d19e7908d19bd194493aThomas Graf * Passed arguments are: 6144d362409d5469aed47d19e7908d19bd194493aThomas Graf * - dumping parameters 6244d362409d5469aed47d19e7908d19bd194493aThomas Graf * - string to append to the output 6344d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 6444d362409d5469aed47d19e7908d19bd194493aThomas Graf void (*dp_cb)(struct nl_dump_params *, char *); 6544d362409d5469aed47d19e7908d19bd194493aThomas Graf 6644d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 6744d362409d5469aed47d19e7908d19bd194493aThomas Graf * A callback invoked for every new line, can be used to 6844d362409d5469aed47d19e7908d19bd194493aThomas Graf * customize the indentation. 6944d362409d5469aed47d19e7908d19bd194493aThomas Graf * 7044d362409d5469aed47d19e7908d19bd194493aThomas Graf * Passed arguments are: 7144d362409d5469aed47d19e7908d19bd194493aThomas Graf * - dumping parameters 7244d362409d5469aed47d19e7908d19bd194493aThomas Graf * - line number starting from 0 7344d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 7444d362409d5469aed47d19e7908d19bd194493aThomas Graf void (*dp_nl_cb)(struct nl_dump_params *, int); 7544d362409d5469aed47d19e7908d19bd194493aThomas Graf 7644d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 7744d362409d5469aed47d19e7908d19bd194493aThomas Graf * User data pointer, can be used to pass data to callbacks. 7844d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 7944d362409d5469aed47d19e7908d19bd194493aThomas Graf void *dp_data; 8044d362409d5469aed47d19e7908d19bd194493aThomas Graf 8144d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 8244d362409d5469aed47d19e7908d19bd194493aThomas Graf * File descriptor the dumping output should go to 8344d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 8444d362409d5469aed47d19e7908d19bd194493aThomas Graf FILE * dp_fd; 8544d362409d5469aed47d19e7908d19bd194493aThomas Graf 8644d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 8744d362409d5469aed47d19e7908d19bd194493aThomas Graf * Alternatively the output may be redirected into a buffer 8844d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 8944d362409d5469aed47d19e7908d19bd194493aThomas Graf char * dp_buf; 9044d362409d5469aed47d19e7908d19bd194493aThomas Graf 9144d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 9244d362409d5469aed47d19e7908d19bd194493aThomas Graf * Length of the buffer dp_buf 9344d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 9444d362409d5469aed47d19e7908d19bd194493aThomas Graf size_t dp_buflen; 9544d362409d5469aed47d19e7908d19bd194493aThomas Graf 9644d362409d5469aed47d19e7908d19bd194493aThomas Graf /** 9744d362409d5469aed47d19e7908d19bd194493aThomas Graf * PRIVATE 9844d362409d5469aed47d19e7908d19bd194493aThomas Graf * Set if a dump was performed prior to the actual dump handler. 9944d362409d5469aed47d19e7908d19bd194493aThomas Graf */ 10044d362409d5469aed47d19e7908d19bd194493aThomas Graf int dp_pre_dump; 101662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf 102662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf /** 103662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf * PRIVATE 104662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf * Owned by the current caller 105662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf */ 106662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf int dp_ivar; 107662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf 108662887c052f0fcd98287e2a7fa5843a4f66ca256Thomas Graf unsigned int dp_line; 10944d362409d5469aed47d19e7908d19bd194493aThomas Graf}; 11044d362409d5469aed47d19e7908d19bd194493aThomas Graf 11144d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif 112