1 /*
2 **  gestruct.h
3 **
4 **  System data file definitions for GEcho 1.20.b9+
5 **
6 **  Copyright (C) 1991-1995 Gerard J. van der Land. All rights reserved.
7 **
8 **  All information in this document is subject to change at any time
9 **  without prior notice.
10 **
11 **  Last revision: 09-Aug-95
12 **
13 **  Strings are NUL padded and NUL terminated arrays of char type.
14 **  Path names are back slash ('\') terminated.
15 */
16 
17 /*
18 **  Modified 26-Sep-98 by J. S�rensen
19 */
20 
21 #define GE_THISREV 0x0002  /* System file revision level */
22 #define GE_MAJOR   1       /* GEcho major revision version */
23 #define GE_MINOR   20      /* GEcho minor revision version */
24 
25 #define AKAS               32  /* Main + AKAs */
26 #define OLDAKAS            11  /* Not used */
27 #define OLDUPLINKS         10  /* Not used */
28 #define OLDGROUPS          26  /* Not used */
29 #define USERS              10  /* User names */
30 #define MAXAREAS        10000  /* Area records */
31 #define MAXCONNECTIONS    500  /* Connections per area */
32 #define MAXGROUPS         256  /* Group records */
33 #define MAXNODES         5000  /* Node records */
34 #define MAXVIAS            60  /* Pack "Via" records */
35 #define MAXROUTES         640  /* Pack "Routed node" records */
36 
37 #define GROUPBYTES  ((MAXGROUPS + 7) / 8)
38 
39 /* --- Data types */
40 
41 #ifndef MSGAPI_VERSION
42 typedef unsigned char   byte;   /* ( 8-bit) */
43 typedef unsigned short  word;   /* (16-bit) */
44 typedef unsigned long   dword;  /* (32-bit) */
45 #endif
46 
47 typedef struct
48    {
49    word zone;
50    word net;
51    word node;
52    word point;
53    }
54    GE_ADDRESS;
55 #define GE_ADDRESS_SIZE 8
56 
57 typedef byte GROUPS[GROUPBYTES];
58 
59 /* --- Log levels */
60 
61 #define LOG_INBOUND     0x0001  /* Inbound activities */
62 #define LOG_OUTBOUND    0x0002  /* Outbound activities */
63 #define LOG_PACKETS     0x0004  /* Inbound packet info */
64 #define LOG_UNEXPECT    0x0008  /* Extended packet info */
65 #define LOG_AREAMGR     0x0010  /* Unexpected passwords */
66 #define LOG_EXTPKTINFO  0x0040  /* AreaMgr messages */
67 #define LOG_NETEXPORT   0x0100  /* Exporting of netmail */
68 #define LOG_NETIMPORT   0x0200  /* Importing of netmail */
69 #define LOG_NETPACK     0x0400  /* Packing of netmail */
70 #define LOG_NETMOVED    0x0800  /* Moving Sent/Rcvd mail */
71 #define LOG_STATISTICS  0x2000  /* GEcho's statistics */
72 #define LOG_MBUTIL      0x4000  /* MBUTIL's activities */
73 #define LOG_DEBUG       0x8000  /* DEBUG: All of the above */
74 
75 
76 /* --- Log styles */
77 
78 #define LOG_FD       0  /* FrontDoor */
79 #define LOG_BINK     1  /* BinkleyTerm */
80 #define LOG_QUICK    2  /* QuickBBS */
81 #define LOG_DBRIDGE  3  /* D'Bridge */
82 
83 
84 /* --- Setup option bits */
85 
86 #define NOKILLNULL 0x0001  /* Don't kill null netmail messages while tossing */
87 #define RESCANOK   0x0002  /* Allow %RESCAN */
88 #define KEEPREQS   0x0004  /* Keep AreaMgr requests */
89 #define NONODEADD  0x0008  /* Don't automatically add NodeMgr records */
90 #define USEHMBBUF  0x0020  /* Use Hudson buffers */
91 #define KEEPNET    0x0040  /* Don't use Kill/Sent on exported netmail */
92 #define KEEPMGR    0x0080  /* Don't use Kill/Sent on MGR receipts */
93 #define NORRQS     0x0100  /* Ignore Return receipt Requests */
94 #define GE_KILLDUPES  0x0200  /* Kill duplicate messages */
95 #define DOS32BIT   0x0400  /* Run 32-bit DOS version on 386+ machines */
96 #define NOCRSTRIP  0x0800  /* Don't strip Soft-CRs */
97 #define REMOVEJUNK 0x1000  /* Remove "Re:" junk from JAM subjects */
98 #define NOAUTODISC 0x2000  /* Don't automatically disconnect empty PT areas */
99 #define NOCHECKEND 0x4000  /* Don't check for valid end of archives */
100 #define SETPVT     0x8000  /* Set Pvt on imported netmail messages */
101 
102 
103 /* --- Extra option bits */
104 
105 #define NOCHKDEST  0x0001  /* Don't check packet destination */
106 #define AUTOCREAT  0x0002  /* Automatically create message bases */
107 #define PAUSEOK    0x0004  /* Allow %PAUSE */
108 #define NOTIFYOK   0x0008  /* Allow %NOTIFY OFF */
109 #define ADDALLOK   0x0010  /* Allow +* */
110 #define PWDOK      0x0020  /* Allow %PWD */
111 #define PKTPWDOK   0x0040  /* Allow %PKTPWD */
112 #define NOBADPKTS  0x0080  /* Don't notify sysop about BAD/DST/LOC packets */
113 #define PKTPRGONCE 0x0100  /* Run PKT program only before the first PKT */
114 #define CREATEBUSY 0x0200  /* Create busy flags */
115 #define COMPRESSOK 0x0400  /* Allow %COMPRESS */
116 #define FROMOK     0x0800  /* Allow %FROM */
117 #define REDIR2NUL  0x1000  /* Redirect output of external utilities to NUL */
118 #define NOEXPAND   0x2000  /* Don't expand filenames of file attaches */
119 #define LOCALEXPT  0x4000  /* Export netmail to our own AKA */
120 #define OPUSDATES  0x8000  /* Use Opus style binary date/time stamps */
121 
122 
123 /* --- Compression types */
124 
125 #define PR_ARC  0  /* Compressed mail files created by ARC or PKPAK */
126 #define PR_ARJ  1  /* Compressed mail files created by ARJ */
127 #define PR_LZH  2  /* Compressed mail files created by LHA */
128 #define PR_PAK  3  /* Compressed mail files created by PAK */
129 #define PR_ZIP  4  /* Compressed mail files created by PKZIP */
130 #define PR_ZOO  5  /* Compressed mail files created by ZOO */
131 #define PR_SQZ  6  /* Compressed mail files created by SQZ */
132 #define PR_UC2  7  /* Compressed mail files created by UC II */
133 #define PR_RAR  8  /* For compressed mail files created by RAR */
134 #define PR_PKT 10  /* Uncompressed PKT files */
135 
136 
137 /* --- Locking method */
138 
139 #define LOCK_OFF    0  /* Deny Write (Exclusive) */
140 #define LOCK_RA101  1  /* RemoteAccess 1.01 (SHARE) */
141 #define LOCK_RA111  2  /* RemoteAccess 1.11 (SHARE) */
142 
143 
144 /* --- Semaphore mode */
145 
146 #define SEMAPHORE_OFF  0  /* Don't use semaphores */
147 #define SEMAPHORE_FD   1  /* FrontDoor 2.1x */
148 #define SEMAPHORE_IM   2  /* InterMail 2.2x */
149 #define SEMAPHORE_DB   3  /* D'Bridge 1.5x */
150 #define SEMAPHORE_BT   4  /* BinkleyTerm 2.5x */
151 #define SEMAPHORE_MD   5  /* MainDoor */
152 
153 
154 /* --- Check user name */
155 
156 #define CHECK_NOT        0  /* Don't check if user name exists */
157 #define CHECK_USERFILE   1  /* User file (USERS.BBS) */
158 #define CHECK_USERINDEX  2  /* User index (USERSIDX.BBS / NAMEIDX.BBS) */
159 
160 
161 /* --- Mailer type */
162 
163 #define MAILER_FD  0  /* FrontDoor */
164 #define MAILER_DB  1  /* D'Bridge */
165 #define MAILER_BT  2  /* BinkleyTerm */
166 
167 
168 /* --- BBS type */
169 
170 #define BBS_RA111     0  /* RemoteAccess 1.1x */
171 #define BBS_RA200     1  /* RemoteAccess 2.xx */
172 #define BBS_QUICK275  2  /* QuickBBS 2.7x */
173 #define BBS_SBBS116   3  /* SuperBBS 1.16 */
174 #define BBS_WC400     4  /* Wildcat! 4.x */
175 
176 
177 /* --- Change tear line */
178 
179 #define TEAR_NO       0  /* No */
180 #define TEAR_DEFAULT  1  /* Replace default */
181 #define TEAR_CUSTOM   2  /* Replace custom */
182 #define TEAR_EMPTY    3  /* Replace empty */
183 #define TEAR_REMOVE   4  /* Remove */
184 
185 typedef struct
186    {
187    GE_ADDRESS address;       /* Uplink address */
188    char    areafix[9];    /* AreaFix program */
189    char    password[17];  /* AreaFix password */
190    char    filename[13];  /* "Forward List" filename */
191    byte    unused[6];
192    byte    options;       /* See --- Uplink options bits */
193    byte    filetype;      /* 0 = Random, 1 = "<areaname> <description>" */
194    dword   groups;        /* Nodes must have one of these groups */
195    byte    origin;        /* Origin AKA */
196    }
197    OLDUPLINK;
198 
199 typedef struct
200    {
201    word zone;
202    word net;
203    byte aka;
204    }
205    AKAMATCH;
206 
207 typedef struct
208    {
209    byte bg_char;
210    byte headerframe;
211    byte headertext;
212    byte background;
213    byte bottomline;
214    byte bottomtext;
215    byte bottomkey;
216    byte errorframe;
217    byte errortext;
218    byte helpframe;
219    byte helptitle;
220    byte helptext;
221    byte helpfound;
222    byte winframe;
223    byte wintitle;
224    byte winline;
225    byte wintext;
226    byte winkey;
227    byte windata;
228    byte winselect;
229    byte inputdata;
230    byte exportonly;
231    byte importonly;
232    byte lockedout;
233    }
234    COLORSET;
235 
236 
237 /* --- SETUP.GE structure */
238 
239 typedef struct
240    {
241    word sysrev;              /* Must contain GE_THISREV */
242    word options;             /* Options bits, see --- Setup option bits */
243    word autorenum;           /* Auto renumber value */
244    word maxpktsize;          /* Maximum packet size, 0 = unlimited */
245    byte logstyle;            /* See --- Log styles */
246    byte oldnetmailboard;     /* Netmail board, must be zero now */
247    byte oldbadboard;         /* Where bad echomail is stored (0 = path) */
248    byte olddupboard;         /* Where duplicates are stored (0 = path) */
249    byte recoveryboard;       /* Recovery board (1-200, 0 = delete) */
250    byte filebuffer;          /* Size (in KB) of MBU file I/O buffer */
251    byte days;                /* Days to keep old mail around */
252    byte swapping;            /* Swapping method */
253    byte compr_default;       /* Default compresion type */
254    byte pmcolor[15];         /* Not used */
255    GE_ADDRESS oldaka[OLDAKAS];  /* Main address and AKAs */
256    word oldpointnet[OLDAKAS];  /* Pointnets for all addresses */
257    dword gekey;              /* GEcho registration key */
258    dword mbukey;             /* MBUTIL registration key */
259    char geregto[51];         /* Text used to generate the GEcho key */
260    char mburegto[51];        /* Text used to generate the MBUTIL key */
261    char username[USERS][36]; /* User names */
262    char hmbpath[53];         /* Hudson message base path */
263    char mailpath[53];        /* Netmail path */
264    char inbound_path[53];    /* Where incoming compressed mail is stored */
265    char outbound_path[53];   /* Where outgoing compressed mail is stored */
266    char echotoss_file[65];   /* The ECHOTOSS.LOG used for Squish areas */
267    char nodepath[53];        /* Not used */
268    char areasfile[65];       /* AREAS.BBS style file */
269    char logfile[65];         /* GEcho/MBUTIL log file */
270    char mgrlogfile[65];      /* AreaMgr log file */
271    char swap_path[53];       /* Swap path */
272    char tear_line[31];       /* Tearline to be placed by MBUTIL Export */
273    char originline[20][61];  /* Origin lines */
274    char compr_prog[10][13];       /* Compression program filenames */
275    char compr_switches[10][20];   /* Compression program switches */
276    char decompr_prog[10][13];     /* Decompression program filenames */
277    char decompr_switches[10][20]; /* Decompression program switches */
278    char oldgroups[26][21];   /* Descriptions of area groups */
279    byte lockmode;            /* See --- Locking method */
280    char secure_path[53];     /* From which secure PKTs are tossed */
281    char rcvdmailpath[53];    /* Not used */
282    char sentmailpath[53];    /* Not used */
283    char semaphorepath[53];   /* Where FD rescan files are stored */
284    byte version_major;       /* Major GEcho version */
285    byte version_minor;       /* Minor GEcho version */
286    byte semaphore_mode;      /* See --- Semaphore modes */
287    char badecho_path[53];    /* Where sec. violating and unknown mail is stored */
288    byte mailer_type;         /* See --- Mailer type */
289    word loglevel;            /* See --- Log level */
290    AKAMATCH akamatch[20];    /* AKA matching table */
291    char mbulogfile[65];      /* MBUTIL log file */
292    word maxqqqs;             /* Max. number of QQQ info stored in memory */
293    byte maxqqqopen;          /* Not used */
294    byte maxhandles;          /* Max. number of files used by GEcho */
295    word maxarcsize;          /* Max. archive size, 0 = unlimited */
296    word delfuture;           /* Days to delete messages in the future, 0 = disable */
297    word extraoptions;        /* See --- Extra option bits */
298    byte firstboard;          /* Not used */
299    word reserved1;           /* Reserved */
300    word copy_persmail;       /* Not used */
301    byte oldpersmailboard[USERS];  /* Personal mail board (0 = path) */
302    dword old_public_groups;  /* Public groups (bits 0-25) */
303    word dupentries;          /* Number of duplicate entries in ECHODUPE.GE */
304    byte oldrcvdboard;        /* Where Rcvd netmail is moved to (0 = path) */
305    byte oldsentboard;        /* Where Sent netmail is moved to (0 = path) */
306    byte oldakaboard[OLDAKAS];  /* Netmail boards for AKAs */
307    byte olduserboard[USERS];  /* Netmail boards for system users, 255 = use AKA board */
308    byte reserved2;           /* Reserved */
309    OLDUPLINK uplink[OLDUPLINKS];  /* Not used */
310    char persmail_path[53];   /* Not used */
311    char outpkts_path[53];    /* Where outbound packets are temp. stored */
312    word compr_mem[10];       /* Memory needed for compression programs */
313    word decompr_mem[10];     /* Memory needed for decompression programs */
314    dword pwdcrc;             /* CRC-32 of access password, -1L = no password */
315    word default_maxmsgs;     /* Maximum number of messages       (Purge) */
316    word default_maxdays;     /* Maximum age of non-Rcvd messages (Purge) */
317    char gus_prog[13];        /* General Unpack Shell program filename */
318    char gus_switches[20];    /* GUS switches */
319    word gus_mem;             /* Memory needed for GUS */
320    word default_maxrcvddays; /* Maximum age of Rcvd messages     (Purge) */
321    byte checkname;           /* See --- Check user name */
322    byte maxareacachesize;    /* Area cache size, 0 .. 64 KB */
323    char inpkts_path[53];     /* Where inbound mail packets should be stored */
324    char pkt_prog[13];        /* Called before each tossed mail packet */
325    char pkt_switches[20];    /* Command line switches */
326    word pkt_mem;             /* Memory needed */
327    word maxareas;            /* Maximum number of areas */
328    word maxconnections;      /* Maximum number of connections per area */
329    word maxnodes;            /* Maximum number of nodes */
330    word default_minmsgs;     /* Minimum number of messages       (Purge) */
331    byte bbs_type;            /* See --- BBS type */
332    byte decompress_ext;      /* 0 = 0-9, 1 = 0-F, 2 = 0-Z */
333    byte reserved3;           /* Reserved */
334    byte change_tearline;     /* See --- Change tear line */
335    word prog_notavail;       /* Bit 0-9, 1 = program not available */
336    COLORSET gscolor;         /* GSETUP color set, See COLORSET structure */
337    byte reserved4[9];        /* Reserved */
338 
339    GE_ADDRESS aka[AKAS];         /* Main address and AKAs */
340    word pointnet[AKAS];       /* Pointnets for all addresses */
341    word akaarea[AKAS];        /* AKA netmail areas */
342    word userarea[USERS];      /* Netmail areas for system users, 0 = don't import, 65535 = use AKA area */
343    word persmailarea[USERS];  /* Personal mail area (0 = don't copy) */
344    word rcvdarea;             /* Rcvd netmail area (0 = don't move) */
345    word sentarea;             /* Sent netmail area (0 = don't move) */
346    word badarea;              /* Where bad echomail is stored (0 = path) */
347    word reserved5;            /* Not used */
348    char jampath[53];          /* JAM message base path */
349    char userbase[53];         /* User base path */
350    char dos4gw_exe[65];       /* DOS4GW.EXE protected mode run time file */
351    GROUPS public_groups;      /* Public groups (bits 0-255) */
352    word maxgroupconnections;  /* Maximum number of connections per group */
353    word maxmsgsize;           /* Maximum message size (64-1024 kB) */
354    word diskspace_threshold;  /* Amount of free disk space that causes packing */
355    byte pktsort;              /* 0 = No, 1 = Area, 2 = Area + Date/Time */
356    char wildcatpath[53];      /* Wildcat! home path */
357    }
358    SETUP_GE;
359 #define SETUP_GE_SIZE 5762
360 
361 /***************************************************************************/
362 
363 /* --- Area option bits */
364 
365 #define IMPORTSB  0x0001  /* Import SEEN-BY lines to message base */
366 #define SECURITY  0x0002  /* Only accept mail from nodes in connections list */
367 #define PASSTHRU  0x0004  /* Mail is not imported, only forwarded */
368 #define VISIBLE   0x0008  /* Area is visible for anyone in AreaMgr's %LIST */
369 #define REMOVED   0x0010  /* Area should be removed by GSETUP Pack */
370 #define NOUNLINK  0x0020  /* Do not allow users to unlink this area */
371 #define TINYSB    0x0040  /* Tiny SEEN-BYs with only nodes in connections list */
372 #define PVT       0x0080  /* Private bits are preserved and are not stripped */
373 #define CHECKSB   0x0100  /* Use SEEN-BYs for duplicate prevention */
374 #define NOPAUSE   0x0200  /* Do not allow users to pause this area */
375 #define SDM       0x0400  /* Area is stored in *.MSG format */
376 #define HIDESB    0x0800  /* Hide imported SEEN-BY lines */
377 #define NOIMPORT  0x1000  /* AreaMgr will set new nodes to Export-Only */
378 #define DELFUTURE 0x2000  /* Del messages dated in the future */
379 #define NOTIFIED  0x4000  /* Sysop notified that area was disconnected */
380 #define UPLDISC   0x8000  /* Disconnected from uplink (only for PT areas) */
381 
382 
383 /* --- Extra area option bits */
384 
385 #define NODUPECHK 0x01  /* Don't do duplicate checking for this area */
386 #define NOLINKING 0x02  /* Don't do reply chain linking for this area */
387 #define HIDDEN    0x04  /* Area is hidden for everyone */
388 
389 
390 /* --- Area type */
391 
392 #define ECHOMAIL   0
393 #define NETMAIL    1
394 #define LOCAL      2
395 #define BADECHO    3
396 #define PERSONAL   4
397 #define NUM_TYPES  5
398 
399 
400 /* --- Area format */
401 
402 #define FORMAT_PT      0  /* Passthru */
403 #define FORMAT_HMB     1  /* Hudson Message Base */
404 #define FORMAT_SDM     2  /* *.MSG base */
405 #define FORMAT_JAM     3  /* Joaquim-Andrew-Mats message base proposal */
406 #define FORMAT_PCB     4  /* PCBoard 15.0 */
407 #define FORMAT_SQUISH  5  /* Squish 2.0 */
408 #define FORMAT_WC      6  /* Wildcat! 4.0 */
409 #define NUM_FORMATS    7
410 
411 
412 /* --- AREAFILE.GE header */
413 
414 typedef struct
415    {
416    word hdrsize;         /* sizeof(AREAFILE_HDR) */
417    word recsize;         /* sizeof(AREAFILE_GE) */
418    word maxconnections;  /* Maximum number of entries in connections list */
419    }
420    AREAFILE_HDR;
421 #define AREAFILE_HDR_SIZE 6
422 
423 
424 /* --- AREAFILE.GE record */
425 
426 typedef struct
427    {
428    char name[51];       /* Area name must be uppercase, no spaces */
429    char comment[61];    /* Description of the topics discussed in area */
430    char path[51];       /* Path where the *.MSG files are stored */
431    char originline[61]; /* Custom origin line, used if origlinenr = 0 */
432    word areanumber;     /* Area number (1-200 = Hudson) */
433    byte group;          /* Group (0-255) */
434    word options;        /* See --- Area option bits */
435    byte originlinenr;   /* Origin line (1-20, 0 = custom) */
436    byte pkt_origin;     /* Address for the packet/Origin line (0-31) */
437    dword seenbys;       /* Addresses (bits 0-31) to add to the SEEN-BY */
438    word maxmsgs;        /* Maximum number of messages       (MBUTIL Purge) */
439    word maxdays;        /* Maximum age of non-Rcvd messages (MBUTIL Purge) */
440    word maxrcvddays;    /* Maximum age of Rcvd messages     (MBUTIL Purge) */
441    byte areatype;       /* See --- Area type */
442    byte areaformat;     /* See --- Area format */
443    byte extraoptions;   /* See --- Extra area option bits */
444    }
445    AREAFILE_GE;
446 #define AREAFILE_GE_SIZE 244
447 
448 /* --- Connection entry status bits */
449 
450 #define CONN_NOIMPORT  0x01  /* Don't accept mail from this node */
451 #define CONN_NOEXPORT  0x02  /* Don't forward mail to this node */
452 #define CONN_PAUSE     0x04  /* Temporary don't send this area to this node */
453 #define CONN_NOUNLINK  0x08  /* Don't allow this node to disconnect */
454 #define CONN_ISUPLINK  0x10  /* Node is uplink for this area */
455 
456 
457 /* --- Connections list entry */
458 
459 typedef struct
460    {
461    GE_ADDRESS address;
462    byte    status;
463    }
464    CONNECTION;
465 #define CONNECTION_SIZE (GE_ADDRESS_SIZE + 1)
466 
467 
468 /* --- AREAFILE.GEX record */
469 
470 typedef struct
471    {
472    long crc32;       /* CRC-32 on areaname */
473    word areanumber;  /* Area number (1-200 = Hudson) */
474    long offset;      /* File offset of record in AREAFILE.GE */
475    }
476    AREAFILE_GEX;
477 
478 /***************************************************************************/
479 
480 /* --- Group option bits */
481 
482 #define GROUP_REMOVED  0x01  /* Group record has been deleted */
483 #define GROUP_ALWAYS   0x02  /* Unconditionally forward requests */
484 
485 
486 /* --- GRPFILE.GE header */
487 
488 typedef struct
489    {
490    word hdrsize;         /* sizeof(GRPFILE_HDR) */
491    word recsize;         /* sizeof(GRPFILE_GE) */
492    word arearecsize;     /* sizeof(AREAFILE_GE) */
493    word maxconnections;  /* Maximum number of entries in connections list */
494    }
495    GRPFILE_HDR;
496 
497 
498 /* --- GRPFILE.GE record */
499 
500 typedef struct
501    {
502    byte options;        /* See --- Group option bits */
503    char filename[65];   /* "Forward List" filename */
504    byte filetype;       /* 0 = Random, 1 = "<areaname> <description>" */
505    }
506    GRPFILE_GE;
507 
508 
509 /* --- GRPFILE.GEX record */
510 
511 typedef struct
512    {
513    GE_ADDRESS address;  /* Address of the uplink */
514    long    offset;   /* File offset of record in GRPFILE.GE */
515    byte    group;    /* Group (0-255) */
516    }
517    GRPFILE_GEX;
518 
519 /***************************************************************************/
520 
521 /* --- Status:
522    0x0000 = None
523    0x0002 = Crash
524    0x0200 = Hold
525    0xFFFF = Removed entry
526 */
527 
528 
529 /* --- Node option bits */
530 
531 #define REMOTEMAINT  0x0001  /* Allow node to use %FROM */
532 #define GE_ALLOWRESCAN  0x0002  /* Allow node to use %RESCAN */
533 #define FORWARDREQ   0x0004  /* Allow node to forward AreaMgr requests */
534 #define MAIL_DIRECT  0x0008  /* Use Direct status for mail archives */
535 #define NONOTIFY     0x0010  /* Don't send Notify list */
536 #define PACKNETMAIL  0x0020  /* Pack netmail for this node */
537 #define CHKPKTPWD    0x0040  /* Check packet password (auto-enabled) */
538 #define MGR_DIRECT   0x0080  /* Use Direct status for AreaMgr messages */
539 #define ARCMAIL      0x0100  /* Use ARCmail 0.60 naming for out-of-zone mail */
540 #define FORWARDPKTS  0x0200  /* Forward packets to this node */
541 #define DAILY_MAIL   0x0400  /* Create a new mail archive every day */
542 #define NOPKTPWDCHK  0x0800  /* Disable check packet password */
543 
544 
545 /* --- Uplink option bits */
546 
547 #define UPLINK_ADDPLUS  0x04  /* Add '+' prefix */
548 
549 
550 /* --- Unknown areas */
551 
552 #define UNKNOWN_BADECHO     0
553 #define UNKNONW_ADDAREA     1
554 #define UNKNOWN_DISCONNECT  2
555 #define UNKNOWN_KILLMSGS    3
556 
557 
558 /* --- NODEFILE.GE header */
559 
560 typedef struct
561    {
562    word hdrsize;  /* sizeof(NODEFILE_HDR) */
563    word recsize;  /* sizeof(NODEFILE_GE) */
564    }
565    NODEFILE_HDR;
566 
567 
568 /* --- NODEFILE.GE record */
569 
570 typedef struct
571    {
572    GE_ADDRESS address;        /* Address of the node */
573    char    sysop[36];      /* Name of the sysop or point */
574    char    pktpwd[9];      /* Packet (session) password */
575    char    mgrpwd[17];     /* AreaMgr password (inbound) */
576    dword   oldgroups;      /* Read/write groups (bits 0-25) */
577    word    options;        /* See --- Node option bits */
578    byte    comprtype;      /* Compression type (0-9, 10 = PKT) */
579    word    mailstatus;     /* Mail archive status. See above */
580    GE_ADDRESS route_to;       /* Address to route mail files to */
581    dword   oldreadgroups;  /* Read groups (bits 0-25) */
582    word    mgrstatus;      /* AreaMgr message status */
583    byte    compress_ext;   /* 0 = 0-9, 1 = 0-F, 2 = 0-Z */
584    word    maxdays;        /* Maximum age of mail archive, 0 = Unlimited */
585    GROUPS  groups;         /* Read/write groups (bits 0-255) */
586    GROUPS  readgroups;     /* Read groups (bits 0-255) */
587    char    areafix[9];     /* AreaFix program */
588    char    outmgrpwd[17];  /* AreaFix password (outbound) */
589    byte    uplinkoptions;  /* See --- Uplink option bits */
590    byte    unknownareas;   /* See --- Unknown areas */
591    byte    default_group;  /* Default group for added areas */
592    }
593    NODEFILE_GE;
594 
595 
596 /* --- NODEFILE.GEX index entry */
597 
598 typedef struct
599    {
600    GE_ADDRESS address;  /* Address of the node */
601    long    offset;   /* File offset of record in NODEFILE.GE */
602    }
603    NODEFILE_GEX;
604 
605 /***************************************************************************/
606 
607 /* --- Routed node status */
608 
609 #define GED_ZONE_ALL  0x01
610 #define GED_NET_ALL   0x02
611 #define GED_NODE_ALL  0x04
612 
613 
614 /* --- Routed node entry */
615 
616 typedef struct
617    {
618    GE_ADDRESS node;
619    byte    status;  /* See --- Routed node status */
620    byte    via;     /* Via entry for this routed node (0-59) */
621    }
622    ROUTE;
623 
624 
625 /* --- PACKFILE.GE structure */
626 
627 typedef struct
628    {
629    GE_ADDRESS via[MAXVIAS];      /* Via nodes */
630    ROUTE   route[MAXROUTES];  /* Routed nodes */
631    }
632    PACKFILE_GE;
633 
634 /***************************************************************************/
635 
636 /* --- ECHODUPE.GE structure */
637 
638 typedef struct
639    {
640    word pointer;  /* Next offset */
641    word entries;  /* Number of entries in the database */
642 /*
643    word crc32_high[entries];     32 bit CRCs on msg headers, high portions
644    word crc32_low[entries];      32 bit CRCs on msg headers, low portions
645 */
646    }
647    ECHODUPE_GE;
648 
649 /***************************************************************************/
650 
651 /* --- FTSCPROD.GE record */
652 
653 typedef struct
654    {
655    byte cap;       /* Capability: 0 = Type 2.0, 1 = Type 2.1, 2 = Type 2+ */
656    char name[30];  /* Name of product */
657    }
658    FTSCPROD_GE;
659 
660 /***************************************************************************/
661 
662 /* --- JAM_CONV.GE record */
663 
664 typedef struct
665    {
666    word areanumber;
667    char name[51];
668    char jambase[51];
669    }
670    JAMCONV_GE;
671 
672 /***************************************************************************/
673 
674 /* --- MBUTIL.RNX record */
675 
676 typedef struct
677    {
678    word old_msgnum;
679    word new_msgnum;
680    }
681    MBUTIL_RNX;
682 
683 /***************************************************************************/
684 
685 /* Functions for reading some of these structs */
686 
687 int read_setup_ge    (SETUP_GE *Setup, FILE *fp);
688 int read_areafile_hdr(AREAFILE_HDR *Setup, FILE *fp);
689 int read_areafile_ge (AREAFILE_GE *Setup, FILE *fp);
690 
691 
692 /* end of file "gestruct.h" */
693