home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / GE120DEV.ZIP / GESTRUCT.H next >
Encoding:
C/C++ Source or Header  |  1995-08-09  |  24.7 KB  |  676 lines

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