1 /*
2   PKTAPI Source, Version 1.00
3 
4   (c) & (p) 1999-2000 by Oliver 'Attila' Grimm
5 
6   Alle Rechte vorbehalten.
7 */
8 
9 
10 #ifndef __PKTAPI_H
11 #define __PKTAPI_H
12 
13 #include <prog.h>
14 #include <msgapi.h>
15 
16 #define PKTAPI
17 #define PKTAPI_VERSION    0
18 #define PKTAPI_SUBVERSION 0
19 
20 #define PERR_BADH 0
21 #define PERR_BADM 1
22 #define PERR_BADSIGN 2
23 #define PERR_BADMSG 3
24 #define PERR_EOF 3
25 #define PERR_NOMEM 4
26 
27 struct _pktapi;
28 
29 typedef struct _pktapi OS2FAR *HPKT;
30 
31 
32 /* mode - PktOpenPkt() */
33 
34 #define PKTMODE_READ  1
35 #define PKTMODE_WRITE 2
36 
37 #define PKTTYPE_UNKNOWN 0
38 #define PKTTYPE_2       0x01
39 #define PKTTYPE_2_PLUS  0x03
40 #define PKTTYPE_2_2     0x05
41 #define PKTTYPE_3       0x08
42 
43 struct _pktapi
44 {
45   #define PKTAPI_ID 0x63630232
46 
47   dword   id;
48 
49   word    len;
50   word    type;
51   word    mode;
52 
53   NETADDR orig;
54   NETADDR dest;
55 
56   byte    password[8];
57 
58   struct _stamp date_written;
59 
60   word  prod_code;
61 
62   word  capability;
63 
64   struct _papifuncs
65   {
66     sword  (*MAPIENTRY ClosePkt)(HPKT ph);
67     sword  (*MAPIENTRY ReadMsg)(HPKT ph, XMSG *xmsg, dword len, char *textptr);
68     sword  (*MAPIENTRY WriteMsg)(HPKT ph, XMSG *xmsg, word fAppend, char *textptr);
69     sword  (*MAPIENTRY ReadMsgComplete)(HPKT ph, XMSG *xmsg, char **textptr);
70 
71   } OS2FAR *api;
72 
73   void *apidata;
74 
75   sword sem;
76 };
77 
78 typedef struct _ADDRBUF
79 {
80   dword    num_addr;
81   NETADDR *addr;
82 } ADDRBUF;
83 
84 typedef struct _PKTCTRLBUF
85 {
86   ADDRBUF seenby;
87   ADDRBUF path;
88 } PKTCTRLBUF;
89 
90 #ifdef OS_2 /* Imported .DLL variables are not in DGROUP */
91 extern word far _stdc pktapierr;
92 #else
93 extern word _stdc pktapierr;
94 #endif
95 
96 
97 #define PktClosePkt(ph)          (*(ph)->api->ClosePkt)(ph)
98 #define PktReadMsg(ph, x, l, t)  (*(ph)->api->ReadMsg)(ph, x, l, t)
99 #define PktWriteMsg(ph, x, f, t) (*(ph)->api->WriteMsg)(ph, x, f, t)
100 #define PktReadMsgComplete(ph, x, t) (*(ph)->api->ReadMsgComplete)(ph, x, t)
101 
102 #define PktFreeText(t) free(t)
103 
104 cpp_begin()
105 
106   sword MAPIENTRY PktOpenApi(struct _minf OS2FAR *minf);
107   sword MAPIENTRY PktCloseApi(void);
108 
109   HPKT MAPIENTRY PktOpenPkt(byte far *name, word mode, word type);
110   sword MAPIENTRY PktInvalidPh(HPKT hp);
111 
112   sword MAPIENTRY PktCopyPktHdr(HPKT dest, HPKT src);
113 
114   sword MAPIENTRY PktCreateCtrlBuf(char *sztext, PKTCTRLBUF *ctrlbuf);
115   sword MAPIENTRY PktFreeCtrlBuf(PKTCTRLBUF *ctrl);
116 
117   char * MAPIENTRY PktConvertCtrlToText(PKTCTRLBUF *ctrl);
118 
119   sword MAPIENTRY PktCtrlAddSeenby(PKTCTRLBUF *ctrl, NETADDR *addr);
120   sword MAPIENTRY PktCtrlAddPath(PKTCTRLBUF *ctrl, NETADDR *addr);
121   sword MAPIENTRY PktCtrlChkPath(PKTCTRLBUF *ctrl, NETADDR *addr);
122 
123 cpp_end()
124 
125 #endif
126