1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383
|
/* $Id: isdnrep.h,v 1.25 2004/12/16 21:30:50 tobiasb Exp $
*
* ISDN accounting for isdn4linux.
*
* Copyright 1995 .. 2000 by Andreas Kool (akool@isdn4linux.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: isdnrep.h,v $
* Revision 1.25 2004/12/16 21:30:50 tobiasb
* New option -U: default source number for outgoing calls.
*
* Revision 1.24 2004/07/25 14:21:13 tobiasb
* New isdnrep option -m [*|/]number. It multiplies or divide the cost of
* each call by the given number. `-m/1.16' for example displays the costs
* without the German `Umsatzsteuer'.
*
* Revision 1.23 2004/07/24 17:58:06 tobiasb
* New isdnrep options: `-L:' controls the displayed call summaries in the
* report footer. `-x' displays only call selected or not deselected by
* hour or type of day -- may be useful in conjunction with `-r'.
*
* Activated new configuration file entry `REPOPTIONS' for isdnrep default
* options. This options can be disabled by `-c' on the command line.
*
* Revision 1.22 2003/10/29 17:41:35 tobiasb
* isdnlog-4.67:
* - Enhancements for isdnrep:
* - New option -r for recomputing the connection fees with the rates
* from the current (and for a different or the cheapest provider).
* - Revised output format of summaries at end of report.
* - New format parameters %j, %v, and %V.
* - 2 new input formats for -t option.
* - Fix for dualmode workaround 0x100 to ensure that incoming calls
* will not become outgoing calls if a CALL_PROCEEDING message with
* an B channel confirmation is sent by a terminal prior to CONNECT.
* - Fixed and enhanced t: Tag handling in pp_rate.
* - Fixed typo in interface description of tools/rate.c
* - Fixed typo in tools/isdnrate.man, found by Paul Slootman.
* - Minor update to sample isdn.conf files:
* - Default isdnrep format shows numbers with 16 chars (+ & 15 digits).
* - New isdnrep format (-FNIO) without display of transferred bytes.
* - EUR as currency in Austria, may clash with outdated rate-at.dat.
* The number left of the currency symbol is nowadays insignificant.
* - Changes checked in earlier but after step to isdnlog-4.66:
* - New option for isdnrate: `-rvNN' requires a vbn starting with NN.
* - Do not compute the zone with empty strings (areacodes) as input.
* - New ratefile tags r: und t: which need an enhanced pp_rate.
* For a tag description see rate-files(5).
* - Some new and a few updated international cellphone destinations.
*
* NOTE: If there any questions, problems, or problems regarding isdnlog,
* feel free to join the isdn4linux mailinglist, see
* https://www.isdn4linux.de/mailman/listinfo/isdn4linux for details,
* or send a mail in English or German to <tobiasb@isdn4linux.de>.
*
* Revision 1.21 2000/10/15 12:53:04 leo
* Changed iobytes to double
*
* Revision 1.20 2000/08/17 21:34:44 akool
* isdnlog-4.40
* - README: explain possibility to open the "outfile=" in Append-Mode with "+"
* - Fixed 2 typos in isdnlog/tools/zone/de - many thanks to
* Tobias Becker <tobias@talypso.de>
* - detect interface (via IIOCNETGPN) _before_ setting CHARGEINT/HUPTIMEOUT
* - isdnlog/isdnlog/processor.c ... fixed wrong init of IIOCNETGPNavailable
* - isdnlog/isdnrep/isdnrep.c ... new option -S summary
* - isdnlog/isdnrep/rep_main.c
* - isdnlog/isdnrep/isdnrep.1.in
* - isdnlog/tools/NEWS
* - isdnlog/tools/cdb/debian ... (NEW dir) copyright and such from orig
* - new "rate-de.dat" from sourceforge (hi and welcome: Who is "roro"?)
*
* Revision 1.19 2000/03/06 07:03:20 akool
* isdnlog-4.15
* - isdnlog/tools/tools.h ... moved one_call, sum_calls to isdnrep.h
* ==> DO A 'make clean' PLEASE
* - isdnlog/tools/telnum.c ... fixed a small typo
* - isdnlog/isdnrep/rep_main.c ... incl. dest.h
* - isdnlog/isdnrep/isdnrep.c ... fixed %l, %L
* - isdnlog/isdnrep/isdnrep.h ... struct one_call, sum_calls are now here
*
* Support for Norway added. Many thanks to Tore Ferner <torfer@pvv.org>
* - isdnlog/rate-no.dat ... NEW
* - isdnlog/holiday-no.dat ... NEW
* - isdnlog/samples/isdn.conf.no ... NEW
* - isdnlog/samples/rate.conf.no ... NEW
*
* Revision 1.18 1999/12/31 13:57:19 akool
* isdnlog-4.00 (Millenium-Edition)
* - Oracle support added by Jan Bolt (Jan.Bolt@t-online.de)
* - resolved *any* warnings against rate-de.dat
* - Many new rates
* - CREDITS file added
*
* Revision 1.17 1999/12/17 22:51:54 akool
* isdnlog-3.79
* - isdnlog/isdnrep/isdnrep.{c,h} ... error -handling, print_msg
* - isdnlog/isdnrep/rep_main.c
* - isdnlog/isdnrep/isdnrep.1.in
* - isdnlog/tools/rate.c ... dupl entry in rate.conf
* - isdnlog/tools/NEWS
* - isdnlog/tools/isdnrate.c
* - isdnlog/tools/dest/configure{,.in}
* - isdnlog/tools/zone/configure{,.in}
*
* Revision 1.16 1999/07/18 08:40:37 akool
* fix from Michael
*
* Revision 1.15 1999/07/12 11:37:37 calle
* Bugfix: isdnrep defined print_msg as function pointer, the object files
* in tools directory, declare it as external function.
* compiler and linker did not detect the problem.
* Now print_msg is a function in rep_main.c and I copied
* print_in_modules from isdnconf. Also set_print_fct_for_isdnrep
* is removed from isdnrep.c. isdnrep didnt crash now, but throw
* out warning messages about rate.dat and didt generate output.
*
* Revision 1.14 1999/05/04 19:33:19 akool
* isdnlog Version 3.24
*
* - fully removed "sondernummern.c"
* - removed "gcc -Wall" warnings in ASN.1 Parser
* - many new entries for "rate-de.dat"
* - better "isdnconf" utility
*
* Revision 1.13 1999/03/24 19:38:41 akool
* - isdnlog Version 3.10
* - moved "sondernnummern.c" from isdnlog/ to tools/
* - "holiday.c" and "rate.c" integrated
* - NetCologne rates from Oliver Flimm <flimm@ph-cip.uni-koeln.de>
* - corrected UUnet and T-Online rates
*
* Revision 1.12 1999/01/24 19:02:25 akool
* - second version of the new chargeint database
* - isdnrep reanimated
*
* Revision 1.11 1998/11/24 20:52:46 akool
* - changed my email-adress
* - new Option "-R" to supply the preselected provider (-R24 -> Telepassport)
* - made Provider-Prefix 6 digits long
* - full support for internal S0-bus implemented (-A, -i Options)
* - isdnlog now ignores unknown frames
* - added 36 allocated, but up to now unused "Auskunft" Numbers
* - added _all_ 122 Providers
* - Patch from Jochen Erwied <mack@Joker.E.Ruhr.DE> for Quante-TK-Anlagen
* (first dialed digit comes with SETUP-Frame)
*
* Revision 1.10 1998/03/29 19:54:17 luethje
* idnrep: added html feature (incoming/outgoing calls)
*
* Revision 1.9 1998/03/08 11:43:08 luethje
* I4L-Meeting Wuerzburg final Edition, golden code - Service Pack number One
*
* Revision 1.8 1997/05/15 23:24:56 luethje
* added new links on HTML
*
* Revision 1.7 1997/05/15 22:21:40 luethje
* New feature: isdnrep can transmit via HTTP fax files and vbox files.
*
* Revision 1.6 1997/04/20 22:52:28 luethje
* isdnrep has new features:
* -variable format string
* -can create html output (option -w1 or ln -s isdnrep isdnrep.cgi)
* idea and design from Dirk Staneker (dirk.staneker@student.uni-tuebingen.de)
* bugfix of processor.c from akool
*
* Revision 1.5 1997/04/16 22:23:00 luethje
* some bugfixes, README completed
*
* Revision 1.4 1997/04/03 22:30:03 luethje
* improved performance
*
* Revision 1.3 1997/03/24 22:52:14 luethje
* isdnrep completed.
*
*/
#ifndef _ISDNREP_H_
#define _ISDNREP_H_
#define PUBLIC extern
#include <tools.h>
#include <holiday.h>
#include <rate.h>
#include <telnum.h>
/*****************************************************************************/
#ifdef MAXUNKNOWN
#undef MAXUNKNOWN
#endif
#define MAXUNKNOWN 500
#ifdef MAXCONNECTS
#undef MAXCONNECTS
#endif
#define MAXCONNECTS 500
/*****************************************************************************/
#define H_PRINT_HTML 1
#define H_PRINT_HEADER 2
/*****************************************************************************/
typedef struct {
char mode; /* \0 (none), - (logged provider), p (provider), v (vbn) */
int prefix; /* internal provider number */
int count; /* number of calls suitable for recomputing */
int unknown; /* thereof the calls which have not been recomputed */
int cheaper; /* number of calls where a cheaper provider was found */
char *input; /* input from command line after -r[vp] */
} RECALC;
/*****************************************************************************/
typedef struct {
int mode; /* 0 no action, 1 multiply, 2 divide */
char *numstr; /* number as string, part of given option */
double number; /* number for multiplication or division */
} MODCOST;
/*****************************************************************************/
typedef struct {
int mode; /* 0 no action, 1 use and show, 2 only use */
char *number; /* replacement for missing source numbers */
} DEFSRC;
/*****************************************************************************/
/* isdnrep.c defines _REP_FUNC_C_, rep_main.c defines _ISDNREP_C_, ... */
#ifdef _REP_FUNC_C_
#define _EXTERN
#define _SET_NULL = NULL
#define _SET_0 = 0
#define _SET_1 = 1
#define _SET_33 = 33
#define _SET_EMPTY = ""
#define _SET_ARRAY_0 = { 0 }
#else
#define _EXTERN extern
#define _SET_NULL
#define _SET_0
#define _SET_1
#define _SET_33
#define _SET_EMPTY
#define _SET_ARRAY_0
#define _SET_FILE
#endif
_EXTERN int read_logfile(char *myname);
_EXTERN int get_term (char *String, time_t *Begin, time_t *End,int delentries);
_EXTERN int set_msnlist(char *String);
_EXTERN int send_html_request(char *myname, char *option);
_EXTERN int new_args(int *nargc, char ***nargv);
_EXTERN int prep_recalc(void);
_EXTERN int select_summaries(int *list, char *input);
_EXTERN char *select_day_hour(bitfield *days, bitfield *hours, char *input);
_EXTERN int print_msg(int Level, const char *, ...);
_EXTERN int incomingonly _SET_0;
_EXTERN int outgoingonly _SET_0;
_EXTERN int verbose _SET_0;
_EXTERN int print_failed _SET_0;
_EXTERN int bill _SET_0;
_EXTERN int timearea _SET_0;
_EXTERN int phonenumberonly _SET_0;
_EXTERN int delentries _SET_0;
_EXTERN int numbers _SET_0;
_EXTERN int html _SET_0;
_EXTERN int seeunknowns _SET_0;
_EXTERN int header _SET_1;
_EXTERN char timestring[256] _SET_EMPTY;
_EXTERN char *lineformat _SET_NULL;
_EXTERN time_t begintime _SET_0;
_EXTERN time_t endtime _SET_0;
#if 0 /* fixme remove */
_EXTERN int preselect _SET_33;
#endif
_EXTERN int summary _SET_0;
_EXTERN RECALC recalc; /* initiation done in main */
_EXTERN MODCOST modcost; /* initiation done in main */
_EXTERN DEFSRC defsrc; /* initiation done in main */
_EXTERN int sel_sums[3] _SET_ARRAY_0;
_EXTERN bitfield days[2] _SET_ARRAY_0;
_EXTERN bitfield hours[2] _SET_ARRAY_0;
#undef _SET_NULL
#undef _SET_0
#undef _SET_1
#undef _SET_EMPTY
#undef _SET_ARRAY_0
#undef _EXTERN
/*****************************************************************************/
#ifdef _OPT_TIME_C_
#define _EXTERN
#else
#define _EXTERN extern
#endif
_EXTERN int get_term (char *String, time_t *Begin, time_t *End,int delentries);
#undef _EXTERN
/*****************************************************************************/
#define LOG_VERSION_1 "1.0"
#define LOG_VERSION_2 "2.0"
#define LOG_VERSION_3 "3.0"
#define LOG_VERSION_4 "3.1"
/*****************************************************************************/
#define C_DELIM '|'
/*****************************************************************************/
typedef struct {
char num[NUMSIZE];
char mynum[NUMSIZE];
int si1;
int called;
int connects;
time_t connect[MAXCONNECTS];
int cause;
} UNKNOWNS;
/****************************************************************************/
/* these were in tools.h, but are onyl used in isdnrep */
typedef struct {
int in;
int out;
int eh;
int err;
double din;
double dout;
double pay;
double ibytes;
double obytes;
} sum_calls;
/****************************************************************************/
typedef struct {
int eh;
int cause;
time_t t;
int dir;
double duration;
char num[2][NUMSIZE];
char who[2][RETSIZE];
char sarea[2][TN_MAX_SAREA_LEN]; /* lt */
double ibytes;
double obytes;
char version[10];
int si;
int si1;
double currency_factor;
char currency[32];
double pay;
int provider;
int zone; /* fixme: zones may vary over time */
} one_call;
/*****************************************************************************/
#endif /* _ISDNREP_H_ */
|