|
|
1.1 ! root 1: /* fpkt.h - include file for FTAM provider (FS-PROVIDER) */ ! 2: ! 3: /* ! 4: * $Header: /f/osi/h/RCS/fpkt.h,v 7.3 90/07/01 21:03:44 mrose Exp $ ! 5: * ! 6: * ! 7: * $Log: fpkt.h,v $ ! 8: * Revision 7.3 90/07/01 21:03:44 mrose ! 9: * pepsy ! 10: * ! 11: * Revision 7.2 90/03/23 10:52:53 mrose ! 12: * update ! 13: * ! 14: * Revision 7.1 89/12/14 10:03:41 mrose ! 15: * bdt ! 16: * ! 17: * Revision 7.0 89/11/23 21:55:40 mrose ! 18: * Release 6.0 ! 19: * ! 20: */ ! 21: ! 22: /* ! 23: * NOTICE ! 24: * ! 25: * Acquisition, use, and distribution of this module and related ! 26: * materials are subject to the restrictions of a license agreement. ! 27: * Consult the Preface in the User's Manual for the full terms of ! 28: * this agreement. ! 29: * ! 30: */ ! 31: ! 32: ! 33: #include "FTAM-types.h" ! 34: ! 35: #ifndef _FTAM_ ! 36: #include "ftam.h" /* definitions for FS-USERs */ ! 37: #endif ! 38: #ifndef _AcSAP_ ! 39: #include "acsap.h" /* definitions for AcS-USERs */ ! 40: #endif ! 41: ! 42: /* */ ! 43: ! 44: #define FS_GEN(fsb) \ ! 45: ((fsb -> fsb_flags & FSB_INIT) ? FS_GEN_INITIATOR : FS_GEN_RESPONDER) ! 46: ! 47: #define ftamPsig(fsb, sd) \ ! 48: { \ ! 49: if ((fsb = findfsblk (sd)) == NULL) { \ ! 50: (void) sigiomask (smask); \ ! 51: return ftamlose (fti, FS_GEN_NOREASON, 0, NULLCP, \ ! 52: "invalid ftam descriptor"); \ ! 53: } \ ! 54: if (!(fsb -> fsb_flags & FSB_CONN)) { \ ! 55: (void) sigiomask (smask); \ ! 56: return ftamlose (fti, FS_GEN (fsb), 0, NULLCP, \ ! 57: "ftam descriptor not connected"); \ ! 58: } \ ! 59: if (fsb -> fsb_flags & FSB_FINN) { \ ! 60: (void) sigiomask (smask); \ ! 61: return ftamlose (fti, FS_GEN (fsb), 0, NULLCP, \ ! 62: "ftam descriptor finishing"); \ ! 63: } \ ! 64: } ! 65: ! 66: #define ftamFsig(fsb, sd) \ ! 67: { \ ! 68: if ((fsb = findfsblk (sd)) == NULL) { \ ! 69: (void) sigiomask (smask); \ ! 70: return ftamlose (fti, FS_GEN_NOREASON, 0, NULLCP, \ ! 71: "invalid ftam descriptor"); \ ! 72: } \ ! 73: if (!(fsb -> fsb_flags & FSB_CONN)) { \ ! 74: (void) sigiomask (smask); \ ! 75: return ftamlose (fti, FS_GEN (fsb), 0, NULLCP, \ ! 76: "ftam descriptor not connected"); \ ! 77: } \ ! 78: if (!(fsb -> fsb_flags & FSB_FINN)) { \ ! 79: (void) sigiomask (smask); \ ! 80: return ftamlose (fti, FS_GEN (fsb), 0, NULLCP, \ ! 81: "ftam descriptor not finishing"); \ ! 82: } \ ! 83: } ! 84: ! 85: #define toomuchP(b,n,m,p) \ ! 86: { \ ! 87: if (b == NULL) \ ! 88: n = 0; \ ! 89: else \ ! 90: if (n > m) \ ! 91: return ftamlose (fti, FS_GEN_NOREASON, 0, NULLCP, \ ! 92: "too many %ss", p); \ ! 93: } ! 94: ! 95: #define missingP(p) \ ! 96: { \ ! 97: if (p == NULL) \ ! 98: return ftamlose (fti, FS_GEN_NOREASON, 0, NULLCP, \ ! 99: "mandatory parameter \"%s\" missing", "p"); \ ! 100: } ! 101: ! 102: #ifndef lint ! 103: #ifndef __STDC__ ! 104: #define copyFTAMdata(base,len,d) \ ! 105: { \ ! 106: register int i = len; \ ! 107: if ((d -> d/* */_cc = min (i, sizeof d -> d/* */_data)) > 0) \ ! 108: bcopy (base, d -> d/* */_data, d -> d/* */_cc); \ ! 109: } ! 110: #else ! 111: #define copyFTAMdata(base,len,d) \ ! 112: { \ ! 113: register int i = len; \ ! 114: if ((d -> d##_cc = min (i, sizeof d -> d##_data)) > 0) \ ! 115: bcopy (base, d -> d##_data, d -> d##_cc); \ ! 116: } ! 117: #endif ! 118: #else ! 119: #define copyFTAMdata(base,len,d) bcopy (base, (char *) d, len) ! 120: #endif ! 121: ! 122: ! 123: int ftamlose (), fpktlose (), ftamoops (); ! 124: ! 125: /* */ ! 126: ! 127: struct ftamblk { ! 128: struct ftamblk *fsb_forw; /* doubly-linked list */ ! 129: struct ftamblk *fsb_back; /* .. */ ! 130: ! 131: int fsb_fd; /* association descriptor */ ! 132: ! 133: short fsb_flags; /* our state */ ! 134: #define FSB_NULL 0x0000 ! 135: #define FSB_CONN 0x0001 /* connected */ ! 136: #define FSB_FINN 0x0002 /* other side wants to finish */ ! 137: #define FSB_INIT 0x0004 /* this side initiated the association */ ! 138: #define FSB_ASYN 0x0008 /* asynchronous */ ! 139: #define FSB_DECHARGE 0x0010 /* responder can using charging on deselect */ ! 140: #define FSB_CANCEL 0x0020 /* this side started F-CANCEL */ ! 141: #define FSB_COLLIDE 0x0040 /* collision */ ! 142: ! 143: short fsb_state; /* more state */ ! 144: #define FSB_INITIALIZED 0 /* initialized */ ! 145: #define FSB_MANAGEMENT 1 /* management */ ! 146: #define FSB_BULKBEGIN 2 /* bulk data begin */ ! 147: #define FSB_BULKEND 3 /* bulk data end */ ! 148: #define FSB_DATAIDLE 4 /* data transfer idle */ ! 149: #define FSB_LOCATE 5 /* locate in progress */ ! 150: #define FSB_ERASE 6 /* erase in progress */ ! 151: #define FSB_DATAREAD 7 /* data transfer read */ ! 152: #define FSB_DATAWRITE 8 /* data transfer write */ ! 153: #define FSB_DATAFIN1 9 /* data transfer done */ ! 154: #define FSB_DATAFIN2 10 /* .. */ ! 155: #define FSB_DATACANCEL 11 /* cancel in progress */ ! 156: ! 157: int fsb_group; /* group flags */ ! 158: ! 159: int fsb_srequirements; /* session requirements */ ! 160: int fsb_owned; /* session tokens we own */ ! 161: int fsb_avail; /* session tokens available */ ! 162: int fsb_settings; /* initial and resync settings */ ! 163: long fsb_ssn; /* serial number */ ! 164: struct SSAPref fsb_connect; /* session connection reference */ ! 165: int fsb_ssdusize; /* largest atomic SSDU */ ! 166: ! 167: int fsb_id; /* FTAM context id */ ! 168: int fsb_prequirements; /* presentation requirements */ ! 169: struct PSAPctxlist fsb_contexts;/* presentation contexts */ ! 170: struct FTAMcontentlist fsb_contents; /* FTAM document types */ ! 171: ! 172: OID fsb_context; /* application context */ ! 173: ! 174: int fsb_fqos; /* ftam-QoS */ ! 175: int fsb_class; /* service-class */ ! 176: int fsb_units; /* functional-units */ ! 177: /* mandatory functional-units */ ! 178: #define FUNITS_TRANSFER (FUNIT_GROUPING) ! 179: #define FUNITS_ACCESS (FUNIT_READ | FUNIT_WRITE | FUNIT_ACCESS) ! 180: #define FUNITS_MANAGE (FUNIT_LIMITED | FUNIT_GROUPING) ! 181: #define FUNITS_TM (FUNIT_GROUPING) ! 182: #define FUNITS_UNCONS (0) ! 183: ! 184: int fsb_attrs; /* attribute-groups */ ! 185: ! 186: IFP fsb_indication; /* event handler */ ! 187: ! 188: struct PSAPdata fsb_data; /* for screwy BDT stuff */ ! 189: ! 190: int fsb_cancelaction; /* handle CANCEL collisions */ ! 191: PE fsb_cancelshared; ! 192: struct FTAMdiagnostic *fsb_canceldiags; ! 193: int fsb_cancelndiag; ! 194: ! 195: IFP fsb_trace; /* user-defined tracing function */ ! 196: }; ! 197: #define NULLFSB ((struct ftamblk *) 0) ! 198: ! 199: int freefsblk (); ! 200: struct ftamblk *newfsblk (), *findfsblk (); ! 201: ! 202: #ifndef lint ! 203: #define fsbtrace(fsb,a) if ((fsb) -> fsb_trace) (*((fsb) -> fsb_trace)) a ! 204: #else ! 205: #define fsbtrace(fsb,a) FTraceHook a ! 206: #endif ! 207: ! 208: /* */ ! 209: ! 210: struct pair { ! 211: int p_mask; ! 212: int p_bitno; ! 213: }; ! 214: ! 215: extern struct pair fclass_pairs[], ! 216: funit_pairs[], ! 217: fattr_pairs[], ! 218: fname_pairs[], ! 219: fmode_pairs[], ! 220: frequested_pairs[], ! 221: fpermitted_pairs[]; ! 222: /* */ ! 223: ! 224: struct type_FTAM_Access__Control__List *acl2fpm (); ! 225: int fpm2acl (); ! 226: ! 227: struct type_FTAM_Read__Attributes *attr2fpm (); ! 228: int fpm2attr (); ! 229: ! 230: PE bits2fpm (); ! 231: int fpm2bits (); ! 232: ! 233: struct type_FTAM_Charging *chrg2fpm (); ! 234: int fpm2chrg (); ! 235: ! 236: struct type_FTAM_Concurrency__Access *conacc2fpm (); ! 237: int fpm2conacc (); ! 238: ! 239: struct type_FTAM_Concurrency__Control *conctl2fpm (); ! 240: int fpm2conctl (); ! 241: #define conctl_present(fc) \ ! 242: ((fc) -> fc_readlock != FLOCK_NOTREQD \ ! 243: || (fc) -> fc_insertlock != FLOCK_NOTREQD \ ! 244: || (fc) -> fc_replacelock != FLOCK_NOTREQD \ ! 245: || (fc) -> fc_extendlock != FLOCK_NOTREQD \ ! 246: || (fc) -> fc_eraselock != FLOCK_NOTREQD \ ! 247: || (fc) -> fc_readattrlock != FLOCK_NOTREQD \ ! 248: || (fc) -> fc_chngattrlock != FLOCK_NOTREQD \ ! 249: || (fc) -> fc_deletelock != FLOCK_NOTREQD) \ ! 250: ! 251: ! 252: struct type_FTAM_Diagnostic *diag2fpm (); ! 253: int fpm2diag (); ! 254: ! 255: struct type_FTAM_FADU__Identity *faduid2fpm (); ! 256: int fpm2faduid (); ! 257: ! 258: struct type_FTAM_Access__Passwords *pass2fpm (); ! 259: int fpm2pass (); ! 260: #define passes_present(fp) \ ! 261: ((fp) -> fp_read || (fp) -> fp_insert || (fp) -> fp_replace \ ! 262: || (fp) -> fp_extend || (fp) -> fp_erase || (fp) -> fp_readattr \ ! 263: || (fp) -> fp_chngattr || (fp) -> fp_delete) \ ! 264: ! 265: struct type_FTAM_Shared__ASE__Information *shared2fpm (); ! 266: int fpm2shared (); ! 267: ! 268: /* */ ! 269: ! 270: int acs2ftamlose (), acs2ftamabort (); ! 271: int ps2ftamlose ();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.