mailbox.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:4k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. #ifndef _MAILBOX_H
  2. #define _MAILBOX_H
  3. /* Defines for the ax.25 mailbox facility */
  4. #define NUMMBX 10 /* max number of mailbox sessions */
  5. #ifndef _TIMER_H
  6. #include "timer.h"
  7. #endif
  8. #ifndef _SOCKADDR_H
  9. #include "sockaddr.h"
  10. #endif
  11. /* a mailbox list entry */
  12. struct let {
  13. long start;
  14. long size;
  15. int status;
  16. };
  17. #define MBXLINE 128 /* max length of line */
  18. struct mbx {
  19. int state ; /* mailbox state */
  20. #define MBX_LOGIN 0 /* trying to log in */
  21. #define MBX_CMD 1 /* in command mode */
  22. #define MBX_SUBJ 2 /* waiting for a subject line */
  23. #define MBX_DATA 3 /* collecting the message */
  24. #define MBX_REVFWD 4 /* reverse forwarding in progress */
  25. #define MBX_TRYING 5 /* pending forwarding connection */
  26. #define MBX_FORWARD 6 /* established forwarding connection */
  27. char name[20] ; /* Name of remote station */
  28. char *to ; /* To-address in form user or user@host */
  29. char *origto ; /* Original To-address, if rewritten */
  30. char *tofrom ; /* Optional <from in to-address */
  31. char *tomsgid ; /* Optional $msgid in to-address */
  32. FILE *tfile ; /* Temporary file for message, or */
  33. /* forwarding file. */
  34. char line[MBXLINE+1] ; /* Room for null at end */
  35. int mbnum ; /* which mailbox session is this? */
  36. int sid ; /* Characteristics indicated by the SID */
  37. /* banner of the attaching station.  If */
  38. /* no SID was sent, this is zero.  If an */
  39. /* SID of any kind was received, it is */
  40. /* assumed that the station supports */
  41. /* abbreviated mail forwarding mode. */
  42. #define MBX_SID 0x01 /* Got any SID */
  43. #define MBX_RLI_SID 0x02 /* This is an RLI BBS, disconnect after F> */
  44. #define MBX_HIER_SID 0x04 /* The BBS supports "hierarchical routing */
  45. /* designators." */
  46. /* Space here for others, currently not of */
  47. /* interest to us. */
  48. char stype ; /* BBS send command type (B,P,T, etc.) */
  49. int type ; /* Type of session when invoking "chat" */
  50. FILE *user; /* User linkage area */
  51. char escape; /* Escape character */
  52. int privs; /* Privileges (taken from Ftpusers file) */
  53. #define AX25_CMD 8 /* AX.25 gateway operation allowed */
  54. #define TELNET_CMD 16 /* Telnet gateway operation allowed */
  55. #define NETROM_CMD 32 /* NET/ROM gateway operation allowed */
  56. #define SYSOP_CMD 64 /* Remote sysop access allowed */
  57. #define EXCLUDED_CMD 128 /* This user is banned from the BBS */
  58. char *path; /* Directory path */
  59. char *startmsg; /* Message to be sent at connect through any
  60. /* of the gateways */
  61. int current; /* the current message number */
  62. int nmsgs; /* number of messages in this mail box */
  63. int newmsgs; /* number of new messages in mail box */
  64. int change; /* mail file changed */
  65. int anyread; /* true if any message has been read */
  66. FILE *mfile; /* mail data file pointer */
  67. char area[64]; /* name of current mail area */
  68. long mboxsize; /* size of mailbox when opened */
  69. long mysize; /* size of my private mailbox */
  70. struct let *mbox;
  71. char *stdinbuf; /* the stdio buffer for the mail file */
  72. char *stdoutbuf; /* the stdio file io buffer for the temp file */
  73. } ;
  74. /* Structure used for automatic flushing of gateway sockets */
  75. struct gwalarm {
  76. FILE *s1;
  77. FILE *s2;
  78. struct timer t;
  79. };
  80. /* In mailbox.c: */
  81. extern struct mbx *Mbox[NUMMBX] ;
  82. extern char Noperm[];
  83. extern char Nosock[];
  84. extern void (*Listusers)(FILE *network);
  85. int dombescape(int argc,char *argv[],void *p);
  86. int mbxrecvline(FILE *network,char *buf,int len,int escape);
  87. int gw_connect(struct mbx *m,int s,struct sockaddr *fsocket,int len);
  88. void mbx_incom(int s,void *t,void *p);
  89. int domboxdisplay(int argc,char *argv[],void *p);
  90. struct mbx *newmbx(void);
  91. void exitbbs(struct mbx *m);
  92. int domboxbye(int argc,char *argv[],void *p);
  93. int mbx_parse(struct mbx *m);
  94. void changearea(struct mbx *m,char *area);
  95. char *rewrite_address(char *addr);
  96. void listusers(FILE *network);
  97. /* In forward.c: */
  98. int dorevfwd(int argc,char *argv[],void *p);
  99. int dombtimer(int argc,char *argv[],void *p);
  100. int dombkick(int argc,char *argv[],void *p);
  101. /* In tipmail.c */
  102. extern unsigned Tiptimeout;
  103. #endif /* _MAILBOX_H */