1/* 2 * Copyright (c) 1990,1991 Regents of The University of Michigan. 3 * All Rights Reserved. 4 * 5 * Permission to use, copy, modify, and distribute this software and 6 * its documentation for any purpose and without fee is hereby granted, 7 * provided that the above copyright notice appears in all copies and 8 * that both that copyright notice and this permission notice appear 9 * in supporting documentation, and that the name of The University 10 * of Michigan not be used in advertising or publicity pertaining to 11 * distribution of the software without specific, written prior 12 * permission. This software is supplied as is without expressed or 13 * implied warranties of any kind. 14 * 15 * Research Systems Unix Group 16 * The University of Michigan 17 * c/o Mike Clark 18 * 535 W. William Street 19 * Ann Arbor, Michigan 20 * +1-313-763-0525 21 * netatalk@itd.umich.edu 22 */ 23 24#ifndef _ATALK_ASP_H 25#define _ATALK_ASP_H 1 26 27#include <sys/types.h> 28#include <sys/cdefs.h> 29#include <netatalk/endian.h> 30#include <netatalk/at.h> 31#include <atalk/atp.h> 32#include <atalk/afp.h> 33#include <atalk/server_child.h> 34 35#define ASP_HDRSIZ 4 36#define ASP_CMDSIZ 578 37 38#define ASP_MAXPACKETS 8 39#define ASP_CMDMAXSIZ (ASP_CMDSIZ + ASP_HDRSIZ) 40#define ASP_DATASIZ (ASP_CMDSIZ*ASP_MAXPACKETS) 41#define ASP_DATAMAXSIZ ((ASP_CMDSIZ + ASP_HDRSIZ)*ASP_MAXPACKETS) 42 43typedef struct ASP { 44 ATP asp_atp; 45 struct sockaddr_at asp_sat; 46 u_int8_t asp_wss; 47 u_int8_t asp_sid; 48 union { 49 struct { 50 char *as_status; 51 int as_slen; 52 } asu_status; 53 u_int16_t asu_seq; 54 } asp_u; 55#define asp_status asp_u.asu_status.as_status 56#define asp_slen asp_u.asu_status.as_slen 57#define asp_seq asp_u.asu_seq 58 int asp_flags; 59 char child, inited, *commands; 60 char cmdbuf[ASP_CMDMAXSIZ]; 61 char data[ASP_DATAMAXSIZ]; 62 size_t cmdlen, datalen; 63 off_t read_count, write_count; 64} *ASP; 65 66#define ASPFL_SLS 1 67#define ASPFL_SSS 2 68 69#define ASPFUNC_CLOSE 1 70#define ASPFUNC_CMD 2 71#define ASPFUNC_STAT 3 72#define ASPFUNC_OPEN 4 73#define ASPFUNC_TICKLE 5 74#define ASPFUNC_WRITE 6 75#define ASPFUNC_WRTCONT 7 76#define ASPFUNC_ATTN 8 77 78#define ASPERR_OK 0x0000 79#define ASPERR_BADVERS 0xfbd6 80#define ASPERR_BUFSMALL 0xfbd5 81#define ASPERR_NOSESS 0xfbd4 82#define ASPERR_NOSERV 0xfbd3 83#define ASPERR_PARM 0xfbd2 84#define ASPERR_SERVBUSY 0xfbd1 85#define ASPERR_SESSCLOS 0xfbd0 86#define ASPERR_SIZERR 0xfbcf 87#define ASPERR_TOOMANY 0xfbce 88#define ASPERR_NOACK 0xfbcd 89 90extern ASP asp_init (ATP); 91extern void asp_setstatus (ASP, char *, const int); 92extern ASP asp_getsession (ASP, server_child *, const int); 93extern int asp_close (ASP); 94extern int asp_shutdown (ASP); 95extern int asp_attention (ASP, AFPUserBytes); 96extern int asp_getrequest (ASP); 97extern int asp_cmdreply (ASP, int); 98extern int asp_wrtcont (ASP, char *, size_t *); 99#define asp_wrtreply(a,b) asp_cmdreply((a), (b)) 100extern void asp_kill (int); 101extern int asp_tickle (ASP, const u_int8_t, struct sockaddr_at *); 102extern void asp_stop_tickle (void); 103 104#endif 105