1/* 2 * Copyright (c) 2000-2001, Boris Popov 3 * All rights reserved. 4 * 5 * Portions Copyright (C) 2001 - 2007 Apple Inc. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. All advertising materials mentioning features or use of this software 16 * must display the following acknowledgement: 17 * This product includes software developed by Boris Popov. 18 * 4. Neither the name of the author nor the names of any co-contributors 19 * may be used to endorse or promote products derived from this software 20 * without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 23 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32 * SUCH DAMAGE. 33 * 34 */ 35 36#ifndef _NETSMB_SMB_TRAN_H_ 37#define _NETSMB_SMB_TRAN_H_ 38 39#include <sys/socket.h> 40 41/* 42 * Known transports 43 */ 44#define SMBT_NBTCP 1 45 46/* 47 * Transport parameters 48 */ 49#define SMBTP_SNDSZ 1 /* R - int */ 50#define SMBTP_RCVSZ 2 /* R - int */ 51#define SMBTP_TIMEOUT 3 /* RW - struct timespec */ 52#define SMBTP_SELECTID 4 /* RW - (void *) */ 53#define SMBTP_UPCALL 5 /* RW - (* void)(void *) */ 54 55struct smb_tran_ops; 56 57struct smb_tran_desc { 58 sa_family_t tr_type; 59 int (*tr_create)(struct smb_vc *vcp); /* smb_nbst_create */ 60 int (*tr_done)(struct smb_vc *vcp); /* smb_nbst_done */ 61 int (*tr_bind)(struct smb_vc *vcp, struct sockaddr *sap); /* smb_nbst_bind */ 62 int (*tr_connect)(struct smb_vc *vcp, struct sockaddr *sap); /* smb_nbst_connect */ 63 int (*tr_disconnect)(struct smb_vc *vcp); /* smb_nbst_disconnect */ 64 int (*tr_send)(struct smb_vc *vcp, mbuf_t m0); /* smb_nbst_send */ 65 int (*tr_recv)(struct smb_vc *vcp, mbuf_t *mpp); /* smb_nbst_recv */ 66 void (*tr_timo)(struct smb_vc *vcp); /* smb_nbst_timo */ 67 int (*tr_getparam)(struct smb_vc *vcp, int param, void *data); /* smb_nbst_getparam */ 68 int (*tr_setparam)(struct smb_vc *vcp, int param, void *data); /* smb_nbst_setparam */ 69 int (*tr_fatal)(struct smb_vc *vcp, int error); /* smb_nbst_fatal */ 70 LIST_ENTRY(smb_tran_desc) tr_link; 71}; 72 73#define SMB_TRAN_CREATE(vcp) (vcp)->vc_tdesc->tr_create(vcp) 74#define SMB_TRAN_DONE(vcp) (vcp)->vc_tdesc->tr_done(vcp) 75#define SMB_TRAN_BIND(vcp,sap) (vcp)->vc_tdesc->tr_bind(vcp,sap) 76#define SMB_TRAN_CONNECT(vcp,sap) (vcp)->vc_tdesc->tr_connect(vcp,sap) 77#define SMB_TRAN_DISCONNECT(vcp) (vcp)->vc_tdesc->tr_disconnect(vcp) 78#define SMB_TRAN_SEND(vcp,m0) (vcp)->vc_tdesc->tr_send(vcp,m0) 79#define SMB_TRAN_RECV(vcp,m) (vcp)->vc_tdesc->tr_recv(vcp,m) 80#define SMB_TRAN_TIMO(vcp) (vcp)->vc_tdesc->tr_timo(vcp) 81#define SMB_TRAN_GETPARAM(vcp,par,data) (vcp)->vc_tdesc->tr_getparam(vcp, par, data) 82#define SMB_TRAN_SETPARAM(vcp,par,data) (vcp)->vc_tdesc->tr_setparam(vcp, par, data) 83#define SMB_TRAN_FATAL(vcp, error) (vcp)->vc_tdesc->tr_fatal(vcp, error) 84 85#endif /* _NETSMB_SMB_TRAN_H_ */ 86