25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER START
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * The contents of this file are subject to the terms of the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Common Development and Distribution License (the "License").
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You may not use this file except in compliance with the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * See the License for the specific language governing permissions
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * and limitations under the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER END
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Use is subject to license terms.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifndef _SMBSRV_NMPIPES_H
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define _SMBSRV_NMPIPES_H
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * This file defines pre-defined and system common named pipes.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Named pipes are a simple IPC mechanism supported by Windows 9x, NT
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * and 2000. The Windows named pipe implementation supports reliable
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * one-way and two-way transport independent network messaging. The
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * names follow the universal naming convention (UNC) defined for the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Windows redirector: \\[server]\[share]\[path]name. There is a good
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * overview of named pipes in Network Programming for Microsoft Windows
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Chapter 4. The redirector is described in Chapter 2. UNC names are
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * case-insensitive.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Network Programming for Microsoft Windows
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Anthony Jones and Jim Ohlund
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Microsoft Press, ISBN 0-7356-0560-2
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Microsoft RPC, which is derived from DCE RPC, uses SMB named pipes
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * as its transport mechanism. In addition to the pipe used to open
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * each connection, a named pipe also appears in the bind response as
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * a secondary address port. Sometimes the secondary address port is
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * the same and sometimes it is different. The following associations
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * have been observed.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * LSARPC lsass
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * NETLOGON lsass
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * SAMR lsass
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * SPOOLSS spoolss
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * SRVSVC ntsvcs
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * SVCCTL ntsvcs
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * WINREG winreg
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * WKSSVC ntsvcs
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * EVENTLOG ntsvcs
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * LLSRPC llsrpc
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Further information on RPC named pipes is available in the following
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * references.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * RPC for NT
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Guy R. Eddon
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * R&D PUblications, ISBN 0-87930-450-2
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Network Programming in Windows NT
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Alok K. Sinha
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Addison-Wesley, ISBN 0-201-59056-5
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * DCE/RPC over SMB Samba and Windows NT Domain Internals
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Luke Kenneth Casson Leighton
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Macmillan Technical Publishing, ISBN 1-57870-150-3
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef __cplusplus
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern "C" {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Well-known or pre-defined Windows named pipes. Typically used
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * with SmbNtCreateAndX and/or SmbTransactNmPipe. When passed to
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * SmbNtCreateAndX the \PIPE prefix is often missing. These names
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * are presented as observed on the wire but should be treated in
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * a case-insensitive manner.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_LANMAN "\\PIPE\\LANMAN"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_NETLOGON "\\PIPE\\NETLOGON"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_LSARPC "\\PIPE\\lsarpc"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_SAMR "\\PIPE\\samr"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_SPOOLSS "\\PIPE\\spoolss"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_SRVSVC "\\PIPE\\srvsvc"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_SVCCTL "\\PIPE\\svcctl"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_WINREG "\\PIPE\\winreg"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_WKSSVC "\\PIPE\\wkssvc"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_EVENTLOG "\\PIPE\\EVENTLOG"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_LSASS "\\PIPE\\lsass"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_NTSVCS "\\PIPE\\ntsvcs"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_ATSVC "\\PIPE\\atsvc"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_BROWSESS "\\PIPE\\browsess"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_WINSSVC "\\PIPE\\winssvc"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_WINSMGR "\\PIPE\\winsmgr"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_LLSRPC "\\PIPE\\llsrpc"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_REPL "\\PIPE\\repl"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_NETDFS "\\PIPE\\netdfs"
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Named pipe function codes (NTDDK).
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_SET_NMPIPE_STATE 0x01
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_RAW_READ_NMPIPE 0x11
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_QUERY_NMPIPE_STATE 0x21
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_QUERY_NMPIPE_INFO 0x22
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_PEEK_NMPIPE 0x23
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_TRANSACT_NMPIPE 0x26
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_RAW_WRITE_NMPIPE 0x31
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_READ_NMPIPE 0x36
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_WRITE_NMPIPE 0x37
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_WAIT_NMPIPE 0x53
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define TRANS_CALL_NMPIPE 0x54
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * SMB pipe handle state bits used by Query/SetNamedPipeHandleState.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * These numbers are the bit locations of the fields in the handle state.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_COMPLETION_MODE_BITS 15
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_PIPE_END_BITS 14
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_PIPE_TYPE_BITS 10
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_READ_MODE_BITS 8
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_MAXIMUM_INSTANCES_BITS 0
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * DosPeekNmPipe pipe states.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_STATE_DISCONNECTED 0x0001
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_STATE_LISTENING 0x0002
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_STATE_CONNECTED 0x0003
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PIPE_STATE_CLOSING 0x0004
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * DosCreateNPipe and DosQueryNPHState state.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_READMODE_BYTE 0x0000
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_READMODE_MESSAGE 0x0100
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_TYPE_BYTE 0x0000
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_TYPE_MESSAGE 0x0400
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_END_CLIENT 0x0000
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_END_SERVER 0x4000
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_WAIT 0x0000
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_NOWAIT 0x8000
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define SMB_PIPE_UNLIMITED_INSTANCES 0x00FF
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef __cplusplus
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis}
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif /* _SMBSRV_NMPIPES_H */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis