private.h revision 613a2f6ba31e891e3d947a356daf5e563d43c1ce
/*
* Copyright (c) 2000-2001 Boris Popov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Boris Popov.
* 4. Neither the name of the author nor the names of any co-contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Copyright 2009 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _PRIVATE_H
#define _PRIVATE_H
/*
* Private declarations for this library.
* Moved from smb_lib.h
*/
#include <inttypes.h>
#include <sys/byteorder.h>
#include <sys/ccompile.h>
extern void dprint(const char *, const char *, ...)
__PRINTFLIKE(2);
#else
#define DPRINT(...) ((void)0)
#endif
/*
* Flags bits in ct_vcflags (copied from smb_conn.h)
* Pass these to the driver?
*/
/*
* BSD-style mbuf simulation
*/
struct mbuf {
int m_len;
int m_maxlen;
char *m_data;
};
struct mbdata {
char *mb_pos;
int mb_count;
};
/*
* Note: Leaving a little space (8 bytes) between the
* mbuf header and the start of the data so we can
* prepend a NetBIOS header in that space.
*/
#define M_ALIGNFACTOR (sizeof (long))
#define M_TOP(m) ((char *)(m) + M_BASESIZE)
/*
* request handling structures
*/
struct smb_rq {
int rq_rpbufsz;
/* See rq_[bw]{start,end} functions */
char *rq_wcntp;
int rq_wcbase;
char *rq_bcntp;
int rq_bcbase;
};
void smb_rq_done(struct smb_rq *);
void smb_rq_bstart(struct smb_rq *);
void smb_rq_bend(struct smb_rq *);
void smb_rq_wstart(struct smb_rq *);
void smb_rq_wend(struct smb_rq *);
int smb_rq_simple(struct smb_rq *);
int smb_rq_sign(struct smb_rq *);
int smb_rq_verify(struct smb_rq *);
/*
*/
int mb_get_string(struct mbdata *, char **, int);
int mb_get_astring(struct mbdata *, char **);
int mb_get_ustring(struct mbdata *, char **);
/*
* Network stuff (NetBIOS and otherwise)
*/
struct nb_name;
struct sockaddr_nb;
extern int smb_recv_timeout; /* seconds */
void dump_addrinfo(struct addrinfo *);
void dump_sockaddr(struct sockaddr *);
int nb_ssn_request(struct smb_ctx *, char *);
int nb_name_len(struct nb_name *);
int nb_encname_len(const uchar_t *);
int nb_snballoc(struct sockaddr_nb **);
void nb_snbfree(struct sockaddr *);
int get_xti_err(int);
/*
* Private SMB stuff
*/
struct smb_bitname {
char *bn_name;
};
typedef struct smb_bitname smb_bitname_t;
char *smb_printb(char *, int, const struct smb_bitname *);
int smb_ssnsetup_null(struct smb_ctx *);
int smb_ssnsetup_ntlm1(struct smb_ctx *);
int smb_ssnsetup_ntlm2(struct smb_ctx *);
void smb_time_local2server(struct timeval *, int, long *);
int smb_getlocalname(char **);
int smb_get_authentication(struct smb_ctx *);
/* See ssp.c */
void ssp_ctx_destroy(struct smb_ctx *);
#ifdef KICONV_SUPPORT
/* See nls.c (get rid of this?) */
#endif /* KICONV_SUPPORT */
#endif /* _PRIVATE_H */