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#ifndef NO_DDP 28 29#include <sys/types.h> 30#include <sys/cdefs.h> 31#include <netatalk/endian.h> 32#include <netatalk/at.h> 33#include <atalk/atp.h> 34#include <atalk/afp.h> 35#include <atalk/server_child.h> 36 37#define ASP_HDRSIZ 4 38#define ASP_CMDSIZ 578 39 40#define ASP_MAXPACKETS 8 41#define ASP_CMDMAXSIZ (ASP_CMDSIZ + ASP_HDRSIZ) 42#define ASP_DATASIZ (ASP_CMDSIZ*ASP_MAXPACKETS) 43#define ASP_DATAMAXSIZ ((ASP_CMDSIZ + ASP_HDRSIZ)*ASP_MAXPACKETS) 44 45typedef struct ASP { 46 ATP asp_atp; 47 struct sockaddr_at asp_sat; 48 u_int8_t asp_wss; 49 u_int8_t asp_sid; 50 union { 51 struct { 52 char *as_status; 53 int as_slen; 54 } asu_status; 55 u_int16_t asu_seq; 56 } asp_u; 57#define asp_status asp_u.asu_status.as_status 58#define asp_slen asp_u.asu_status.as_slen 59#define asp_seq asp_u.asu_seq 60 int asp_flags; 61 char child, inited, *commands; 62 char cmdbuf[ASP_CMDMAXSIZ]; 63 char data[ASP_DATAMAXSIZ]; 64 size_t cmdlen, datalen; 65 off_t read_count, write_count; 66} *ASP; 67 68#define ASPFL_SLS 1 69#define ASPFL_SSS 2 70 71#define ASPFUNC_CLOSE 1 72#define ASPFUNC_CMD 2 73#define ASPFUNC_STAT 3 74#define ASPFUNC_OPEN 4 75#define ASPFUNC_TICKLE 5 76#define ASPFUNC_WRITE 6 77#define ASPFUNC_WRTCONT 7 78#define ASPFUNC_ATTN 8 79 80#define ASPERR_OK 0x0000 81#define ASPERR_BADVERS 0xfbd6 82#define ASPERR_BUFSMALL 0xfbd5 83#define ASPERR_NOSESS 0xfbd4 84#define ASPERR_NOSERV 0xfbd3 85#define ASPERR_PARM 0xfbd2 86#define ASPERR_SERVBUSY 0xfbd1 87#define ASPERR_SESSCLOS 0xfbd0 88#define ASPERR_SIZERR 0xfbcf 89#define ASPERR_TOOMANY 0xfbce 90#define ASPERR_NOACK 0xfbcd 91 92extern ASP asp_init (ATP); 93extern void asp_setstatus (ASP, char *, const int); 94extern ASP asp_getsession (ASP, server_child *, const int); 95extern int asp_close (ASP); 96extern int asp_shutdown (ASP); 97extern int asp_attention (ASP, AFPUserBytes); 98extern int asp_getrequest (ASP); 99extern int asp_cmdreply (ASP, int); 100extern int asp_wrtcont (ASP, char *, size_t *); 101#define asp_wrtreply(a,b) asp_cmdreply((a), (b)) 102extern void asp_kill (int); 103extern int asp_tickle (ASP, const u_int8_t, struct sockaddr_at *); 104extern void asp_stop_tickle (void); 105 106#endif /* NO_DDP */ 107#endif 108