353 lines
10 KiB
C
353 lines
10 KiB
C
/* $Id: isdnlog.h,v 1.7 1997/05/25 19:41:02 luethje Exp $
|
|
*
|
|
* ISDN accounting for isdn4linux.
|
|
*
|
|
* Copyright 1995, 1997 by Andreas Kool (akool@Kool.f.EUnet.de)
|
|
* and Stefan Luethje (luethje@sl-gw.lake.de)
|
|
*
|
|
* 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, 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., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*
|
|
* $Log: isdnlog.h,v $
|
|
* Revision 1.7 1997/05/25 19:41:02 luethje
|
|
* isdnlog: close all files and open again after kill -HUP
|
|
* isdnrep: support vbox version 2.0
|
|
* isdnconf: changes by Roderich Schupp <roderich@syntec.m.EUnet.de>
|
|
* conffile: ignore spaces at the end of a line
|
|
*
|
|
* Revision 1.6 1997/05/09 23:30:50 luethje
|
|
* isdnlog: new switch -O
|
|
* isdnrep: new format %S
|
|
* bugfix in handle_runfiles()
|
|
*
|
|
* Revision 1.5 1997/04/08 00:02:17 luethje
|
|
* Bugfix: isdnlog is running again ;-)
|
|
* isdnlog creates now a file like /var/lock/LCK..isdnctrl0
|
|
* README completed
|
|
* Added some values (countrycode, areacode, lock dir and lock file) to
|
|
* the global menu
|
|
*
|
|
* Revision 1.4 1997/04/03 22:34:50 luethje
|
|
* splitt the files callerid.conf and ~/.isdn.
|
|
*
|
|
* Revision 1.3 1997/03/23 23:11:54 luethje
|
|
* improved performance
|
|
*
|
|
* Revision 1.2 1997/03/23 20:55:41 luethje
|
|
* some bugfixes
|
|
*
|
|
* Revision 1.1 1997/03/16 20:58:43 luethje
|
|
* Added the source code isdnlog. isdnlog is not working yet.
|
|
* A workaround for that problem:
|
|
* copy lib/policy.h into the root directory of isdn4k-utils.
|
|
*
|
|
* Revision 2.6.36 1997/02/11 18:21:43 akool
|
|
* isdnctrl2 implemented
|
|
*
|
|
* Revision 2.6.30 1997/01/28 16:49:43 akool
|
|
* LOG_MAJOR_VERSION auf 3 erhoeht
|
|
*
|
|
* Revision 2.6.26 1997/01/18 12:56:43 akool
|
|
* huptimeofs neu definiert
|
|
*
|
|
* Revision 2.3.4 1996/04/05 11:30:43 akool
|
|
* New ibytes/obytes ioctl() from Fritz implemented
|
|
* USERFILE
|
|
*
|
|
* Revision 2.23 1996/03/14 18:07:43 akool
|
|
*
|
|
* Revision 2.15 1996/02/21 20:14:43 akool
|
|
*
|
|
* Revision 2.12 1996/02/13 20:08:43 root
|
|
* Nu geht's (oder?)
|
|
*
|
|
* Revision 2.12 1996/02/13 20:08:43 root
|
|
* Nu geht's (oder?)
|
|
*
|
|
* Revision 1.2 1996/02/13 20:05:28 root
|
|
* so nun gehts
|
|
*
|
|
* Revision 1.1 1996/02/13 14:28:14 root
|
|
* Initial revision
|
|
*
|
|
* Revision 2.05 1995/02/11 17:10:16 akool
|
|
*
|
|
*/
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifndef _ISDNLOG_H_
|
|
#define _ISDNLOG_H_
|
|
|
|
/****************************************************************************/
|
|
|
|
#define PUBLIC extern
|
|
|
|
/****************************************************************************/
|
|
|
|
#include <tools.h>
|
|
#include "socket.h"
|
|
|
|
/****************************************************************************/
|
|
|
|
#define MAX_CALLS_IN_QUEUE 100
|
|
#define MAX_PRINTS_IN_QUEUE 500
|
|
|
|
/****************************************************************************/
|
|
|
|
#define BROADCAST 0x7f
|
|
|
|
/****************************************************************************/
|
|
|
|
#define ISDNCTRL 0
|
|
#define ISDNCTRL2 1
|
|
#define ISDNINFO 2
|
|
#define IN_PORT 3
|
|
|
|
#define FIRST_DESCR 3
|
|
|
|
/****************************************************************************/
|
|
|
|
#define PRT_SHOWNUMBERS 0x10
|
|
#define PRT_SHOWAOCD 0x20
|
|
#define PRT_SHOWCONNECT 0x40
|
|
#define PRT_SHOWHANGUP 0x80
|
|
#define PRT_SHOWCAUSE 0x100
|
|
#define PRT_SHOWTIME 0x200
|
|
#define PRT_SHOWBYTE 0x400
|
|
#define PRT_SHOWIMON 0x800
|
|
#define PRT_SHOWBEARER 0x1000
|
|
#define PRT_SHOWTICKS 0x2000
|
|
#define PRT_DEBUG_GENERAL 0x4000
|
|
#define PRT_DEBUG_DIAG 0x8000
|
|
#define PRT_DEBUG_INFO 0x10000
|
|
#define PRT_DEBUG_EXEC 0x20000
|
|
#define PRT_DEBUG_BUGS 0x40000
|
|
#define PRT_DEBUG_DECODE 0x80000
|
|
#define PRT_DEBUG_RING 0x100000
|
|
#define PRT_DEBUG_CS 0x200000
|
|
#define PRT_DEBUG_PROT 0x400000
|
|
#define PRT_NOTHING 0x800000
|
|
|
|
#define IS_DEBUG(VALUE) (VALUE >= PRT_DEBUG_GENERAL && VALUE < PRT_NOTHING)
|
|
|
|
/****************************************************************************/
|
|
|
|
#define AOC_INITIAL 0
|
|
#define AOCDCurrency 1
|
|
#define AOCDChargingUnit 2
|
|
#define AOCECurrency 3
|
|
#define AOCEChargingUnit 4
|
|
#define AOCDCurrencyInfo 5
|
|
#define AOCECurrencyInfo 6
|
|
#define AOCDChargingUnitInfo 7
|
|
#define AOCEChargingUnitInfo 8
|
|
#define RecordedCurrency 9
|
|
#define TypeOfChargingInfo 10
|
|
#define Currency 11
|
|
#define Amount 12
|
|
#define CurrencyAmount 13
|
|
#define Multiplier 14
|
|
#define RecordedUnitsList 15
|
|
#define RecordedUnits 16
|
|
#define NumberOfUnits 17
|
|
|
|
/****************************************************************************/
|
|
|
|
#define VERBOSE_HEX 1 /* only "HEX:" messages from /dev/isdnctrl */
|
|
#define VERBOSE_CTRL 2 /* any message from /dev/isdnctrl */
|
|
#define VERBOSE_INFO 4 /* any message from /dev/isdninfo */
|
|
#define VERBOSE_RATE 8 /* any message from ioctl(IIOCGETCPS) */
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifndef USERFILE
|
|
#define USERFILE "isdnlog.users"
|
|
#endif
|
|
|
|
/****************************************************************************/
|
|
|
|
typedef struct _interval {
|
|
int event;
|
|
int chan;
|
|
info_args *infoarg;
|
|
time_t next_start;
|
|
struct _interval *next;
|
|
} interval;
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifdef _ISDNLOG_C_
|
|
#define _EXTERN
|
|
socket_queue *sockets = NULL;
|
|
#else
|
|
#define _EXTERN extern
|
|
extern socket_queue *sockets;
|
|
#endif
|
|
|
|
_EXTERN FILE *flog; /* /var/adm/isdn.log */
|
|
_EXTERN FILE *fcons; /* /dev/ttyX (or stderr) */
|
|
_EXTERN FILE *fprot; /* /tmp/isdnctrl0 */
|
|
_EXTERN FILE *fout; /* outfile */
|
|
|
|
_EXTERN int first_descr;
|
|
_EXTERN int chan;
|
|
_EXTERN int message;
|
|
_EXTERN int syslogmessage;
|
|
_EXTERN int xinfo;
|
|
_EXTERN int sound;
|
|
_EXTERN int trace;
|
|
_EXTERN int isdaemon;
|
|
_EXTERN int imon;
|
|
_EXTERN int port;
|
|
_EXTERN int wakeup;
|
|
_EXTERN int fullhour;
|
|
_EXTERN int tty_dv;
|
|
_EXTERN int net_dv;
|
|
_EXTERN int inf_dv;
|
|
_EXTERN clock_t tt;
|
|
_EXTERN clock_t tto;
|
|
_EXTERN char st[FNSIZE];
|
|
_EXTERN char stl[FNSIZE];
|
|
_EXTERN int settime;
|
|
_EXTERN int replay;
|
|
_EXTERN int replaydev;
|
|
_EXTERN int verbose;
|
|
_EXTERN int synclog;
|
|
_EXTERN int any;
|
|
_EXTERN int stdoutput;
|
|
_EXTERN int allflags;
|
|
_EXTERN int newcps;
|
|
_EXTERN int chans;
|
|
_EXTERN int bilingual;
|
|
_EXTERN int hupctrl;
|
|
_EXTERN int hup1;
|
|
_EXTERN int hup2;
|
|
_EXTERN int mcalls;
|
|
_EXTERN int xlog;
|
|
_EXTERN char *myname, *myshortname;
|
|
_EXTERN int newline;
|
|
_EXTERN int width;
|
|
_EXTERN int watchdog;
|
|
_EXTERN char *isdnctrl;
|
|
_EXTERN char isdnctrl2[FNSIZE];
|
|
_EXTERN char *outfile;
|
|
_EXTERN char tmpout[PATH_MAX];
|
|
|
|
_EXTERN IFO ifo[ISDN_MAX_CHANNELS];
|
|
_EXTERN IO io[ISDN_MAX_CHANNELS];
|
|
|
|
#undef _EXTERN
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifdef _PROCESSOR_C_
|
|
#define _EXTERN
|
|
#else
|
|
#define _EXTERN extern
|
|
#endif
|
|
|
|
_EXTERN void dotrace(void);
|
|
_EXTERN int morectrl(int card);
|
|
_EXTERN void moreinfo(void);
|
|
_EXTERN void processrate(void);
|
|
_EXTERN void clearchan(int chan, int total);
|
|
|
|
#undef _EXTERN
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifdef _FUNCTIONS_C_
|
|
#define _EXTERN
|
|
#else
|
|
#define _EXTERN extern
|
|
#endif
|
|
|
|
#define Exit(a) _Exit(__FILE__,__LINE__,a)
|
|
|
|
_EXTERN void _Exit(char *File, int Line, int RetCode);
|
|
_EXTERN int print_msg(int Level, const char *fmt, ...);
|
|
_EXTERN int Change_Channel(int old_channel, int new_channel);
|
|
_EXTERN void set_time_str(void);
|
|
_EXTERN void now(void);
|
|
_EXTERN void logger(int chan);
|
|
_EXTERN int ringer(int chan, int event);
|
|
|
|
#undef _EXTERN
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifdef _SERVER_C_
|
|
#define _EXTERN
|
|
#else
|
|
#define _EXTERN extern
|
|
#endif
|
|
|
|
_EXTERN int message_from_server(CALL *call, int chan);
|
|
_EXTERN int eval_message(int sock);
|
|
_EXTERN int start_server(int port);
|
|
_EXTERN int listening(int port);
|
|
_EXTERN int print_from_server(char *String);
|
|
_EXTERN int change_channel(int old_chan, int new_chan);
|
|
_EXTERN int disconnect_client(int sock);
|
|
|
|
#undef _EXTERN
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifdef _START_PROG_C_
|
|
#define _EXTERN
|
|
#else
|
|
#define _EXTERN extern
|
|
#endif
|
|
|
|
_EXTERN int Ring(info_args *, char *[], int, int);
|
|
_EXTERN void Alarm(void);
|
|
_EXTERN int CheckTime(char *);
|
|
_EXTERN int Print_Cmd_Output( int sock );
|
|
_EXTERN int Get_Sock_From_Call_And_Info_Args( int chan, info_args *Ptr, int Cnt );
|
|
_EXTERN int Get_Sock_From_Call( int chan, int Cnt );
|
|
_EXTERN int Get_Sock_From_Info_Args( info_args *Ptr, int Cnt );
|
|
_EXTERN int Condition_Changed( int condition, int flag );
|
|
_EXTERN const char *Set_Ringer_Flags( int condtion, int InOut );
|
|
_EXTERN int Start_Ring(int chan, info_args *infoarg, int event, int intervalflag);
|
|
_EXTERN int Start_Process(int chan, info_args *infoarg, int event);
|
|
_EXTERN int New_Interval(int chan, info_args *infoarg, int event);
|
|
_EXTERN int Del_Interval(int chan, info_args *infoarg);
|
|
_EXTERN struct timeval *Get_Interval(int Sec);
|
|
_EXTERN int Change_Channel_Ring( int old_channel, int new_channel);
|
|
_EXTERN int Start_Interval(void);
|
|
|
|
#undef _EXTERN
|
|
|
|
/****************************************************************************/
|
|
|
|
#ifdef _USER_ACCESS_C_
|
|
#define _EXTERN
|
|
#else
|
|
#define _EXTERN extern
|
|
#endif
|
|
|
|
_EXTERN int read_user_access( void );
|
|
_EXTERN int write_user_access( void );
|
|
_EXTERN int user_has_access(char *User, char *Host);
|
|
_EXTERN int User_Get_Message(char *User, char *Host, char* mymsn, int Flag);
|
|
_EXTERN const char *userfile(void);
|
|
|
|
#undef _EXTERN
|
|
|
|
/****************************************************************************/
|
|
|
|
#endif /* _ISDNLOG_H_ */
|