home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume26 / modempool / part01 / modempool.h < prev    next >
C/C++ Source or Header  |  1993-04-05  |  6KB  |  203 lines

  1. /*******************************************************************
  2.  * 
  3.  * Module: @(#)modempool.h    4.4 92/04/22
  4.  *
  5.  * Description:
  6.  *    Header file fore the modempool package.    
  7.  * 
  8.  * Revision:
  9.  *    Date    By        Reason    
  10.  *    ----    --        ------    
  11.  *    910414    Lars Berntzon    Created
  12.  *
  13.  *******************************************************************/
  14. #include "patchlevel.h"
  15.  
  16. static char SccsId_modempool_h[] = "@(#)modempool.h    4.4 92/04/22";
  17.  
  18. #ifndef _MODEMPOOL_H
  19. #define _MODEMPOOL_H
  20.  
  21. #ifdef DEBUG
  22. #  define USERS      "Users"
  23. #  define LINES      "Lines"
  24. #  define LOGFILE "log"
  25. #  define ERRLOGFILE "errlog"
  26. #  define GREETINGSFILE    "Greetings"
  27. #  define GREETINGSFILE    "Greetings"
  28. #  define SERVERDB    "serverdb"
  29. #  define LOCKFILE    "serverdb.lock"
  30. #else
  31. #  define USERS        "/etc/local/modempool/Users"
  32. #  define LINES        "/etc/local/modempool/Lines"
  33. #  define LOGFILE    "/etc/local/modempool/log"
  34. #  define ERRLOGFILE    "/etc/local/modempool/errlog"
  35. #  define GREETINGSFILE    "/etc/local/modempool/Greetings"
  36. #  define SERVERDB    "/etc/local/modempool/serverdb"
  37. #  define LOCKFILE    "/etc/local/modempool/serverdb.lock"
  38. #endif
  39. #define LOCKDIR    "/usr/spool/locks"
  40.  
  41. #define E_OK        0    /* No errors                */
  42. #define E_FAIL        -1    /* Generic fail                */
  43. #define E_TMOUT         -2    /* Got timeout                */
  44. #define E_SYNTAX    -3    /* Syntax error                */
  45. #define E_OPEN        -4    /* Failed to open file            */
  46. #define E_READ        -5    /* Failed to read file            */
  47. #define E_WRITE        -6    /* Failed to write file            */
  48. #define E_LOCK        -7    /* Failed to lock            */
  49. #define E_UNLINK    -8    /* Failed to unlink            */
  50. #define E_PROC_EXIST    -9    /* Process alldready exist        */
  51. #define E_LOGIN        -10    /* Failed to login            */
  52. #define E_NOTFOUND    -11    /* Key not found            */
  53. #define E_EOF        -12    /* Reached enf of file/data        */
  54. #define E_RETRY        -13    /* Not completely wrong, try again    */
  55.  
  56. #define INITSTRING "AT&FQ0E0S0=1&D2&C1\r"    /* Modem init string    */
  57.  
  58.  
  59. /*
  60.  * Various messages to user.
  61.  */
  62. #define MSG_LOGIN    "login: "
  63. #define MSG_NAME    "Name: "
  64. #define MSG_PASSWD    "Password: "
  65. #define MSG_ABORTED    "login aborted\r\n"
  66. #define MSG_LOGINFAIL    "login failed\r\n"
  67. #define MSG_HANGUP    "hanging up\r\n"
  68. #define MSG_TIMEOUT    "timed out\r\n"
  69. #define MSG_CALLING    "I will call you back, hang on.\r\n"
  70. #define MSG_NOLINES    "There are currently no free lines.\r\n"
  71. #define MSG_USAGE    "usage: modempool [-p prefix] [-i initstr] [-d] speed ttyxx\r\n"
  72. #define MSG_PHONE    "Phone: "
  73.  
  74. /*
  75.  * Return codes and arguments to/from mod_exp.
  76.  */
  77. #define MOD_ANY            0    /* Wait for any of the below    */
  78. #define MOD_CONNECT        1
  79. #define MOD_CONNECT_300        2
  80. #define MOD_CONNECT_1200    3
  81. #define MOD_CONNECT_2400    4
  82. #define MOD_RING        5
  83. #define MOD_BUSY        6
  84. #define MOD_ERRO        7
  85. #define MOD_NO_CARRIER        8
  86. #define MOD_OK            9
  87. #define MOD_CONNECT_4800    10
  88. #define MOD_CONNECT_9600    11
  89.  
  90. #define NAME_SIZE    200    /* Generic string size                  */
  91. #define MATCH_SIZE    400    /* Maximum size of expected data from modem   */
  92. #define MAX_RETRY    3
  93. #define OPEN_TMOUT    (10*60)    /* Timeout for opening the tty port          */
  94. #define LOGIN_TMOUT    30    /* Timeout for login                  */
  95. #define MODEM_TMOUT    1    /* Default timeout for avaiting modem answer  */
  96. #define RESET_TMOUT    180    /* Interval for resetting modem when waiting  */
  97. #define DIALUP_TMOUT    60    /* Time for dialing a number              */
  98. #define DIALUP_DELAY    15    /* Time to wait before dialing                */
  99. #ifdef RLOGIN
  100. #define N_FIELDS    4    /* Number if valid fields in user database    */
  101. #else
  102. #define N_FIELDS    3
  103. #endif
  104.  
  105. #define SLOT_FREE        0    /* Server is free for allocation    */
  106. #define SLOT_BUSY        1    /* Server is busy dialing person    */
  107. #define SLOT_LOGIN        2    /* Server is handling login        */
  108. #define SLOT_FAULT        3    /* Server has detected fault        */
  109.  
  110. #define SIG_SERVER        SIGUSR1
  111.  
  112. /*
  113.  * Types and structs.
  114.  */
  115.  
  116. struct slot {
  117.     int id;            /* Id for this slot                  */
  118.     char line[15];        /* Line this server controls              */
  119.     char name[30];        /* Synonym for calling person                  */
  120. #ifdef RLOGIN
  121.     char host[20];        /* Host for rlogin.                  */
  122. #endif
  123.     int status;            /* Status of server, SLOT_FREE e.t.c.          */
  124.     int pid;            /* pid of server                  */
  125.     char phone[15];        /* Phone number this server should dial          */
  126.     int baud;            /* What baud to use when dialing          */
  127. };
  128. typedef struct slot slot_t;    /* Type for slots */
  129.  
  130. /*
  131.  * Globals.
  132.  */
  133. extern char line[NAME_SIZE];    /* Name port this program is using          */
  134. extern char portname[NAME_SIZE];/* Full pathname of port               */
  135. extern char prefix[NAME_SIZE];    /* Prefix string before phone number          */
  136. extern slot_t slot;        /* Slotid for this server in serverdb          */
  137. extern int signalled;        /* Tells server it should dial a number       */
  138. extern int port_fd;        /* File descriptor for open port          */
  139. extern int debug_lvl;        /* Nonzero if debugging is active          */
  140. extern char *initstr;        /* Modem initializing string            */
  141.  
  142. /* support routines */
  143. extern int debug(char *fmt, ...);
  144. extern int debugnonl(char *fmt, ...);
  145. extern int log(char *fmt, ...);
  146. extern int logerr(char *fmt, ...);
  147. extern void fatal(char *msg);
  148. extern void usage(void);
  149. extern int trig(int tmout);
  150. extern int istimeout(void);
  151.  
  152. /* db routines */
  153. extern int db_find(char *file, char **ptrs, int n_ptrs,int key, char *key_val);
  154.  
  155. /* mod routines */
  156. extern mod_put(char *msg);
  157. extern mod_exp(int cmd, int tmout);
  158. extern mod_dial(char *prefix, char *phone);
  159. extern int mod_setup(void);
  160.  
  161. /* slot routines */
  162. extern int slot_alloc(slot_t *sp);
  163. extern int slot_free(slot_t *sp);
  164. extern int slot_open(void);
  165. extern int slot_close(void);
  166. extern int slot_traverse(slot_t *sp);
  167. extern int slot_read(slot_t *sp);
  168. extern int slot_write(slot_t *sp);
  169. extern int slot_lock(void);
  170. extern int slot_unlock(void);
  171.  
  172. /* tty routines */
  173. extern int tty_open(char *filename, int baud, int flags);
  174. extern int tty_close(void);
  175. extern int tty_read(char *buf, int len);
  176. extern int tty_write(char *buf, int len);
  177. extern int tty_ndelay(int on);
  178. extern int tty_hangup(void);
  179. extern int tty_raw(void);
  180. extern int tty_sane(void);
  181. extern int tty_baud(int baud);
  182. extern int tty_setup(void);
  183. extern int tty_clocal(void);
  184. extern int tty_echo(void);
  185. extern int tty_noecho(void);
  186. extern int tty_drain(void);
  187. extern int tty_flush(void);
  188.  
  189. /* lock routines */
  190. extern int lock_line(char *line, int pid);
  191. extern int unlock_line(char *line);
  192. extern int relock_line(char *line);
  193. extern int lock_wait(char *line);
  194.  
  195. /* getargs */
  196. extern int getargs(int *argc, char ***argv);
  197.  
  198. /* dialup and login routines */
  199. extern int do_login(slot_t *sp);
  200. extern int callback(slot_t *sp);
  201.  
  202. #endif /* _MODEMPOOL_H */
  203.