#ifndef _PRIVATE_H
#define _PRIVATE_H
#include <inttypes.h>
#include <sys/byteorder.h>
#include <sys/ccompile.h>
#include <netsmb/mchain.h>
#include <netsmb/netbios.h>
extern void dprint(const char *, const char *, ...)
__PRINTFLIKE(2);
#if defined(DEBUG) || defined(__lint)
#define DPRINT(...) dprint(__func__, __VA_ARGS__)
#else
#define DPRINT(...) ((void)0)
#endif
int m_getm(struct mbuf *, int, struct mbuf **);
int m_lineup(struct mbuf *, struct mbuf **);
size_t m_totlen(struct mbuf *);
int mb_init_sz(struct mbdata *, int);
int mb_fit(struct mbdata *mbp, int size, char **pp);
int mb_put_string(struct mbdata *mbp, const char *s, int);
int mb_put_astring(struct mbdata *mbp, const char *s);
int mb_put_ustring(struct mbdata *mbp, const char *s);
int md_get_string(struct mbdata *, char **, int);
int md_get_astring(struct mbdata *, char **);
int md_get_ustring(struct mbdata *, char **);
struct nb_name;
struct sockaddr_nb;
extern int smb_recv_timeout;
void dump_ctx(char *, struct smb_ctx *);
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_name_encode(struct mbdata *, struct nb_name *);
int nb_encname_len(const uchar_t *);
int nb_snballoc(struct sockaddr_nb **);
void nb_snbfree(struct sockaddr *);
int nb_sockaddr(struct sockaddr *, struct nb_name *, struct sockaddr_nb **);
int nbns_getaddrinfo(const char *name, struct nb_ctx *nbc,
struct addrinfo **res);
int nbns_resolvename(const char *, struct nb_ctx *, struct sockaddr **);
int get_xti_err(int);
struct smb_bitname {
uint_t bn_bit;
char *bn_name;
};
typedef struct smb_bitname smb_bitname_t;
char *smb_printb(char *, int, const struct smb_bitname *);
int smb_ctx_getaddr(struct smb_ctx *ctx);
int smb_ctx_gethandle(struct smb_ctx *ctx);
int smb_iod_start(struct smb_ctx *);
const char *smb_iod_state_name(enum smbiod_state st);
void smb_time_local2server(struct timeval *, int, long *);
void smb_time_server2local(ulong_t, int, struct timeval *);
void smb_time_NT2local(uint64_t, int, struct timeval *);
void smb_time_local2NT(struct timeval *, int, uint64_t *);
int smb_getlocalname(char **);
int smb_get_authentication(struct smb_ctx *);
int smb_get_keychain(struct smb_ctx *ctx);
void smb_hexdump(const void *buf, int len);
int ssp_ctx_create_client(struct smb_ctx *, struct mbdata *);
int ssp_ctx_next_token(struct smb_ctx *, struct mbdata *, struct mbdata *);
void ssp_ctx_destroy(struct smb_ctx *);
#ifdef KICONV_SUPPORT
extern uchar_t nls_lower[256], nls_upper[256];
#endif
#endif