private.h revision 9c9af2590af49bb395bc8d2eace0f2d4ea16d165
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/*
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Copyright (c) 2000-2001 Boris Popov
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * All rights reserved.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross *
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Redistribution and use in source and binary forms, with or without
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * modification, are permitted provided that the following conditions
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * are met:
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * 1. Redistributions of source code must retain the above copyright
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * notice, this list of conditions and the following disclaimer.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * 2. Redistributions in binary form must reproduce the above copyright
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * notice, this list of conditions and the following disclaimer in the
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * documentation and/or other materials provided with the distribution.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * 3. All advertising materials mentioning features or use of this software
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * must display the following acknowledgement:
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * This product includes software developed by Boris Popov.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * 4. Neither the name of the author nor the names of any co-contributors
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * may be used to endorse or promote products derived from this software
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * without specific prior written permission.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross *
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * SUCH DAMAGE.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/*
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Use is subject to license terms.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#ifndef _PRIVATE_H
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define _PRIVATE_H
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/*
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Private declarations for this library.
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Moved from smb_lib.h
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#include <inttypes.h>
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/*
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * BSD-style mbuf simulation
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossstruct mbuf {
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross int m_len;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross int m_maxlen;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross char *m_data;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross struct mbuf *m_next;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross};
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rosstypedef struct mbuf mbuf_t;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#if 0 /* in smb_lib.h */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossstruct mbdata {
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross struct mbuf *mb_top;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross struct mbuf *mb_cur;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross char *mb_pos;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross int mb_count;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross};
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rosstypedef struct mbdata mbdata_t;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#endif
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define M_ALIGNFACTOR (sizeof (long))
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define M_ALIGN(len) (((len) + M_ALIGNFACTOR - 1) & ~(M_ALIGNFACTOR - 1))
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define M_BASESIZE (sizeof (struct mbuf))
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define M_MINSIZE (256 - M_BASESIZE)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define M_TOP(m) ((char *)(m) + M_BASESIZE)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define M_TRAILINGSPACE(m) ((m)->m_maxlen - (m)->m_len)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define mtod(m, t) ((t)(m)->m_data)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/*
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * request handling structures
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossstruct smb_rq {
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross uchar_t rq_cmd;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross struct mbdata rq_rq;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross struct mbdata rq_rp;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross struct smb_ctx *rq_ctx;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross int rq_wcount;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross int rq_bcount;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross};
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rosstypedef struct smb_rq smb_rq_t;
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define smb_rq_getrequest(rqp) (&(rqp)->rq_rq)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#define smb_rq_getreply(rqp) (&(rqp)->rq_rp)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint smb_rq_init(struct smb_ctx *, uchar_t, size_t, struct smb_rq **);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossvoid smb_rq_done(struct smb_rq *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossvoid smb_rq_wend(struct smb_rq *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint smb_rq_simple(struct smb_rq *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint smb_rq_dmem(struct mbdata *, const char *, size_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint smb_rq_dstring(struct mbdata *, const char *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/*
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Message compose/parse
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint m_getm(struct mbuf *, size_t, struct mbuf **);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint m_lineup(struct mbuf *, struct mbuf **);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_init(struct mbdata *, size_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_initm(struct mbdata *, struct mbuf *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_done(struct mbdata *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_fit(struct mbdata *mbp, size_t size, char **pp);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_uint8(struct mbdata *, uint8_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_uint16be(struct mbdata *, uint16_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_uint16le(struct mbdata *, uint16_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_uint32be(struct mbdata *, uint32_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_uint32le(struct mbdata *, uint32_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_uint64be(struct mbdata *, uint64_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_uint64le(struct mbdata *, uint64_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_mem(struct mbdata *, const char *, size_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_pstring(struct mbdata *mbp, const char *s);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_put_mbuf(struct mbdata *, struct mbuf *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint8(struct mbdata *, uint8_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint16(struct mbdata *, uint16_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint16le(struct mbdata *, uint16_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint16be(struct mbdata *, uint16_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint32(struct mbdata *, uint32_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint32be(struct mbdata *, uint32_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint32le(struct mbdata *, uint32_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint64(struct mbdata *, uint64_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint64be(struct mbdata *, uint64_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_uint64le(struct mbdata *, uint64_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint mb_get_mem(struct mbdata *, char *, size_t);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/*
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross * Network stuff (NetBIOS and otherwise)
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nb_name_len(struct nb_name *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross/* new flag UCflag. 1=uppercase,0=don't */
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nb_name_encode(struct nb_name *, uchar_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nb_encname_len(const uchar_t *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nb_snballoc(int namelen, struct sockaddr_nb **);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossvoid nb_snbfree(struct sockaddr *);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nb_sockaddr(struct sockaddr *, struct nb_name *, struct sockaddr_nb **);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nbns_resolvename(const char *, struct nb_ctx *, struct sockaddr **);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nbns_getnodestatus(struct sockaddr *targethost,
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross struct nb_ctx *ctx, char *system, char *workgroup);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossint nb_getlocalname(char *name, size_t maxlen);
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Rossextern uchar_t nls_lower[256], nls_upper[256];
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross
9c9af2590af49bb395bc8d2eace0f2d4ea16d165Gordon Ross#endif /* _PRIVATE_H */