home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / MacX25 / MacX25 Developer's Kit / X.25_Interface_Library / Library / Interfaces / CIncludes / X25_Interface.h next >
Encoding:
C/C++ Source or Header  |  1994-11-21  |  65.4 KB  |  917 lines  |  [TEXT/MPS ]

  1. /* **************************************************************************************************** */
  2. /* *                                                                                                  * */
  3. /* *                                X.25 Interface Library                                            * */
  4. /* *                                ----------------------                                            * */
  5. /* *                                                                                                  * */
  6. /* *                                    X25_Interface.h                                               * */
  7. /* *                                                                                                  * */
  8. /* *..................................................................................................* */
  9. /* *                                                                                                  * */
  10. /* *     Definitions that are required in order to use the "X.25 Interface Library" set               * */
  11. /* *     of Interface Routines.                                                                       * */
  12. /* *                                                                                                  * */
  13. /* *                                                                                                  * */
  14. /* *--------------------------------------------------------------------------------------------------* */
  15. /* *                                                                                                  * */
  16. /* *                       Copyright © 1988-1990 Apple Computer, Inc.                                 * */
  17. /* *                                   All Rights Reserved                                            * */
  18. /* *                                                                                                  * */
  19. /* *--------------------------------------------------------------------------------------------------* */
  20. /* *                                                                                                  * */
  21. /* *     Revision History:                                                                            * */
  22. /* *                                                                                                  * */
  23. /* *     Date       Individual          Changes                                                       * */
  24. /* *     .........  ................... ..........................................................    * */
  25. /* *                                                                                                  * */
  26. /* *     05 Jul 88  D. N. Willey        Original Version                                              * */
  27. /* *         "      Rick Holzgrafe                                                                    * */
  28. /* *                                                                                                  * */
  29. /* *        Aug 88  D. N. Willey        Ongoing Changes                                               * */
  30. /* *         to                                                                                       * */
  31. /* *        Nov 89                                                                                    * */
  32. /* *                                                                                                  * */
  33. /* *                                                                                                  * */
  34. /* **************************************************************************************************** */
  35.     
  36.  
  37. #ifndef     _X25_Interface_Includes_
  38. #define     _X25_Interface_Includes_
  39.  
  40. #include    <Types.h>
  41. #include    <Memory.h>
  42.  
  43. #include    <AppleTalk.h>
  44.  
  45.  
  46.  
  47. /* **************************************************************************************************** */
  48. /* *                                                                                                  * */
  49. /* *    Internal Definitions for the Transmission Control Block                                       * */
  50. /* *                                                                                                  * */
  51. /* **************************************************************************************************** */
  52.  
  53.  
  54. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  55. /* +                                                                                                  + */
  56. /* +    The User's "Completion Routine" (Part of Transmission Control Block)                          + */
  57. /* +                                                                                                  + */
  58. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  59.  
  60. typedef pascal  void    (*X25_Complete_ProcPtr)     ( void              *       tcb_ptr                 );
  61.  
  62.  
  63. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  64. /* +                                                                                                  + */
  65. /* +    Data Manipulation I/O Block (Part of Transmission Control Block)                              + */
  66. /* +                                                                                                  + */
  67. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  68.  
  69. typedef struct X25_Data_def {
  70.     
  71.                                                     /* Flag Field                                       */
  72.     unsigned                Q_bit           : 1;    /*     X.25 Q-bit for encode / decode routines      */
  73.     unsigned                D_bit           : 1;    /*     X.25 D-bit for encode / decode routines      */
  74.     unsigned                M_bit           : 1;    /*     X.25 M-bit for encode / decode routines      */
  75.     unsigned                                :13;    /*                                                  */
  76.     
  77.     unsigned    short       max_length;             /* Max Data Length of Buffer            (bytes)     */
  78.     unsigned    short       req_length;             /* Requested Data Length to Process     (bytes)     */
  79.     unsigned    short       act_length;             /* Actual Data Length Processed         (bytes)     */
  80.     unsigned    short       reserved;               /* Reserved for future use                          */
  81.     void                *   data_ptr;               /* Data Pointer                                     */
  82.  
  83.     } X25_Data_def;
  84.  
  85.  
  86. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  87. /* +                                                                                                  + */
  88. /* +    Async/Sync I/O Block (Part of Transmission Control Block)                                     + */
  89. /* +                                                                                                  + */
  90. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  91.  
  92. typedef struct X25_IO_def {
  93.  
  94.     OSErr                   return_code;            /* Returned Error Code  (async I/O)                 */
  95.     OSErr                   status_code;            /* Detailed Status Code (async I/O)                 */
  96.     
  97.     X25_Complete_ProcPtr    completion;             /* Completion routine for Asynchronous I/O          */
  98.     
  99.     short                   timeout;                /* Timeout value for Synchronous I/O                */
  100.     
  101.                                                     /* Flag Field                                       */
  102.     unsigned                IF_asynchronous : 1;    /*     Request Asynchronous Operation               */
  103.     unsigned                IF_expedited    : 1;    /*     Request Expedited Transmission               */
  104.     unsigned                IF_more         : 1;    /*     More data to come                            */
  105.     unsigned                IF_partial_read : 1;    /*     Partial Read Request / Response              */
  106.     unsigned                                :12;    /*                                                  */
  107.     
  108.     unsigned    short       max_length;             /* Max Data Length of Buffer            (bytes)     */
  109.     unsigned    short       req_length;             /* Requested Data Length to Transfer    (bytes)     */
  110.     unsigned    short       act_length;             /* Actual Data Length Transfered        (bytes)     */
  111.     unsigned    short       reserved;               /* Reserved for future use                          */
  112.     void                *   data_ptr;               /* Data Pointer                                     */
  113.  
  114.     } X25_IO_def;
  115.  
  116.  
  117.  
  118. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  119. /* +                                                                                                  + */
  120. /* +    Transmission Control Block                                                                    + */
  121. /* +                                                                                                  + */
  122. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  123.  
  124. typedef struct tcb_def {
  125.  
  126.     OSErr                   return_code;            /* Returned Error Code                              */
  127.     OSErr                   status_code;            /* Detailed Status Code                             */
  128.     
  129.     long                    ref_con;                /* Users Reference (value or pointer)               */
  130.  
  131.     X25_Data_def            aux_read_data;          /* Input Area for Data Manipulation Operations      */
  132.     X25_Data_def            aux_write_data;         /* Output Area for Data Manipulation Operations     */
  133.  
  134.     X25_IO_def              read_data;              /* Async/Sync Read Area                             */
  135.     X25_IO_def              write_data;             /* Async/Sync Write Area                            */
  136.  
  137. /* .................................................................................................... */
  138. /* .                                                                                                  . */
  139. /* .                            *** INTERNAL USE ONLY ***                                             . */
  140. /* .           The following fields are reserved for internal use only and may change                 . */
  141. /* .                                                                                                  . */
  142. /* .................................................................................................... */
  143.  
  144.     void                *   vccb_ref_ptr;           /* Virtual Circuit Control Block pointer            */
  145.     struct tcb_def      *   tcb_chain_ptr;
  146.     long                    quit_time;
  147.  
  148.     } tcb_def;
  149.  
  150.  
  151.  
  152. /* **************************************************************************************************** */
  153. /* *                                                                                                  * */
  154. /* *    Return Codes ( "return_code" )                                                                * */
  155. /* *                                                                                                  * */
  156. /* **************************************************************************************************** */
  157.  
  158. /* .................................................................................................... */
  159. /* .                                                                                                  . */
  160. /* .    Non Errors                                                                                    . */
  161. /* .                                                                                                  . */
  162. /* .................................................................................................... */
  163.  
  164. #define     X25if_no_error                  0x0000  /* Good Return ( not an error )                     */
  165. #define     X25if_io_pending                0x0001  /* Set while async I/O is incomplete                */
  166. #define     X25if_io_would_block            0x0002  /* Set if blocking I/O would block                  */
  167. #define     X25if_user_cancelled            0x0008  /* From AddressBook etc.                            */
  168.  
  169. /* .................................................................................................... */
  170. /* .                                                                                                  . */
  171. /* .    User Procedure Error on Call (permanent)                                                      . */
  172. /* .                                                                                                  . */
  173. /* .................................................................................................... */
  174.  
  175. #define     X25if_procedure_error           0x0010
  176. #define     X25if_resource_call_not_allowed 0x0012
  177. #define     X25if_async_io_not_allowed      0x0013
  178. #define     X25if_init_prior_call           0x0018  /* returned on a X25_Open call                      */
  179. #define     X25if_init_no_call              0x0019  /* returned on a X25_Open or X25_Close call         */
  180. #define     X25if_vccb_prior_allocation     0x001A
  181. #define     X25if_vccb_no_allocation        0x001B
  182. #define     X25if_vccb_not_closed           0x001C
  183. #define     X25if_vccb_not_open             0x001D
  184.  
  185. /* .................................................................................................... */
  186. /* .                                                                                                  . */
  187. /* .    User Procedure Error on Call (temporary)                                                      . */
  188. /* .                                                                                                  . */
  189. /* .................................................................................................... */
  190.  
  191. #define     X25if_procedure_error_temp      0x0020
  192. #define     X25if_server_prior_connect      0x0022  /* high byte = server connection state              */
  193. #define     X25if_server_not_connected      0x0023  /* high byte = server connection state              */
  194. #define     X25if_server_invalid_state      0x0024  /* high byte = actual state / low byte = expected   */
  195. #define     X25if_user_prior_validation     0x0026  /* high byte = server validation state              */
  196. #define     X25if_user_not_validated        0x0027  /* high byte = server validation state              */
  197. #define     X25if_validation_invalid_state  0x0028  /* high byte = actual state / low byte = expected   */
  198. #define     X25if_vc_not_closed             0x002A  /* high byte = circuit state                        */
  199. #define     X25if_vc_not_open               0x002B  /* high byte = circuit_state                        */
  200. #define     X25if_vc_invalid_state          0x002C  /* high byte = actual state / low byte = expected   */
  201.  
  202. /* .................................................................................................... */
  203. /* .                                                                                                  . */
  204. /* .    Error on Communication to X.25 Server                                                         . */
  205. /* .                                                                                                  . */
  206. /* .................................................................................................... */
  207.  
  208. #define     X25if_transmission_error        0x0030
  209. #define     X25if_adsp_shutdown             0x0031
  210. #define     X25if_ipc_shutdown              0x0032
  211. #define     X25if_adsp_error                0x0033  /* status_code = adsp/driver error code             */
  212. #define     X25if_ipc_error                 0x0034  /* status_code = apple_ipc error code               */
  213. #define     X25if_server_error              0x003A  /* status_code = server error code                  */
  214.  
  215. /* .................................................................................................... */
  216. /* .                                                                                                  . */
  217. /* .    Internal Consistency Checks                                                                   . */
  218. /* .                                                                                                  . */
  219. /* .................................................................................................... */
  220.  
  221. #define     X25if_consistency_error         0x0040
  222. #define     X25if_global_area_corrupted     0x0041
  223. #define     X25if_vccb_corrupted            0x0042
  224.  
  225. /* .................................................................................................... */
  226. /* .                                                                                                  . */
  227. /* .    Request for Support that is Not Available                                                     . */
  228. /* .                                                                                                  . */
  229. /* .................................................................................................... */
  230.  
  231. #define     X25if_no_support                0x0050
  232. #define     X25if_adsp_no_support           0x0051  /* returned on a "X25_Server_Connect" request       */
  233. #define     X25if_ipc_no_support            0x0052  /* returned on a "X25_Server_Connect" request       */
  234.  
  235. /* .................................................................................................... */
  236. /* .                                                                                                  . */
  237. /* .    Request for Component that is Not Available                                                   . */
  238. /* .                                                                                                  . */
  239. /* .................................................................................................... */
  240.  
  241. #define     X25if_service_not_avail         0x0060
  242. #define     X25if_mpp_not_avail             0x0061  /* returned on a "X25_Server_Connect" request       */
  243. #define     X25if_mpp_ver_error             0x0062  /* high byte = actual / low byte = minimum ver      */
  244. #define     X25if_dsp_not_avail             0x0063  /* returned on a "X25_Server_Connect" request       */
  245. #define     X25if_dsp_ver_error             0x0064  /* high byte = actual / low byte = minimum ver      */
  246. #define     X25if_ipc_not_avail             0x0065  /* returned on a "X25_Server_Connect" request       */
  247. #define     X25if_ipc_ver_error             0x0066  /* high byte = actual / low byte = minimum ver      */
  248.  
  249. /* .................................................................................................... */
  250. /* .                                                                                                  . */
  251. /* .    Request for X.25 Server that is Not Available                                                 . */
  252. /* .                                                                                                  . */
  253. /* .................................................................................................... */
  254.  
  255. #define     X25if_server_not_avail          0x0070  /* returned on a "X25_Server_Connect" request       */
  256. #define     X25if_server_refused            0x0071  /* returned on a "X25_Server_Connect" request       */
  257. #define     X25if_server_no_vcs             0x0074  /* returned on a "X25_Server_Connect" request       */
  258.  
  259. /* .................................................................................................... */
  260. /* .                                                                                                  . */
  261. /* .    User Validation Failure                                                                       . */
  262. /* .                                                                                                  . */
  263. /* .................................................................................................... */
  264.  
  265. #define     X25if_validation_failure        0x0080  /* returned on a "X25_Server_Connect" request       */
  266. #define     X25if_invalid_validator_ver     0x0081  /* high byte = actual / low byte = expected         */
  267. #define     X25if_invalid_validator_msg     0x0082  /* returned on a "X25_Server_Connect" request       */
  268. #define     X25if_no_validator              0x0083  /* returned on a "X25_Server_Connect" request       */
  269. #define     X25if_validator_shutdown        0x0084  /* returned on a "X25_Server_Connect" request       */
  270. #define     X25if_overlength_user_name      0x0088  /* returned on a "X25_Set_User_ID" request          */
  271. #define     X25if_overlength_user_password  0x0089  /* returned on a "X25_Set_User_ID" request          */
  272. #define     X25if_invalid_user_name         0x008C  /* returned on a "X25_Server_Validate" request      */
  273. #define     X25if_invalid_user_password     0x008D  /* returned on a "X25_Server_Validate" request      */
  274.  
  275. /* .................................................................................................... */
  276. /* .                                                                                                  . */
  277. /* .    System Detected Errors                                                                        . */
  278. /* .                                                                                                  . */
  279. /* .................................................................................................... */
  280.  
  281. #define     X25if_system_error              0x00A0
  282. #define     X25if_OS_error                  0x00A1  /* status_code = actual O.S. error code             */
  283. #define     X25if_no_tsk_mem_alloc          0x00A2  /* status_code = memory bytes request               */
  284. #define     X25if_no_sys_mem_alloc          0x00A3  /* status_code = memory bytes request               */
  285. #define     X25if_low_stack_space           0x00A8  /* status_code = stack space remaining              */
  286. #define     X25if_vbl_tsk_install_failed    0x00AA
  287. #define     X25if_stack_tsk_install_failed  0x00AB
  288.  
  289. /* .................................................................................................... */
  290. /* .                                                                                                  . */
  291. /* .    I/O Errors                                                                                    . */
  292. /* .                                                                                                  . */
  293. /* .................................................................................................... */
  294.  
  295. #define     X25if_io_error                  0x0100
  296. #define     X25if_io_aborted                0x0101  /* Set in result_code of async read or write        */
  297.                                                     /* If X25_Kill_Read, X25_Kill_Write, or             */
  298.                                                     /* X25_Server_Discnct was called                    */
  299. #define     X25if_io_timeout                0x0102  /* For synchrouous I/0 calls only                   */
  300.  
  301. /* .................................................................................................... */
  302. /* .                                                                                                  . */
  303. /* .    Read Related                                                                                  . */
  304. /* .                                                                                                  . */
  305. /* .................................................................................................... */
  306.  
  307. #define     X25if_read_buffer_error         0x0110
  308. #define     X25if_read_nil_ptr              0x0111
  309. #define     X25if_read_buf_alignment        0x0112
  310. #define     X25if_read_buf_overflow         0x0113  /* status_code = required buffer space              */
  311. #define     X25if_prior_read_pending        0x0115
  312.  
  313. /* .................................................................................................... */
  314. /* .                                                                                                  . */
  315. /* .    Write Related                                                                                 . */
  316. /* .                                                                                                  . */
  317. /* .................................................................................................... */
  318.  
  319. #define     X25if_write_buffer_error        0x0120
  320. #define     X25if_write_nil_ptr             0x0121
  321. #define     X25if_write_buf_alignment       0x0122
  322. #define     X25if_write_buf_overflow        0x0123
  323. #define     X25if_write_buf_underflow       0x0124
  324. #define     X25if_prior_write_pending       0x0125
  325.  
  326. /* .................................................................................................... */
  327. /* .                                                                                                  . */
  328. /* .    Aux Read Buffer Related                                                                       . */
  329. /* .                                                                                                  . */
  330. /* .................................................................................................... */
  331.  
  332. #define     X25if_a_r_buffer_error          0x0130
  333. #define     X25if_a_r_nil_ptr               0x0131
  334. #define     X25if_a_r_buf_alignment         0x0132
  335. #define     X25if_a_r_buf_overflow          0x0133  /* status_code = required buffer space              */
  336.  
  337. /* .................................................................................................... */
  338. /* .                                                                                                  . */
  339. /* .    Aux Write Buffer Related                                                                      . */
  340. /* .                                                                                                  . */
  341. /* .................................................................................................... */
  342.  
  343. #define     X25if_a_w_buffer_error          0x0140
  344. #define     X25if_a_w_nil_ptr               0x0141
  345. #define     X25if_a_w_buf_alignment         0x0142
  346. #define     X25if_a_w_buf_overflow          0x0143
  347. #define     X25if_a_w_buf_underflow         0x0144
  348.  
  349. /* .................................................................................................... */
  350. /* .                                                                                                  . */
  351. /* .    Message Header Errors (Read)                                                                  . */
  352. /* .                                                                                                  . */
  353. /* .................................................................................................... */
  354.  
  355. #define     X25if_header_error              0x0180
  356. #define     X25if_unknown_header            0x0181  /* status_code = header "Type"                      */
  357. #define     X25if_header_destination        0x0182  /* high byte = actual / low byte = expected         */
  358. #define     X25if_header_source             0x0183  /* high byte = actual / low byte = expected         */
  359. #define     X25if_header_version            0x0184  /* high byte = actual / low byte = expected         */
  360. #define     X25if_header_remote_rej         0x0185  
  361. #define     X25if_unexpected_header         0x0188  /* status_code = received header "Type"             */
  362. #define     X25if_header_underflow          0x018A  /* status_code = received header length             */
  363. #define     X25if_header_overflow           0x018B  /* status_code = received header length             */
  364.  
  365. /* .................................................................................................... */
  366. /* .                                                                                                  . */
  367. /* .    Message Errors (Read)                                                                         . */
  368. /* .                                                                                                  . */
  369. /* .................................................................................................... */
  370.  
  371. #define     X25if_message_error             0x0190
  372. #define     X25if_unknown_message           0x0191  /* status_code = received message "Type"            */
  373. #define     X25if_message_version           0x0194  /* high byte = actual / low byte = expected         */
  374. #define     X25if_unexpected_message        0x0198  /* status_code = received message "Type"            */
  375. #define     X25if_message_underflow         0x019A  /* status_code = received message length            */
  376. #define     X25if_message_overflow          0x019B  /* status_code = received message length            */
  377.  
  378. /* .................................................................................................... */
  379. /* .                                                                                                  . */
  380. /* .    X.25 Packet Errors (Read)                                                                     . */
  381. /* .                                                                                                  . */
  382. /* .................................................................................................... */
  383.  
  384. #define     X25if_packet_error              0x01A0
  385. #define     X25if_packet_overflow           0x01A1  /* status_code = packet length                      */
  386. #define     X25if_packet_underflow          0x01A2  /* status_code = packet length                      */
  387. #define     X25if_unexpected_packet         0x01A3  /* status_code = packet type code                   */
  388. #define     X25if_unknown_packet            0x01A4  /* status_code = packet type code                   */
  389.  
  390. /* .................................................................................................... */
  391. /* .                                                                                                  . */
  392. /* .    X.25 Packet Encode Errors (Syntax)                                                            . */
  393. /* .                                                                                                  . */
  394. /* .................................................................................................... */
  395.  
  396. #define     X25if_syntax_error              0x0200  /* status_code = input buffer offset to error       */
  397. #define     X25if_underlength_field         0x0201  /* status_code = input buffer offset to error       */
  398. #define     X25if_overlength_field          0x0202  /* status_code = input buffer offset to error       */
  399. #define     X25if_field_value_too_small     0x0203  /* status_code = input buffer offset to error       */
  400. #define     X25if_field_value_too_large     0x0204  /* status_code = input buffer offset to error       */
  401. #define     X25if_field_value_illegal       0x0206  /* status_code = input buffer offset to error       */
  402. #define     X25if_duplicate_facility        0x0208  /* status_code = input buffer offset to error       */
  403. #define     X25if_inconsistent_facility     0x0209  /* status_code = input buffer offset to error       */
  404. #define     X25if_excess_facility_data      0x020C  /* status_code = input buffer offset to error       */
  405.  
  406. /* .................................................................................................... */
  407. /* .                                                                                                  . */
  408. /* .    X.25 Packet Encode Errors (Other)                                                             . */
  409. /* .                                                                                                  . */
  410. /* .................................................................................................... */
  411.  
  412. #define     X25if_packet_encode_error       0x0210
  413. #define     X25if_data_packet_overflow      0x0211  /* status_code = max data packet size               */
  414. #define     X25if_configured_net_addr       0x021D
  415.  
  416. /* .................................................................................................... */
  417. /* .                                                                                                  . */
  418. /* .    X.25 Packet Decode Errors                                                                     . */
  419. /* .                                                                                                  . */
  420. /* .................................................................................................... */
  421.  
  422. #define     X25if_packet_decode_error       0x0220
  423. #define     X25if_data_packet_overflow      0x0211  /* status_code = max data packet size               */
  424. #define     X25if_packet_overflow           0x0212  /* status_code = max packet size                    */
  425. #define     X25if_packet_addr_decode        0x0228
  426. #define     X25if_packet_facility_decode    0x0229
  427. #define     X25if_packet_userdata_decode    0x022A
  428.  
  429. /* .................................................................................................... */
  430. /* .                                                                                                  . */
  431. /* .    X.25 Connect Errors                                                                           . */
  432. /* .                                                                                                  . */
  433. /* .................................................................................................... */
  434.  
  435. #define     X25if_call_error                0x0280
  436. #define     X25if_call_cleared              0x0281  /* status_code left byte  = clearing cause          */
  437.                                                     /* status_code right byte = diagnostic code         */
  438.  
  439. /* .................................................................................................... */
  440. /* .                                                                                                  . */
  441. /* .    X.25 Listen Registration Errors                                                               . */
  442. /* .                                                                                                  . */
  443. /* .................................................................................................... */
  444.  
  445. #define     X25if_reg_format_error          0x02A0  /* status_code = registration error                 */
  446. #define     X25if_reg_format_invalid_code   0x02A1
  447. #define     X25if_reg_format_no_pri_code    0x02A2
  448. #define     X25if_reg_format_data_size      0x02A3
  449. #define     X25if_reg_format_mask_size      0x02A4
  450. #define     X25if_reg_format_mask_data_size 0x02A5
  451. #define     X25if_reg_format_invalid_mask   0x02A6
  452.  
  453. /* .................................................................................................... */
  454. /* .                                                                                                  . */
  455. /* .    X.25 Listen Duplicate Registration Attempt                                                    . */
  456. /* .                                                                                                  . */
  457. /* .................................................................................................... */
  458.  
  459. #define     X25if_duplicate_registration    0x02B0  /* status_code = registration error                 */
  460. #define     X25if_dup_reg_data              0x02B2
  461. #define     X25if_dup_reg_calling_addr      0x02B4
  462. #define     X25if_dup_reg_called_addr       0x02B5
  463. #define     X25if_dup_reg_calling_nsap      0x02B6
  464. #define     X25if_dup_reg_called_nsap       0x02B7
  465. #define     X25if_dup_reg_cug               0x02BA
  466. #define     X25if_dup_reg_bcug              0x02BB
  467. #define     X25if_dup_reg_reverse_charging  0x02BE
  468. #define     X25if_dup_reg_fast_select       0x02BF
  469.  
  470. /* .................................................................................................... */
  471. /* .                                                                                                  . */
  472. /* .    Chooser Access                                                                                . */
  473. /* .                                                                                                  . */
  474. /* .................................................................................................... */
  475.  
  476. #define     X25if_chooser_error             0x0300
  477. #define     X25if_chooser_not_avail         0x0301
  478. #define     X25if_chooser_nbp_format        0x0308
  479.  
  480. /* .................................................................................................... */
  481. /* .                                                                                                  . */
  482. /* .    Address Book Access                                                                           . */
  483. /* .                                                                                                  . */
  484. /* .................................................................................................... */
  485.  
  486. #define     X25if_addressbook_error         0x0310
  487. #define     X25if_addressbook_not_avail     0x0311
  488. #define     X25if_addressbook_open_err      0x0312  /* status_code = addressbook error                  */
  489. #define     X25if_addressbook_access_err    0x0313  /* status_code = addressbook error                  */
  490. #define     X25if_addressbook_nbp_format    0x0318
  491. #define     X25if_addressbook_data_format   0x0319
  492. #define     X25if_addressbook_no_svr_rec    0x031A
  493. #define     X25if_addressbook_no_cnt_rec    0x031B
  494. #define     X25if_addressbook_no_data_rec   0x031C
  495.  
  496.  
  497.  
  498.  
  499. /* **************************************************************************************************** */
  500. /* *                                                                                                  * */
  501. /* *    Status Codes ( "status_code" )                                                                * */
  502. /* *                                                                                                  * */
  503. /* **************************************************************************************************** */
  504.  
  505. #define     X25if_no_status                 0x0000
  506.  
  507.  
  508. /* **************************************************************************************************** */
  509. /* *                                                                                                  * */
  510. /* *    Values for the useage type parameter of "X25_Open" call                                       * */
  511. /* *                                                                                                  * */
  512. /* **************************************************************************************************** */
  513.  
  514. typedef enum {                                  
  515.     application_type                    = 0,
  516.     desk_accessory_type                 = 1,
  517.     driver_type                         = 2
  518.     }                                   useage_type_def;
  519.  
  520.  
  521. /* **************************************************************************************************** */
  522. /* *                                                                                                  * */
  523. /* *    Values for the cnct_method parameter of "X25_Server_Connect" call                             * */
  524. /* *                                                                                                  * */
  525. /* **************************************************************************************************** */
  526.  
  527. typedef enum {                                  
  528.     connect_via_best                    = 0,
  529.     connect_via_ipc                     = 1,
  530.     connect_via_adsp                    = 2
  531.     }                                   cnct_method_def;
  532.  
  533.  
  534. /* **************************************************************************************************** */
  535. /* *                                                                                                  * */
  536. /* *    Values for the mode parameter of the "X25_Address_Book" call                                  * */
  537. /* *                                                                                                  * */
  538. /* **************************************************************************************************** */
  539.  
  540. typedef enum {                                  
  541.     address_book_select                 = 0,
  542.     address_book_edit                   = 1,
  543.     address_book_browse                 = 2
  544.     }                                   addr_book_mode_def;
  545.  
  546.  
  547. /* **************************************************************************************************** */
  548. /* *                                                                                                  * */
  549. /* *    Values for the returned message_type parameter of the "X25_decode_header" call                * */
  550. /* *                                                                                                  * */
  551. /* **************************************************************************************************** */
  552.  
  553. typedef enum {
  554.     X25_unknown_msg                     = 0,
  555.     X25_packet_msg                      = 1,
  556.     X25_server_msg                      = 2,
  557.     X25_admin_msg                       = 3,
  558.     X25_login_msg                       = 4
  559.     }                                   message_type_def;
  560.  
  561.  
  562.  
  563.  
  564. /* **************************************************************************************************** */
  565. /* *                                                                                                  * */
  566. /* *    Returned Structure for the "X25_Server_State" call                                            * */
  567. /* *                                                                                                  * */
  568. /* **************************************************************************************************** */
  569.  
  570. /* .................................................................................................... */
  571. /* .                                                                                                  . */
  572. /* .    The Server "Connection State" definition                                                      . */
  573. /* .                                                                                                  . */
  574. /* .................................................................................................... */
  575.  
  576.         typedef enum {
  577.             connection_unknown          = 0,
  578.             connection_closed           = 1,
  579.             connection_closing          = 2,
  580.             connection_opening          = 3,
  581.             connection_open             = 4
  582.             }                           connection_state_def;
  583.  
  584. /* .................................................................................................... */
  585. /* .                                                                                                  . */
  586. /* .    The Server "Authorization State" definition                                                   . */
  587. /* .                                                                                                  . */
  588. /* .................................................................................................... */
  589.  
  590.         typedef enum {
  591.             authorize_unknown           = 0,
  592.             authorize_closed            = 1,
  593.             authorize_closing           = 2,
  594.             authorize_opening           = 3,
  595.             authorize_open              = 4
  596.             }                           authorize_state_def;
  597.  
  598. /* .................................................................................................... */
  599. /* .                                                                                                  . */
  600. /* .    The actual "Connection Method" definition                                                     . */
  601. /* .                                                                                                  . */
  602. /* .................................................................................................... */
  603.  
  604.         typedef enum {
  605.             via_unknown                 = 0,
  606.             via_ipc                     = 1,
  607.             via_adsp                    = 2
  608.             }                           connection_method_def;
  609.  
  610. /* .................................................................................................... */
  611. /* .                                                                                                  . */
  612. /* .    The Server "Transmission State" definition                                                    . */
  613. /* .                                                                                                  . */
  614. /* .................................................................................................... */
  615.  
  616.         typedef struct {
  617.             unsigned                    write_priority_data_avail   : 1;
  618.             unsigned                    write_normal_data_avail     : 1;
  619.             unsigned                        /*  reserved    */      : 1;
  620.             unsigned                        /*  reserved    */      : 1;
  621.             unsigned                    read_priority_data_avail    : 1;
  622.             unsigned                    read_normal_data_avail      : 1;
  623.             unsigned                        /*  reserved    */      : 1;
  624.             unsigned                        /*  reserved    */      : 1;
  625.             unsigned                    shutdown                    : 1;
  626.             unsigned                    shutdown_by_timeouts        : 1;
  627.             unsigned                    shutdown_by_remote          : 1;
  628.             unsigned                        /*  reserved    */      : 1;
  629.             unsigned                        /*  reserved    */      : 1;
  630.             unsigned                        /*  reserved    */      : 1;
  631.             unsigned                        /*  reserved    */      : 1;
  632.             unsigned                        /*  reserved    */      : 1;
  633.             } server_transmission_def;
  634.  
  635. /* .................................................................................................... */
  636. /* .                                                                                                  . */
  637. /* .    The "X.25 VC/PVC Circuit State" definition                                                    . */
  638. /* .                                                                                                  . */
  639. /* .................................................................................................... */
  640.  
  641.         typedef enum {
  642.             circuit_unknown             = 0,
  643.             circuit_closed              = 1,
  644.             circuit_closing             = 2,
  645.             circuit_opening_outgoing    = 3,
  646.             circuit_opening_incoming    = 4,
  647.             circuit_open                = 5
  648.             }                           circuit_state_def;
  649.  
  650. /* .................................................................................................... */
  651. /* .                                                                                                  . */
  652. /* .    The returned "Server State" record                                                            . */
  653. /* .                                                                                                  . */
  654. /* .................................................................................................... */
  655.  
  656.     typedef struct  server_state_def {
  657.         connection_state_def            connection_state            : 8;
  658.         authorize_state_def             authorize_state             : 8;
  659.         connection_method_def           connection_method           : 8;
  660.         unsigned                            /*  reserved    */      : 8;
  661.         server_transmission_def         server_transmission;    /*  :16;    */
  662.         circuit_state_def               circuit_state               : 8;
  663.         unsigned                            /*  reserved    */      : 8;
  664.         } server_state_def;
  665.  
  666.  
  667.  
  668. /* **************************************************************************************************** */
  669. /* *                                                                                                  * */
  670. /* *    Returned Structure for the "X25_Link_State" call                                              * */
  671. /* *                                                                                                  * */
  672. /* **************************************************************************************************** */
  673.  
  674.     typedef struct  link_state_def  {
  675.     
  676.         enum {
  677.             level_1_disconnected        = 255,
  678.             level_1_setup               = 0,
  679.             level_1_connected           = 1
  680.             }                           level_1_state               : 8;
  681.  
  682.         enum {
  683.             level_2_disconnected        = 255,
  684.             level_2_setup               = 0,
  685.             level_2_connected           = 1
  686.             }                           level_2_state               : 8;
  687.         
  688.         unsigned                            /*  reserved    */      : 8;
  689.         
  690.         unsigned char                   number_of_vcs;
  691.         
  692.         unsigned                            /*  reserved    */      : 4;
  693.         unsigned                        RI_status                   : 1;
  694.         unsigned                        DSR_status                  : 1;
  695.         unsigned                        CTS_status                  : 1;
  696.         unsigned                        DCD_status                  : 1;
  697.     
  698.         unsigned                            /*  reserved    */      : 8;
  699.         
  700.         } link_state_def;
  701.  
  702.  
  703.  
  704. /* **************************************************************************************************** */
  705. /* *                                                                                                  * */
  706. /* *    Returned Structure for the "X25_vc_parameters" call                                           * */
  707. /* *                                                                                                  * */
  708. /* **************************************************************************************************** */
  709.  
  710. typedef struct vc_parameters_def {  
  711.     
  712.     unsigned char   network_address [32];   /* configured network address / sub-address         */
  713.     
  714.     unsigned char   local_address   [32];   /* actual local network address                     */
  715.     unsigned char   remote_address  [32];   /* actual remote network address                    */
  716.     
  717.     unsigned    line_type           :08 ;   /* type of line ( 0=DCE, 1=DTE )                    */
  718.     unsigned    vc_type             :08 ;   /* type of vc   ( 0=SVC, 1=PVC )                    */
  719.  
  720.     unsigned    X25_lcn             :16 ;   /* X.25 VC/PVC Logical Channel Number               */
  721.  
  722.     unsigned    svr_lun             :16 ;   /* Server Logical Unit Number                       */
  723.     unsigned    svr_adapter         :08 ;   /* Server Adapter                                   */
  724.     unsigned    svr_pre_processor   :08 ;   /* Server Pre Processor                             */
  725.     enum {                                  /* Server version being run                         */
  726.         ver_unknown             = 0,        /*     Unknown Version                              */
  727.         ver_76                  = 1,        /*     CCITT 1976                                   */
  728.         ver_80                  = 2,        /*     CCITT 1980                                   */
  729.         ver_84                  = 3,        /*     CCITT 1984                                   */
  730.         ver_88                  = 4         /*     CCITT 1988                                   */
  731.         }       X25_ver             :08 ;
  732.  
  733.     
  734.     unsigned    act_rx_pkt_size     :16 ;   /* actual agreeded length of receive data packets   */
  735.     unsigned    act_tx_pkt_size     :16 ;   /* actual agreeded length of transmit data packets  */
  736.     unsigned    def_rx_pkt_size     :16 ;   /* default length of receive data packets           */
  737.     unsigned    def_tx_pkt_size     :16 ;   /* default length of transmit data packets          */
  738.     unsigned    neg_rx_pkt_size     :16 ;   /* max negotiation length of receive data packets   */
  739.     unsigned    neg_tx_pkt_size     :16 ;   /* max negotiation length of transmit data packets  */
  740.     
  741.     unsigned    act_rx_win_size     :16 ;   /* actual agreeded length of receive window         */
  742.     unsigned    act_tx_win_size     :16 ;   /* actual agreeded length of transmit window        */
  743.     unsigned    def_rx_win_size     :16 ;   /* default length of receive window                 */
  744.     unsigned    def_tx_win_size     :16 ;   /* default length of transmit window                */
  745.     unsigned    neg_rx_win_size     :16 ;   /* max negotiation length of receive window         */
  746.     unsigned    neg_tx_win_size     :16 ;   /* max negotiation length of transmit window        */
  747.     
  748.     unsigned    act_rx_throughput   :16;    /* actual agreeded value of receive throughput      */
  749.     unsigned    act_tx_throughput   :16;    /* actual agreeded value of transmit throughput     */
  750.     unsigned    def_rx_throughput   :16;    /* default value of receive throughput              */
  751.     unsigned    def_tx_throughput   :16;    /* default value of transmit throughput             */
  752.     unsigned    neg_rx_throughput   :16;    /* max negotiation value of receive throughput      */
  753.     unsigned    neg_tx_throughput   :16;    /* max negotiation value of transmit throughput     */
  754.     
  755.     unsigned    local_charg_prev    :01;    /* local charging prevention                        */
  756.     unsigned    forbid_incoming     :01;    /* forbid incoming calls                            */
  757.     unsigned    forbid_outgoing     :01;    /* forbid outgoing calls                            */
  758.     unsigned                        :05;    /*   (reserved)                                     */
  759.     unsigned    act_rev_charging    :01;    /* actual reverse charging acceptance in use        */
  760.     unsigned    allow_rev_charging  :01;    /* allow reverse charging acceptance                */
  761.     unsigned                        :02;    /*   (reserved)                                     */
  762.     unsigned    act_fast_select     :01;    /* actual fast select in use                        */
  763.     unsigned    allow_fast_select   :01;    /* allow fast select                                */
  764.     unsigned                        :02;    /*   (reserved)                                     */
  765.     unsigned    allow_d_bit_usage   :01;    /* allow use of D-bit                               */
  766.     unsigned                        :15;    /*   (reserved)                                     */
  767.  
  768.     unsigned    negociation         :08;    /* throughput et flow ctrl nego                     */
  769.     unsigned    cug                 :08;    /* closed user group selection                      */
  770.     unsigned    bcug                :08;    /* Bilateral cug selection                          */
  771.  
  772. } vc_parameters_def;
  773.  
  774.  
  775.  
  776. /* **************************************************************************************************** */
  777. /* *                                                                                                  * */
  778. /* *   Macros for setting the timeout values in the tcb                                               * */
  779. /* *                                                                                                  * */
  780. /* **************************************************************************************************** */
  781.  
  782. #define     timeout_sec(seconds)            ((seconds)*60)          
  783.  
  784. #define     timeout_millisec(millisec)      ((((millisec)+99)/100)*6)           
  785.  
  786. #define     timeout_infinite                (0)         
  787.  
  788. #define     timeout_non_blocking            (-1)            
  789.  
  790.  
  791.  
  792. /* **************************************************************************************************** */
  793. /* *                                                                                                  * */
  794. /* *    X25_Interface Library Functions                                                               * */
  795. /* *                                                                                                  * */
  796. /* **************************************************************************************************** */
  797.  
  798.  
  799. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  800. /* +                                                                                                  + */
  801. /* +    Typedefs for the memory allocation routine which is passed as parameters                      + */
  802. /* +                                                                                                  + */
  803. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  804.  
  805. typedef pascal  Ptr     (*X25_Memory_ProcPtr)   ( Size                          byte_count              );
  806.  
  807.  
  808.  
  809. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  810. /* +                                                                                                  + */
  811. /* +    The directly callable routines                                                                + */
  812. /* +                                                                                                  + */
  813. /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
  814.  
  815. extern  pascal  OSErr   X25_Open                ( X25_Memory_ProcPtr            memory_allocator        ,
  816.                                                   useage_type_def               useage_type             );
  817. extern  pascal  OSErr   X25_Close               (                                                       );
  818.  
  819. extern  pascal  OSErr   X25_vccb_Open           ( tcb_def           *  const    tcb_ptr                 ,
  820.                                                   X25_Memory_ProcPtr            memory_allocator        ,
  821.                                                   short                         max_packet_size         );
  822. extern  pascal  OSErr   X25_vccb_Close          ( tcb_def           *  const    tcb_ptr                 );
  823.  
  824. extern  pascal  OSErr   X25_Chooser             ( tcb_def           *  const    tcb_ptr                 );
  825. extern  pascal  OSErr   X25_Address_Book        ( tcb_def           *  const    tcb_ptr                 ,
  826.                                                   addr_book_mode_def            mode                    );
  827.  
  828. extern  pascal  OSErr   X25_Set_Server_ID       ( tcb_def           *  const    tcb_ptr                 ,
  829.                                                   char              *  const    server_name_string      , 
  830.                                                   char              *  const    server_zone_string      );
  831. extern  pascal  OSErr   X25_Get_Server_ID       ( tcb_def           *  const    tcb_ptr                 ,
  832.                                                   char              *  const    server_name_string      , 
  833.                                                   char              *  const    server_zone_string      );
  834.  
  835. extern  pascal  OSErr   X25_User_ID             ( tcb_def           *  const    tcb_ptr                 ,
  836.                                                   Boolean                       force_display           );
  837. extern  pascal  OSErr   X25_Set_User_ID         ( tcb_def           *  const    tcb_ptr                 ,
  838.                                                   char              *  const    user_name_string        , 
  839.                                                   char              *  const    user_password_string    );
  840. extern  pascal  OSErr   X25_Get_User_ID         ( tcb_def           *  const    tcb_ptr                 ,
  841.                                                   char              *  const    user_name_string        , 
  842.                                                   char              *  const    user_password_string    );
  843.  
  844. extern  pascal  OSErr   X25_Server_Connect      ( tcb_def           *  const    tcb_ptr                 ,
  845.                                                   cnct_method_def               cnct_method             );
  846. extern  pascal  OSErr   X25_Server_Authorize    ( tcb_def           *  const    tcb_ptr                 );
  847. extern  pascal  OSErr   X25_Server_Discnct      ( tcb_def           *  const    tcb_ptr                 );
  848.  
  849. extern  pascal  OSErr   X25_Read                ( tcb_def           *  const    tcb_ptr                 );
  850. extern  pascal  OSErr   X25_Write               ( tcb_def           *  const    tcb_ptr                 );
  851. extern  pascal  OSErr   X25_Kill_Read           ( tcb_def           *  const    tcb_ptr                 );
  852. extern  pascal  OSErr   X25_Kill_Write          ( tcb_def           *  const    tcb_ptr                 );
  853.  
  854. extern  pascal  OSErr   X25_Connect             ( tcb_def           *  const    tcb_ptr                 );
  855. extern  pascal  OSErr   X25_Call                ( tcb_def           *  const    tcb_ptr                 );
  856. extern  pascal  OSErr   X25_Listen              ( tcb_def           *  const    tcb_ptr                 );
  857. extern  pascal  OSErr   X25_Accept              ( tcb_def           *  const    tcb_ptr                 );
  858. extern  pascal  OSErr   X25_Discnct             ( tcb_def           *  const    tcb_ptr                 );
  859.  
  860. extern  pascal  OSErr   X25_encode_call_reg     ( tcb_def           *  const    tcb_ptr                 );
  861. extern  pascal  OSErr   X25_encode_call_req     ( tcb_def           *  const    tcb_ptr                 );
  862. extern  pascal  OSErr   X25_encode_call_acpt    ( tcb_def           *  const    tcb_ptr                 );
  863. extern  pascal  OSErr   X25_encode_clear        ( tcb_def           *  const    tcb_ptr                 );
  864. extern  pascal  OSErr   X25_encode_interrupt    ( tcb_def           *  const    tcb_ptr                 );
  865. extern  pascal  OSErr   X25_encode_reset        ( tcb_def           *  const    tcb_ptr                 );
  866. extern  pascal  OSErr   X25_encode_text         ( tcb_def           *  const    tcb_ptr                 );
  867. extern  pascal  OSErr   X25_encode_data         ( tcb_def           *  const    tcb_ptr                 );
  868.  
  869. extern  pascal  OSErr   X25_decode_header       ( tcb_def           *  const    tcb_ptr                 ,
  870.                                                   message_type_def  *           message_type_ptr        ,
  871.                                                   short             *           packet_type_ptr         );
  872.  
  873. extern  pascal  OSErr   X25_decode_clear        ( tcb_def           *  const    tcb_ptr                 );
  874. extern  pascal  OSErr   X25_decode_interrupt    ( tcb_def           *  const    tcb_ptr                 );
  875. extern  pascal  OSErr   X25_decode_reset        ( tcb_def           *  const    tcb_ptr                 );
  876. extern  pascal  OSErr   X25_decode_text         ( tcb_def           *  const    tcb_ptr                 );
  877. extern  pascal  OSErr   X25_decode_data         ( tcb_def           *  const    tcb_ptr                 );
  878. extern  pascal  OSErr   X25_decode_userdata     ( tcb_def           *  const    tcb_ptr                 );
  879.  
  880. extern  pascal  OSErr   X25_decode_diagnostic   ( tcb_def           *  const    tcb_ptr                 );
  881.  
  882. extern  pascal  OSErr   X25_decode_admin        ( tcb_def           *  const    tcb_ptr                 );
  883. extern  pascal  OSErr   X25_Admin_Msg           ( tcb_def           *  const    tcb_ptr                 );
  884.  
  885. extern  pascal  OSErr   X25_Server_State        ( tcb_def           *  const    tcb_ptr                 ,
  886.                                                   server_state_def  *  const    server_state_ptr        );
  887. extern  pascal  OSErr   X25_VC_Parameters       ( tcb_def           *  const    tcb_ptr                 ,
  888.                                                   vc_parameters_def *  const    info_ptr                );
  889.  
  890. extern  pascal  OSErr   X25_Link_State          ( tcb_def           *  const    tcb_ptr                 );
  891. extern  pascal  OSErr   X25_Server_Config       ( tcb_def           *  const    tcb_ptr                 );
  892. extern  pascal  OSErr   X25_Link_Config         ( tcb_def           *  const    tcb_ptr                 );
  893. extern  pascal  OSErr   X25_Link_Statistics     ( tcb_def           *  const    tcb_ptr                 );
  894. extern  pascal  OSErr   X25_VC_Statistics       ( tcb_def           *  const    tcb_ptr                 );
  895. extern  pascal  long    X25_msg_header_size     (                                                       );
  896.  
  897. extern  pascal  OSErr   X25_error_decode        ( OSErr                         return_value            ,
  898.                                                   OSErr                         status_value            ,
  899.                                                   char              *  const    user_msg_ptr            );
  900.  
  901. extern  pascal  OSErr   X25_set_read_hook       ( tcb_def           *  const    tcb_ptr                 ,
  902.                                                   ProcPtr                       hook_routine            );
  903. extern  pascal  OSErr   X25_set_write_hook      ( tcb_def           *  const    tcb_ptr                 ,
  904.                                                   ProcPtr                       hook_routine            );
  905.  
  906. extern  pascal  long    X25_StackSpace          (                                                       );
  907. extern  pascal  OSErr   X25_check_system        (                                                       );
  908.  
  909.  
  910. /* **************************************************************************************************** */
  911. /* *                                                                                                  * */
  912. /* *    End                                                                                           * */
  913. /* *                                                                                                  * */
  914. /* **************************************************************************************************** */
  915.  
  916. #endif  _X25_Interface_Includes_
  917.