|
|
1.1 root 1: /* ftamsbr.h - include file for FTAM initiator/responder subroutines */
2:
3: /*
4: * $Header: /f/osi/ftam2/RCS/ftamsbr.h,v 7.1 90/07/01 21:03:34 mrose Exp $
5: *
6: *
7: * $Log: ftamsbr.h,v $
8: * Revision 7.1 90/07/01 21:03:34 mrose
9: * pepsy
10: *
11: * Revision 7.0 89/11/23 21:54:39 mrose
12: * Release 6.0
13: *
14: */
15:
16: /*
17: * NOTICE
18: *
19: * Acquisition, use, and distribution of this module and related
20: * materials are subject to the restrictions of a license agreement.
21: * Consult the Preface in the User's Manual for the full terms of
22: * this agreement.
23: *
24: */
25:
26:
27: #include "ftam.h" /* definitions for FS-USERs */
28: #include "DOCS-types.h"
29: #ifdef NULL
30: #undef NULL
31: #endif
32: #include <sys/param.h>
33: #ifndef NULL
34: #define NULL 0
35: #endif
36: #ifndef SYS5
37: #include <sys/file.h>
38: #else
39: #define L_SET 0 /* absolute offset */
40: #define L_INCR 1 /* relative to current offset */
41: #define L_XTND 2 /* relative to end of file */
42:
43: #define F_OK 0 /* file exists */
44: #define X_OK 1 /* executable by caller */
45: #define W_OK 2 /* writable by caller */
46: #define R_OK 4 /* readable by caller */
47:
48: #if !defined(AIX) && !defined(HPUX) && !defined(AUX)
49: #include <sys/fcntl.h>
50: #else
51: #include <fcntl.h>
52: #endif
53: #endif
54: #include <sys/stat.h>
55: #include "usr.dirent.h"
56:
57:
58: #ifndef MAXPATHLEN
59: #define MAXPATHLEN MAXNAMLEN
60: #endif
61:
62: #ifdef MAXBSIZE
63: #define BLKSIZE MAXBSIZE
64: #else
65: #define BLKSIZE BUFSIZ
66: #endif
67:
68: /*
69: Used to calculate the estimated integral FADU size:
70:
71:
72: FTAM-3 transfers -
73:
74: An FADU maps onto a single PSDU with the P-DATA service. Because the
75: DCS is non-empty and the FADU is not in the default context, the
76: Fully-encoded-data encoding is used. Further, since only one PSDU is
77: present, the single-ASN1-type option is used. Hence, the outer ASN.1
78: wrapper consists of
79:
80: [APPLICATION 1] IMPLICIT
81: SEQUENCE OF { -- 4 octets for the outer structure
82: SEQUENCE { -- 4 octets for the one and only PDV-list
83:
84: -- 3 octets for the PCI
85: presentation-context-identifier
86: INTEGER,
87:
88: presentation-data-values {
89: -- 4 octets for the single-ASN1-type wrapper
90: single-ASN1-type[0]
91: -- 4 octets for the id/length of the FADU
92: -- n octets for the data in the FADU
93: ANY
94: }
95: }
96: }
97:
98: 4 + 4 + 3 + 4 + 4 = 19
99:
100: For each structure, 4 octets is used for non-data encodings
101: 1 octet for the ID
102: 1 octet for an indefinite form
103: 2 octets for the EOC
104: If the data portion is smaller, then the definite form might be used which
105: requires 3 octets, not 4.
106:
107:
108: FTAM-1 transfers -
109:
110: FADUs are batched to the P-DATA service. This means that the
111: octet-aligned option is used. Hence, the outer ASN.1 wrapper
112: consists of
113:
114: [APPLICATION 1] IMPLICIT
115: SEQUENCE OF { -- 4 octets for the outer structure
116:
117: -- this sequence is repeated for each member of the batch
118:
119: SEQUENCE { -- 4 octets for the one and only PDV-list
120:
121: -- 3 octets for the PCI
122: presentation-context-identifier
123: INTEGER,
124:
125: presentation-data-values {
126: -- 4 octets for the octet-aligned wrapper
127: octet-aligned[1]
128: -- 4 octets for the id/length of the FADU
129: -- n octets for the data in the FADU
130: IMPLICIT OCTET STRING
131: }
132: }
133:
134:
135: }
136:
137: 4 + N*(4 + 3 + 4 + 4)
138: */
139: #define MAGIC_SINGLE 19
140: #define MAGIC_OCTET1 4
141: #define MAGIC_OCTET2 15
142:
143: /* */
144:
145: struct vfsmap {
146: char *vf_entry; /* document entry */
147: OID vf_oid; /* object identifier */
148: caddr_t vf_parameter; /* parameter, filled-in by vf_peek */
149:
150: int vf_flags; /* flags */
151: #define VF_NULL 0x00
152: #define VF_OK 0x01 /* negotiated */
153: #define VF_WARN 0x02 /* warn if loses */
154: #define VF_PARM 0x04 /* parameter dynamically allocated */
155:
156: int vf_id; /* presentation context */
157:
158: int vf_mode; /* st.st_mode & S_IFMT bits */
159: IFP vf_peek; /* sees if really this type of file */
160: char vf_stat; /* stat character for 'ls' */
161:
162: int vf_simplify; /* the next document type to try */
163: #define VFS_XXX (-1)
164:
165: int vf_context; /* access context */
166: /* really should have entire constraint set */
167:
168: int vf_mandatory; /* > 0 parameter required
169: < 0 parameter optional
170: == 0 parameter illegal */
171: IFP vf_check; /* .. check */
172: int vf_number; /* encode/decode index */
173:
174: char *vf_text; /* textual description */
175: };
176:
177: struct vfsmap *st2vfs ();
178:
179:
180: /* WATCHP is one pepsy people should use as the macro which is
181: * not expansion order dependant
182: */
183:
184: #ifndef DEBUG
185: #define WATCH(fnx, pe, rw)
186: #define WATCHP(args, pe, rw)
187: #else
188: #ifdef __STDC__
189: #define WATCHP(args, pe, rw) \
190: pvpdu (ftam_log, print_##args##_P, pe, \
191: rw ? "F-DATA.INDICATION" : "F-DATA.REQUEST", rw)
192: #define WATCH(fnx, pe, rw) \
193: pvpdu (ftam_log, fnx/**/_P, pe, \
194: rw ? "F-DATA.INDICATION" : "F-DATA.REQUEST", rw)
195: #else
196: #define WATCHP(args, pe, rw) \
197: pvpdu (ftam_log, print_/**/args/**/_P, pe, \
198: rw ? "F-DATA.INDICATION" : "F-DATA.REQUEST", rw)
199: #define WATCH(fnx, pe, rw) \
200: pvpdu (ftam_log, fnx/**/_P, pe, \
201: rw ? "F-DATA.INDICATION" : "F-DATA.REQUEST", rw)
202: #endif
203: #endif
204:
205:
206: int binarypeek (), textpeek (), fdfpeek ();
207:
208: int binarycheck (), textcheck ();
209:
210: /* */
211:
212: #define FA_RDATTR \
213: (FA_FILENAME | FA_ACTIONS | FA_CONTENTS | FA_ACCOUNT | FA_DATE_CREATE \
214: | FA_DATE_MODIFY | FA_DATE_READ | FA_DATE_ATTR | FA_ID_CREATE \
215: | FA_ID_MODIFY | FA_ID_READ | FA_ID_ATTR | FA_AVAILABILITY \
216: | FA_FILESIZE)
217:
218: /* */
219:
220: #ifdef BRIDGE
221: extern int ftp_default;
222: extern int ftp_directory;
223: #endif
224:
225: int de2fd ();
226:
227: int compath ();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.