1 /**********************************************************
2  * protocol definitions
3  * $Id: mailer.h,v 1.12 2005/05/16 11:17:30 mitry Exp $
4  **********************************************************/
5 #ifndef __MAILER_H__
6 #define __MAILER_H__
7 #include "qcconst.h"
8 
9 #define P_NONE		0x0000	/* 0 0000 0000 */
10 #define P_NCP		0x0001	/* 0 0000 0001 */
11 #ifdef WITH_BINKP
12 #define P_BINKP		0x0001	/* 0 0000 0001 */
13 #endif
14 #define P_ZMODEM	0x0002	/* 0 0000 0010 */
15 #define P_ZEDZAP	0x0004	/* 0 0000 0100 */
16 #define P_DIRZAP	0x0008	/* 0 0000 1000 */
17 #define P_HYDRA		0x0010	/* 0 0001 0000 */
18 #define P_JANUS		0x0020	/* 0 0010 0000 */
19 #ifdef HYDRA8K16K
20 #define P_HYDRA4	0x0040	/* 0 0100 0000 */
21 #define P_HYDRA8	0x0080	/* 0 1000 0000 */
22 #define P_HYDRA16	0x0100	/* 1 0000 0000 */
23 #endif
24 #define P_MASK		0x01FF	/* 1 1111 1111 */
25 
26 
27 #define S_OK      0
28 #define S_NODIAL  1
29 #define S_REDIAL  2
30 #define S_BUSY    3
31 #define S_FAILURE 4
32 #define S_MASK    7
33 #define S_HOLDR   8
34 #define S_HOLDX   16
35 #define S_HOLDA   32
36 #define S_ADDTRY  64
37 #define S_ANYHOLD (S_HOLDR|S_HOLDX|S_HOLDA)
38 
39 #define FOP_OK      0
40 #define FOP_CONT    1
41 #define FOP_SKIP    2
42 #define FOP_ERROR   3
43 #define FOP_SUSPEND 4
44 
45 #define SESSION_AUTO    0
46 #define SESSION_EMSI    1
47 #define SESSION_BINKP   2
48 
49 /* session mode flags */
50 #define SM_INBOUND	0
51 #define SM_OUTBOUND	1
52 
53 /* force_call flags */
54 #define FC_NORMAL	0
55 #define FC_IMMED	1
56 #define FC_ANY		2
57 
58 /* FREQs flags */
59 #define FR_NOTHANDLED	(-1)
60 #define FR_NOTAVAILABLE	0
61 #define FR_AVAILABLE	1
62 
63 #define RX_SKIP		1
64 #define RX_SUSPEND	2
65 
66 #define HUP_NONE	0
67 #define HUP_LINE	1
68 #define HUP_OPERATOR	2
69 #define HUP_SESLIMIT	3
70 #define HUP_CPS		4
71 
72 #define M_STAT \
73     ( tty_gothup == HUP_NONE     ? "ok"              :                \
74     ( tty_gothup == HUP_LINE     ? "carrier lost"    :                \
75     ( tty_gothup == HUP_OPERATOR ? "hangup"          :                \
76     ( tty_gothup == HUP_SESLIMIT ? "session limit"   :                \
77     ( tty_gothup == HUP_CPS      ? "low cps"         : "unknown" )))))
78 
79 #define TIM_CHAT	90
80 
81 #define MSG_NEVER	"Never"
82 
83 
84 /* ls_z*.c */
85 int	zmodem_receive(char *, int);
86 int	zmodem_send(slist_t *, slist_t *);
87 int	zmodem_sendfile(char *, char *, unsigned long *, unsigned long *);
88 int	zmodem_sendinit(int);
89 int	zmodem_senddone(void);
90 
91 
92 /* emsi.c */
93 void	emsi_makedat(ftnaddr_t *, unsigned long, unsigned long,
94 		int, char *, falist_t *, int);
95 int	emsi_init(int);
96 int	emsi_send(void);
97 int	emsi_recv(int, ninfo_t *);
98 
99 
100 /* protfm.c */
101 int	rxopen(char *, time_t, off_t, FILE **);
102 int	rxclose(FILE **, int);
103 FILE	*txopen(char *, char *);
104 int	txclose(FILE **, int);
105 void	log_rinfo(ninfo_t *);
106 void	check_cps(void);
107 
108 extern	FILE *txfd;
109 extern	FILE *rxfd;
110 extern	volatile long txpos;
111 extern	volatile long rxpos;
112 extern	word txblklen;
113 extern	word rxblklen;
114 extern	byte *txbuf;
115 extern	byte *rxbuf;
116 extern	unsigned effbaud;
117 extern	byte *rxbufptr;
118 extern	int txstate;
119 extern	int rxstate;
120 extern	byte *rxbufmax;
121 extern	long txstart;
122 extern	word txmaxblklen;
123 extern	word timeout;
124 extern	byte txlastc;
125 /* for chat */
126 void	chatinit(int);
127 void	c_devrecv(unsigned char *, unsigned);
128 void	getevt(void);
129 
130 
131 /* session.c */
132 extern	int (*receive_callback)(char *);
133 int	receivecb(char *);
134 void	makeflist(flist_t **, ftnaddr_t *, int);
135 void	flkill(flist_t **, int);
136 void	flexecute(flist_t *);
137 void	addflist(flist_t **, char *, char *, char, off_t, FILE *, int);
138 void	simulate_send(ftnaddr_t *);
139 int	session(int, int, ftnaddr_t *, int);
140 
141 
142 /* freq.c */
143 int	freq_ifextrp(slist_t *);
144 int	freq_recv(char *);
145 int	is_freq_available(void);	/* Can we handle FREQs now/ever */
146 
147 
148 /* call.c */
149 int	do_call(ftnaddr_t *, char *, char *);
150 int	force_call(ftnaddr_t *, int, int);
151 
152 
153 /* perl.c */
154 #ifdef WITH_PERL
155 #define IFPerl(x) x
156 extern	unsigned short perl_flg;
157 int	perl_init(const char *, int);
158 void	perl_done(int);
159 void	perl_on_reload(int);
160 void	perl_on_std(int);
161 void	perl_on_log(char *);
162 int	perl_on_call(const ftnaddr_t *, const char *, const char *);
163 int	perl_on_session(char *);
164 void	perl_end_session(long, int);
165 int	perl_on_recv(void);
166 char	*perl_end_recv(int);
167 char	*perl_on_send(const char *);
168 void	perl_end_send(int);
169 #else
170 #define IFPerl(x)
171 #endif
172 
173 #endif
174