1/* 2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. 3 * 4 * @APPLE_OSREFERENCE_LICENSE_HEADER_START@ 5 * 6 * This file contains Original Code and/or Modifications of Original Code 7 * as defined in and that are subject to the Apple Public Source License 8 * Version 2.0 (the 'License'). You may not use this file except in 9 * compliance with the License. The rights granted to you under the License 10 * may not be used to create, or enable the creation or redistribution of, 11 * unlawful or unlicensed copies of an Apple operating system, or to 12 * circumvent, violate, or enable the circumvention or violation of, any 13 * terms of an Apple operating system software license agreement. 14 * 15 * Please obtain a copy of the License at 16 * http://www.opensource.apple.com/apsl/ and read it before using this file. 17 * 18 * The Original Code and all software distributed under the License are 19 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 20 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 21 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 22 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 23 * Please see the License for the specific language governing rights and 24 * limitations under the License. 25 * 26 * @APPLE_OSREFERENCE_LICENSE_HEADER_END@ 27 */ 28/* 29 * 30 * ORIGINS: 82 31 * 32 * (C) COPYRIGHT Apple Computer, Inc. 1992-1996 33 * All Rights Reserved 34 * 35 */ 36 37#ifndef _NETAT_ASP_H_ 38#define _NETAT_ASP_H_ 39#include <sys/appleapiopts.h> 40 41#ifdef __APPLE_API_OBSOLETE 42 43#define ASP_Version 0x100 44 45#define ASPFUNC_CloseSess 1 46#define ASPFUNC_Command 2 47#define ASPFUNC_GetStatus 3 48#define ASPFUNC_OpenSess 4 49#define ASPFUNC_Tickle 5 50#define ASPFUNC_Write 6 51#define ASPFUNC_WriteContinue 7 52#define ASPFUNC_Attention 8 53#define ASPFUNC_CmdReply 9 54 55#define ASPIOC 210 /* AT_MID_ASP */ 56#define ASPIOC_ClientBind ((ASPIOC<<8) | 1) 57#define ASPIOC_CloseSession ((ASPIOC<<8) | 2) 58#define ASPIOC_GetLocEntity ((ASPIOC<<8) | 3) 59#define ASPIOC_GetRemEntity ((ASPIOC<<8) | 4) 60#define ASPIOC_GetSession ((ASPIOC<<8) | 5) 61#define ASPIOC_GetStatus ((ASPIOC<<8) | 6) 62#define ASPIOC_ListenerBind ((ASPIOC<<8) | 7) 63#define ASPIOC_OpenSession ((ASPIOC<<8) | 8) 64#define ASPIOC_StatusBlock ((ASPIOC<<8) | 9) 65#define ASPIOC_SetPid ((ASPIOC<<8) |10) 66#define ASPIOC_GetSessId ((ASPIOC<<8) |11) 67#define ASPIOC_EnableSelect ((ASPIOC<<8) |12) /* not needed */ 68#define ASPIOC_Look ((ASPIOC<<8) |13) 69 70#define MOREDATA 1 71 72/* The following ASP error codes are defined in Inside AppleTalk: */ 73 74#define ASPERR_NoError 0 75#define ASPERR_BadVersNum -1066 76#define ASPERR_BufTooSmall -1067 77#define ASPERR_NoMoreSessions -1068 78#define ASPERR_NoServers -1069 79#define ASPERR_ParamErr -1070 80#define ASPERR_ServerBusy -1071 81#define ASPERR_SessClosed -1072 82#define ASPERR_SizeErr -1073 83#define ASPERR_TooManyClients -1074 84#define ASPERR_NoAck -1075 85 86/* These ASP error codes were apparently defined later: */ 87 88#define ASPERR_NoSuchDevice -1058 89#define ASPERR_BindErr -1059 90#define ASPERR_CmdReply -1060 91#define ASPERR_CmdRequest -1061 92#define ASPERR_SystemErr -1062 93#define ASPERR_ProtoErr -1063 94#define ASPERR_NoSuchEntity -1064 95#define ASPERR_RegisterErr -1065 96 97typedef struct { 98 at_inet_t SLSEntityIdentifier; 99 at_retry_t Retry; 100 int StatusBufferSize; 101} asp_status_cmd_t; 102 103typedef struct { 104 at_inet_t SLSEntityIdentifier; 105 at_retry_t Retry; 106 unsigned short TickleInterval; 107 unsigned short SessionTimer; 108} asp_open_cmd_t; 109 110typedef struct { 111 int Primitive; 112 int CmdResult; 113 unsigned short ReqRefNum; 114 unsigned short Filler; 115} asp_cmdreply_req_t; 116 117typedef struct { 118 int Primitive; 119 int CmdResult; 120} asp_cmdreply_ind_t; 121 122typedef struct { 123 int Primitive; 124 unsigned short ReqRefNum; 125 unsigned char ReqType; 126 unsigned char Filler; 127} asp_command_ind_t; 128 129union asp_primitives { 130 int Primitive; 131 asp_cmdreply_ind_t CmdReplyInd; 132 asp_cmdreply_req_t CmdReplyReq; 133 asp_command_ind_t CommandInd; 134}; 135 136#ifdef KERNEL_PRIVATE 137 138#define ASPSTATE_Close 0 139#define ASPSTATE_Idle 1 140#define ASPSTATE_WaitingForGetStatusRsp 2 141#define ASPSTATE_WaitingForOpenSessRsp 3 142#define ASPSTATE_WaitingForCommandRsp 4 143#define ASPSTATE_WaitingForWriteContinue 5 144#define ASPSTATE_WaitingForWriteRsp 6 145#define ASPSTATE_WaitingForWriteContinueRsp 7 146#define ASPSTATE_WaitingForCloseSessRsp 8 147#ifdef NOT_USED 148#define ASPSTATE_WaitingForCfgAck 9 149#endif 150 151/* 152 * ATP state block 153 */ 154typedef struct { 155 gref_t *atp_gref; /* gref must be the first entry */ 156 int pid; /* process id, must be the second entry */ 157 gbuf_t *atp_msgq; /* data msg, must be the third entry */ 158 unsigned char dflag; /* structure flag, must be the fourth entry */ 159 unsigned char filler[3]; 160} atp_state_t; 161 162/* 163 * ASP word 164 */ 165typedef struct { 166 unsigned char func; 167 unsigned char param1; 168 unsigned short param2; 169} asp_word_t; 170 171struct asp_scb; 172typedef void (*asp_tmo_func)(struct asp_scb *); 173 174/* 175 * ASP session control block 176 */ 177typedef struct asp_scb { 178 gref_t *gref; /* read queue pointer, must be the first entry */ 179 int pid; /* process id, must be the second entry */ 180 atp_state_t *atp_state; /* atp state info, must be the third entry */ 181 unsigned char dflag; /* structure flag, must be the fourth entry */ 182 unsigned char state; 183 unsigned char sess_id; 184 unsigned char tmo_delta; 185 unsigned char tmo_cnt; 186 unsigned char rem_socket; 187 unsigned char rem_node; 188 unsigned char magic_num; 189 unsigned short snd_seq_num; 190 unsigned short rcv_seq_num; 191 unsigned short filler; 192 unsigned short tickle_tid; 193 unsigned short tickle_interval; 194 unsigned short session_timer; 195 unsigned short attn_tid; 196 unsigned char attn_flag; 197 unsigned char req_flag; 198 gbuf_t *req_msgq; 199 unsigned short wrt_seq_num; 200 unsigned char get_wait; 201 unsigned char ioc_wait; 202 at_retry_t cmd_retry; 203 at_inet_t loc_addr; 204 at_inet_t rem_addr; 205 at_inet_t svc_addr; 206 gbuf_t *sess_ioc; 207 gbuf_t *stat_msg; 208 asp_tmo_func tmo_func; 209 struct asp_scb *next_tmo; 210 struct asp_scb *prev_tmo; 211 struct asp_scb *sess_scb; 212 struct asp_scb *next_scb; 213 struct asp_scb *prev_scb; 214 unsigned char sel_on; /* not needed */ 215 unsigned char user; 216 unsigned char rcv_cnt; 217 unsigned char snd_stop; 218 unsigned char reply_socket; 219 unsigned char if_num; 220 unsigned char pad[2]; 221 atlock_t lock; 222 atlock_t delay_lock; 223 atevent_t event; 224 atevent_t delay_event; 225} asp_scb_t; 226 227 228int ASPgetmsg(gref_t *, strbuf_t *, strbuf_t *, gbuf_t **, int *, int *); 229int ASPputmsg(gref_t *, strbuf_t *, strbuf_t *, gbuf_t *, int , int *); 230void asp_init(void); 231void asp_ack_reply(gref_t *, gbuf_t *); 232void asp_nak_reply(gref_t *, gbuf_t *); 233int asp_wput(gref_t *, gbuf_t *); 234void asp_clock(void *); 235void asp_clock_locked(void *); 236int asp_open(gref_t *); 237int asp_close(gref_t *); 238 239 240#endif /* KERNEL_PRIVATE */ 241#endif /* __APPLE_API_OBSOLETE */ 242#endif /* _NETAT_ASP_H_ */ 243