view src/syslogconfig.h @ 2:6e88da080f08

initial coding
author carl
date Thu, 24 Nov 2005 10:31:09 -0800
parents 551433a01cab
children 8fe310e5cd44
line wrap: on
line source

/***************************************************************************
 *	 Copyright (C) 2005 by 510 Software Group							   *
 *																		   *
 *																		   *
 *	 This program is free software; you can redistribute it and/or modify  *
 *	 it under the terms of the GNU General Public License as published by  *
 *	 the Free Software Foundation; either version 2 of the License, or	   *
 *	 (at your option) any later version.								   *
 *																		   *
 *	 This program is distributed in the hope that it will be useful,	   *
 *	 but WITHOUT ANY WARRANTY; without even the implied warranty of 	   *
 *	 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the		   *
 *	 GNU General Public License for more details.						   *
 *																		   *
 *	 You should have received a copy of the GNU General Public License	   *
 *	 along with this program; if not, write to the						   *
 *	 Free Software Foundation, Inc.,									   *
 *	 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.			   *
 ***************************************************************************/

#ifndef syslogconfig_include
#define syslogconfig_include

#include "tokenizer.h"
#include <map>


class SYSLOGCONFIG;

typedef SYSLOGCONFIG *			SYSLOGCONFIGP;
typedef list<SYSLOGCONFIGP> 	syslogconfig_list;
enum parser_style {cisco, ssh};
const int buflen = 1024;

class SYSLOGCONFIG {
	char *			file_name;	// name of the syslog file
	parser_style	parser;
	int 			fd;
	int 			len;		// bytes in the buffer
	char			buf[buflen];
public:
	SYSLOGCONFIG(TOKEN &tok, char *file_name_, parser_style parser_);
	~SYSLOGCONFIG();
	void	dump(int level);
	bool	failed()	{ return (fd == -1); };
	void	read();
	void	process();
};

struct CONFIG {
	// the only mutable stuff once it has been loaded from the config file
	int 				reference_count;	// protected by the global config_mutex
	// all the rest is constant after loading from the config file
	int 				generation;
	time_t				load_time;
	string_set			config_files;
	syslogconfig_list	syslogconfigs;		 // owns all the syslogconfigs, not just top level syslogconfigs

	CONFIG();
	~CONFIG();
	void	add_syslogconfig(SYSLOGCONFIGP con);
	void	dump();
	void	read();
};

void discard(string_set &s);
char* register_string(string_set &s, char *name);
char* register_string(char *name);
CONFIG *parse_config(char *fn);
bool  load_conf(CONFIG &dc, char *fn);
void  token_init();

extern char *token_cisco;
extern char *token_file;
extern char *token_include;
extern char *token_lbrace;
extern char *token_parser;
extern char *token_rbrace;
extern char *token_semi;
extern char *token_ssh;

#endif