/*- * Copyright (c) 2002-2005 Christian S.J. Peron * Copyright (c) 2002-2005 Seccuris Labs, Inc * All rights reserved. * * This software was developed for Seccuris Labs by Christian S.J. Peron. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF */ #ifndef _TERMLOG_DOT_H_ #define _TERMLOG_DOT_H_ #define DEFAULT_LINE_BUFSIZE 1024U #define MAXUSERS 10U #define MAXTTYS 10U #undef DEBUGGING #undef DEBUG_LOCKS #define TERMLOG_VERSION "2.5-RELEASE" #define _PATH_TERMLOG_STATS "termlog.stats" #define _SNP_MAJOR 53 #include #include #ifndef DEBUGGING #undef NDEBUG #endif #ifndef TAILQ_FOREACH_SAFE #define TAILQ_FOREACH_SAFE(var, head, field, tvar) \ for ((var) = TAILQ_FIRST((head)); \ (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ (var) = (tvar)) #endif struct snp_d { char s_username[UT_NAMESIZE]; char s_line[UT_LINESIZE]; int s_fd; void *s_meta; int (*snp_write)(void *data, char *ptr, int size); void *(*snp_setup)(void *data, char *config); int (*snp_close)(void *data); int (*snp_overflow)(void *data); u_long s_bytes; TAILQ_ENTRY(snp_d) glue; }; #define DEBUG(v, fmt, args...) \ do { \ if (v > 0) \ fprintf(stderr, "DEBUG: " fmt "\n", ##args); \ } while (0) int getsnpfd(char **, size_t); int ttystat(char *, int); int processutmp(struct stat *); int linktty(struct utmp *); int snpattach(char *); void *watchutmp(void *); int ttyislinked(struct utmp *); void usage(char *); int checkuserlist(struct utmp *); int checkttylist(struct utmp *); int skipcrtltty(struct utmp *); int handlesnpio(struct snp_d *); int buildfdlist(fd_set *); void *eventloop(void *); int dolog(char const *const fmt, ...); #endif