1/* 2 * Copyright (c) 1999 Hellmuth Michaelis. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 17 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23 * SUCH DAMAGE. 24 * 25 *--------------------------------------------------------------------------- 26 * 27 * i4b remote monitor - private header 28 * ----------------------------------- 29 * 30 * $Id: monprivate.h,v 1.3 2011/08/31 13:32:37 joerg Exp $ 31 * 32 * $FreeBSD$ 33 * 34 * last edit-date: [Sat Jan 6 13:01:04 2001] 35 * 36 *---------------------------------------------------------------------------*/ 37 38#include <stdio.h> 39#include <stdlib.h> 40#include <string.h> 41#include <ctype.h> 42#include <errno.h> 43#include <signal.h> 44 45#ifndef WIN32 46#include <unistd.h> 47#include <syslog.h> 48#include <regex.h> 49#include <curses.h> 50#include <fcntl.h> 51 52#include <sys/param.h> 53#include <sys/stat.h> 54#include <sys/time.h> 55#include <sys/types.h> 56#include <sys/ioctl.h> 57#include <sys/poll.h> 58#endif 59 60/*---------------------------------------------------------------------------* 61 * definitions in i4b_ioctl.h, do something for other systems 62 *---------------------------------------------------------------------------*/ 63#if defined (__FreeBSD__) || defined(__NetBSD__) || \ 64 defined (__OpenBSD__) || defined(__bsdi__) 65 66#include <netisdn/i4b_ioctl.h> 67 68#else 69 70#define FOREIGN 1 /* we are running on a "foreign" OS */ 71 72#define I4B_TIME_FORMAT "%d.%m.%Y %H:%M:%S" 73#define VERSION 0 74#define REL 0 75#define STEP 0 76 77#endif 78 79/*---------------------------------------------------------------------------* 80 * some general definitions 81 *---------------------------------------------------------------------------*/ 82#define GOOD 0 /* general "good" or "ok" return*/ 83#define ERROR (-1) /* general error return */ 84#define WARNING (-2) /* warning return */ 85#define INVALID (-1) /* an invalid integer */ 86 87/*---------------------------------------------------------------------------* 88 * state definitions 89 *---------------------------------------------------------------------------*/ 90#define ST_INIT 0 /* initial data */ 91#define ST_ICTRL 1 /* initial controller list */ 92#define ST_IDEV 2 /* initial entry devicename list */ 93#define ST_ANYEV 3 /* any event */ 94#define ST_RIGHT 4 /* one record in a list of monitor rights */ 95#define ST_CONNS 5 /* monitor connections */ 96 97/*---------------------------------------------------------------------------* 98 * curses fullscreen display definitions 99 *---------------------------------------------------------------------------*/ 100/* window dimensions */ 101#define UPPER_B 2 /* upper window start */ 102 103/* horizontal positions for upper window */ 104#define H_CNTL 0 /* controller */ 105#define H_TEI 2 /* TEI */ 106#define H_CHAN (H_TEI+4) /* channel */ 107#define H_TELN (H_CHAN+2) /* telephone number */ 108#define H_IFN (H_TELN+23) /* interfacename */ 109#define H_IO (H_IFN+7) /* incoming or outgoing */ 110#define H_OUT (H_IO+4) /* # of bytes out */ 111#define H_OUTBPS (H_OUT+11) /* bytes per second out */ 112#define H_IN (H_OUTBPS+5) /* # of bytes in */ 113#define H_INBPS (H_IN+11) /* bytes per second in */ 114#define H_UNITS (H_INBPS+6) /* # of charging units */ 115 116/* fullscreen mode menu window */ 117#define WMENU_LEN 35 /* width of menu window */ 118#define WMENU_TITLE "Command" /* title string */ 119#define WMENU_POSLN 10 /* menu position, line */ 120#define WMENU_POSCO 5 /* menu position, col */ 121#define WMITEMS 4 /* no of menu items */ 122#define WMENU_HGT (WMITEMS + 4) /* menu window height */ 123 124#define WREFRESH 0 125#define WHANGUP 1 126#define WREREAD 2 127#define WQUIT 3 128 129#define WMTIMEOUT 5 /* timeout in seconds */ 130 131/*---------------------------------------------------------------------------* 132 * misc 133 *---------------------------------------------------------------------------*/ 134#define CHPOS(uctlr, uchan) (((uctlr)*2) + (uchan)) 135 136/*---------------------------------------------------------------------------* 137 * remote state 138 *---------------------------------------------------------------------------*/ 139 140#define MAX_CTRL 4 141 142typedef struct remstate { 143 int ch1state; 144 int ch2state; 145} remstate_t; 146 147/*---------------------------------------------------------------------------* 148 * global variables 149 *---------------------------------------------------------------------------*/ 150#ifdef MAIN 151 152remstate_t remstate[MAX_CTRL]; 153 154int nctrl = 0; /* # of controllers available */ 155int curses_ready = 0; /* curses initialized */ 156int do_bell = 0; 157int nentries = 0; 158int fullscreen = 0; 159int debug_noscreen = 0; 160 161#ifndef WIN32 162WINDOW *upper_w; /* curses upper window pointer */ 163WINDOW *mid_w; /* curses mid window pointer */ 164WINDOW *lower_w; /* curses lower window pointer */ 165#endif 166 167char devbuf[256]; 168 169char *sockpath = NULL; 170char *hostname = NULL; 171int portno; 172 173#else /* !MAIN */ 174 175remstate_t remstate[MAX_CTRL]; 176 177int nctrl; 178int curses_ready; 179int do_bell; 180int nentries; 181int fullscreen; 182int debug_noscreen; 183 184WINDOW *upper_w; 185WINDOW *mid_w; 186WINDOW *lower_w; 187 188char devbuf[256]; 189 190char *sockpath; 191char *hostname; 192int portno; 193 194#endif 195 196__dead extern void do_exit ( int exitval ); 197extern void do_menu ( void ); 198extern void init_screen ( void ); 199extern void display_charge ( int pos, int charge ); 200extern void display_ccharge ( int pos, int units ); 201extern void display_connect(int pos, int dir, char *name, char *remtel, char *dev); 202extern void display_acct ( int pos, int obyte, int obps, int ibyte, int ibps ); 203extern void display_disconnect ( int pos ); 204extern void display_updown ( int pos, int updown, char *device ); 205extern void display_l12stat ( int controller, int layer, int state ); 206extern void display_tei ( int controller, int tei ); 207 208extern void reread(void); 209extern void hangup(int ctrl, int chan); 210 211 212