|
|
1.1 root 1: /* fidodefs.h */
2:
3: /* FidoNet constants, macros, and structure definitions */
4:
5: /* $Id: fidodefs.h,v 1.8 2005/11/17 01:53:04 rswindell Exp $ */
6:
7: /****************************************************************************
8: * @format.tab-size 4 (Plain Text/Source Code File Header) *
9: * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) *
10: * *
11: * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html *
12: * *
13: * This program is free software; you can redistribute it and/or *
14: * modify it under the terms of the GNU General Public License *
15: * as published by the Free Software Foundation; either version 2 *
16: * of the License, or (at your option) any later version. *
17: * See the GNU General Public License for more details: gpl.txt or *
18: * http://www.fsf.org/copyleft/gpl.html *
19: * *
20: * Anonymous FTP access to the most recent released source is available at *
21: * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net *
22: * *
23: * Anonymous CVS access to the development source and modification history *
24: * is available at cvs.synchro.net:/cvsroot/sbbs, example: *
25: * cvs -d :pserver:[email protected]:/cvsroot/sbbs login *
26: * (just hit return, no password is necessary) *
27: * cvs -d :pserver:[email protected]:/cvsroot/sbbs checkout src *
28: * *
29: * For Synchronet coding style and modification guidelines, see *
30: * http://www.synchro.net/source.html *
31: * *
32: * You are encouraged to submit any modifications (preferably in Unix diff *
33: * format) via e-mail to [email protected] *
34: * *
35: * Note: If this box doesn't appear square, then you need to fix your tabs. *
36: ****************************************************************************/
37:
38: #ifndef _FIDODEFS_H_
39: #define _FIDODEFS_H_
40:
41: #include "gen_defs.h" /* uchar */
42:
43: #define FIDO_NAME_LEN 36 /* Includes '\0' terminator */
44: #define FIDO_SUBJ_LEN 72 /* Includes '\0' terminator */
45: #define FIDO_TIME_LEN 20 /* Includes '\0' terminator */
46: #define FIDO_PASS_LEN 8 /* Does NOT include '\0' terminator */
47:
48: /* Attribute bits for fmsghdr_t.attr */
49: #define FIDO_PRIVATE (1<<0) /* Private message */
50: #define FIDO_CRASH (1<<1) /* Crash-mail (send immediately) */
51: #define FIDO_RECV (1<<2) /* Received successfully */
52: #define FIDO_SENT (1<<3) /* Sent successfully */
53: #define FIDO_FILE (1<<4) /* File attached */
54: #define FIDO_INTRANS (1<<5) /* In transit */
55: #define FIDO_ORPHAN (1<<6) /* Orphan */
56: #define FIDO_KILLSENT (1<<7) /* Kill it after sending it */
57: #define FIDO_LOCAL (1<<8) /* Created locally - on this system */
58: #define FIDO_HOLD (1<<9) /* Hold - don't send it yet */
59: #define FIDO_FREQ (1<<11) /* File request */
60: #define FIDO_RRREQ (1<<12) /* Return receipt request */
61: #define FIDO_RR (1<<13) /* This is a return receipt */
62: #define FIDO_AUDIT (1<<14) /* Audit request */
63: #define FIDO_FUPREQ (1<<15) /* File update request */
64:
65: #if defined(_WIN32) || defined(__BORLANDC__)
66: #define PRAGMA_PACK
67: #endif
68:
69: #if defined(PRAGMA_PACK) || defined(__WATCOMC__)
70: #define _PACK
71: #else
72: #define _PACK __attribute__ ((packed))
73: #endif
74:
75: #if defined(PRAGMA_PACK)
76: #pragma pack(push,1) /* Disk image structures must be packed */
77: #endif
78:
79: typedef struct _PACK { /* Fidonet Packet Header */
80: short orignode, /* Origination Node of Packet */
81: destnode, /* Destination Node of Packet */
82: year, /* Year of Packet Creation e.g. 1995 */
83: month, /* Month of Packet Creation 0-11 */
84: day, /* Day of Packet Creation 1-31 */
85: hour, /* Hour of Packet Creation 0-23 */
86: min, /* Minute of Packet Creation 0-59 */
87: sec, /* Second of Packet Creation 0-59 */
88: baud, /* Max Baud Rate of Orig & Dest */
89: pkttype, /* Packet Type (-1 is obsolete) */
90: #define PKT_TWO_PLUS 0 /* Type 2+ Packet Header */
91: #define PKT_TWO_TWO 1 /* Type 2.2 Packet Header */
92: #define PKT_TWO 2 /* Old Type Packet Header */
93: orignet, /* Origination Net of Packet */
94: destnet; /* Destination Net of Packet */
95: uchar prodcode, /* Product Code (00h is Fido) */
96: sernum, /* Binary Serial Number or NULL */
97: password[FIDO_PASS_LEN]; /* Session Password or NULL */
98: short origzone, /* Origination Zone of Packet or NULL */
99: destzone; /* Destination Zone of Packet or NULL */
100: union {
101: char padding[20]; /* Fill Characters (Type 2.0) */
102: struct { /* OR Type 2+ Packet Header Info */
103: short auxnet, /* Orig Net if Origin is a Point */
104: cwcopy; /* Must be Equal to cword */
105: uchar prodcode, /* Product Code */
106: revision; /* Revision */
107: short cword, /* Compatibility Word */
108: origzone, /* Zone of Packet Sender or NULL */
109: destzone, /* Zone of Packet Receiver or NULL */
110: origpoint, /* Origination Point of Packet */
111: destpoint; /* Destination Point of Packet */
112: char empty[4];
113: } two_plus;
114: struct { /* OR Type 2.2 Packet Header Info */
115: char origdomn[8]; /* Origination Domain */
116: char destdomn[8]; /* Destination Domain */
117: char empty[4]; /* Product Specific Data */
118: } two_two;
119: } fill;
120:
121: } fpkthdr_t;
122:
123: #define FIDO_PACKET_HDR_LEN 58
124: #define FIDO_PACKET_TERMINATOR 0x0000 /* 16-bits */
125:
126: typedef struct _PACK { /* FidoNet Packed Message Header */
127: short type; /* Message type: 2 */
128: short orignode;
129: short destnode;
130: short orignet;
131: short destnet;
132: short attr;
133: short cost;
134: char time[FIDO_TIME_LEN]; /* Time in goof-ball ASCII format */
135: } fpkdmsg_t;
136:
137: #define FIDO_PACKED_MSG_HDR_LEN 34 /* Fixed header fields only */
138: #define FIDO_PACKED_MSG_TERMINATOR '\0' /* 8-bits */
139:
140: typedef struct _PACK { /* FidoNet Stored Message Header *.msg */
141: char from[FIDO_NAME_LEN], /* From user */
142: to[FIDO_NAME_LEN], /* To user */
143: subj[FIDO_SUBJ_LEN], /* Message title */
144: time[FIDO_TIME_LEN]; /* Time in goof-ball ASCII format */
145: short read, /* Times read */
146: destnode, /* Destination node */
147: orignode, /* Origin node */
148: cost, /* Cost in pennies */
149: orignet, /* Origin net */
150: destnet, /* Destination net */
151: destzone, /* Destination zone */
152: origzone, /* Origin zone */
153: destpoint, /* Destination point */
154: origpoint, /* Origin point */
155: re, /* Message number regarding */
156: attr, /* Attributes - see FIDO_* */
157: next; /* Next message number in stream */
158: } fmsghdr_t;
159:
160: #define FIDO_STORED_MSG_HDR_LEN 190
161: #define FIDO_STORED_MSG_TERMINATOR '\0' /* 8-bits */
162:
163: #if defined(PRAGMA_PACK)
164: #pragma pack(pop) /* original packing */
165: #endif
166:
167: #endif /* Don't add anything after this line */
168:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.