xref: /titanic_53/usr/src/uts/common/smbsrv/nmpipes.h (revision da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0)
1*da6c28aaSamw /*
2*da6c28aaSamw  * CDDL HEADER START
3*da6c28aaSamw  *
4*da6c28aaSamw  * The contents of this file are subject to the terms of the
5*da6c28aaSamw  * Common Development and Distribution License (the "License").
6*da6c28aaSamw  * You may not use this file except in compliance with the License.
7*da6c28aaSamw  *
8*da6c28aaSamw  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*da6c28aaSamw  * or http://www.opensolaris.org/os/licensing.
10*da6c28aaSamw  * See the License for the specific language governing permissions
11*da6c28aaSamw  * and limitations under the License.
12*da6c28aaSamw  *
13*da6c28aaSamw  * When distributing Covered Code, include this CDDL HEADER in each
14*da6c28aaSamw  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*da6c28aaSamw  * If applicable, add the following below this CDDL HEADER, with the
16*da6c28aaSamw  * fields enclosed by brackets "[]" replaced with your own identifying
17*da6c28aaSamw  * information: Portions Copyright [yyyy] [name of copyright owner]
18*da6c28aaSamw  *
19*da6c28aaSamw  * CDDL HEADER END
20*da6c28aaSamw  */
21*da6c28aaSamw /*
22*da6c28aaSamw  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23*da6c28aaSamw  * Use is subject to license terms.
24*da6c28aaSamw  */
25*da6c28aaSamw 
26*da6c28aaSamw #ifndef _SMBSRV_NMPIPES_H
27*da6c28aaSamw #define	_SMBSRV_NMPIPES_H
28*da6c28aaSamw 
29*da6c28aaSamw #pragma ident	"%Z%%M%	%I%	%E% SMI"
30*da6c28aaSamw 
31*da6c28aaSamw /*
32*da6c28aaSamw  * This file defines pre-defined and system common named pipes.
33*da6c28aaSamw  *
34*da6c28aaSamw  * Named pipes are a simple IPC mechanism supported by Windows 9x, NT
35*da6c28aaSamw  * and 2000. The Windows named pipe implementation supports reliable
36*da6c28aaSamw  * one-way and two-way transport independent network messaging. The
37*da6c28aaSamw  * names follow the universal naming convention (UNC) defined for the
38*da6c28aaSamw  * Windows redirector: \\[server]\[share]\[path]name. There is a good
39*da6c28aaSamw  * overview of named pipes in Network Programming for Microsoft Windows
40*da6c28aaSamw  * Chapter 4. The redirector is described in Chapter 2. UNC names are
41*da6c28aaSamw  * case-insensitive.
42*da6c28aaSamw  *
43*da6c28aaSamw  * Network Programming for Microsoft Windows
44*da6c28aaSamw  * Anthony Jones and Jim Ohlund
45*da6c28aaSamw  * Microsoft Press, ISBN 0-7356-0560-2
46*da6c28aaSamw  *
47*da6c28aaSamw  * Microsoft RPC, which is derived from DCE RPC, uses SMB named pipes
48*da6c28aaSamw  * as its transport mechanism. In addition to the pipe used to open
49*da6c28aaSamw  * each connection, a named pipe also appears in the bind response as
50*da6c28aaSamw  * a secondary address port. Sometimes the secondary address port is
51*da6c28aaSamw  * the same and sometimes it is different. The following associations
52*da6c28aaSamw  * have been observed.
53*da6c28aaSamw  *
54*da6c28aaSamw  *		LSARPC		lsass
55*da6c28aaSamw  *		NETLOGON	lsass
56*da6c28aaSamw  *		SAMR		lsass
57*da6c28aaSamw  *		SPOOLSS		spoolss
58*da6c28aaSamw  *		SRVSVC		ntsvcs
59*da6c28aaSamw  *		SVCCTL		ntsvcs
60*da6c28aaSamw  *		WINREG		winreg
61*da6c28aaSamw  *		WKSSVC		ntsvcs
62*da6c28aaSamw  *		EVENTLOG	ntsvcs
63*da6c28aaSamw  *		LLSRPC		llsrpc
64*da6c28aaSamw  *
65*da6c28aaSamw  * Further information on RPC named pipes is available in the following
66*da6c28aaSamw  * references.
67*da6c28aaSamw  *
68*da6c28aaSamw  * RPC for NT
69*da6c28aaSamw  * Guy R. Eddon
70*da6c28aaSamw  * R&D PUblications, ISBN 0-87930-450-2
71*da6c28aaSamw  *
72*da6c28aaSamw  * Network Programming in Windows NT
73*da6c28aaSamw  * Alok K. Sinha
74*da6c28aaSamw  * Addison-Wesley, ISBN 0-201-59056-5
75*da6c28aaSamw  *
76*da6c28aaSamw  * DCE/RPC over SMB Samba and Windows NT Domain Internals
77*da6c28aaSamw  * Luke Kenneth Casson Leighton
78*da6c28aaSamw  * Macmillan Technical Publishing, ISBN 1-57870-150-3
79*da6c28aaSamw  */
80*da6c28aaSamw 
81*da6c28aaSamw 
82*da6c28aaSamw #ifdef __cplusplus
83*da6c28aaSamw extern "C" {
84*da6c28aaSamw #endif
85*da6c28aaSamw 
86*da6c28aaSamw 
87*da6c28aaSamw /*
88*da6c28aaSamw  * Well-known or pre-defined Windows named pipes. Typically used
89*da6c28aaSamw  * with SmbNtCreateAndX and/or SmbTransactNmPipe. When passed to
90*da6c28aaSamw  * SmbNtCreateAndX the \PIPE prefix is often missing. These names
91*da6c28aaSamw  * are presented as observed on the wire but should be treated in
92*da6c28aaSamw  * a case-insensitive manner.
93*da6c28aaSamw  */
94*da6c28aaSamw #define	PIPE_LANMAN			"\\PIPE\\LANMAN"
95*da6c28aaSamw #define	PIPE_NETLOGON			"\\PIPE\\NETLOGON"
96*da6c28aaSamw #define	PIPE_LSARPC			"\\PIPE\\lsarpc"
97*da6c28aaSamw #define	PIPE_SAMR			"\\PIPE\\samr"
98*da6c28aaSamw #define	PIPE_SPOOLSS			"\\PIPE\\spoolss"
99*da6c28aaSamw #define	PIPE_SRVSVC			"\\PIPE\\srvsvc"
100*da6c28aaSamw #define	PIPE_SVCCTL			"\\PIPE\\svcctl"
101*da6c28aaSamw #define	PIPE_WINREG			"\\PIPE\\winreg"
102*da6c28aaSamw #define	PIPE_WKSSVC			"\\PIPE\\wkssvc"
103*da6c28aaSamw #define	PIPE_EVENTLOG			"\\PIPE\\EVENTLOG"
104*da6c28aaSamw #define	PIPE_LSASS			"\\PIPE\\lsass"
105*da6c28aaSamw #define	PIPE_NTSVCS			"\\PIPE\\ntsvcs"
106*da6c28aaSamw #define	PIPE_ATSVC			"\\PIPE\\atsvc"
107*da6c28aaSamw #define	PIPE_BROWSESS			"\\PIPE\\browsess"
108*da6c28aaSamw #define	PIPE_WINSSVC			"\\PIPE\\winssvc"
109*da6c28aaSamw #define	PIPE_WINSMGR			"\\PIPE\\winsmgr"
110*da6c28aaSamw #define	PIPE_LLSRPC			"\\PIPE\\llsrpc"
111*da6c28aaSamw #define	PIPE_REPL			"\\PIPE\\repl"
112*da6c28aaSamw 
113*da6c28aaSamw /*
114*da6c28aaSamw  * Named pipe function codes (NTDDK cifs.h).
115*da6c28aaSamw  */
116*da6c28aaSamw #define	TRANS_SET_NMPIPE_STATE		0x01
117*da6c28aaSamw #define	TRANS_RAW_READ_NMPIPE		0x11
118*da6c28aaSamw #define	TRANS_QUERY_NMPIPE_STATE	0x21
119*da6c28aaSamw #define	TRANS_QUERY_NMPIPE_INFO		0x22
120*da6c28aaSamw #define	TRANS_PEEK_NMPIPE		0x23
121*da6c28aaSamw #define	TRANS_TRANSACT_NMPIPE		0x26
122*da6c28aaSamw #define	TRANS_RAW_WRITE_NMPIPE		0x31
123*da6c28aaSamw #define	TRANS_READ_NMPIPE		0x36
124*da6c28aaSamw #define	TRANS_WRITE_NMPIPE		0x37
125*da6c28aaSamw #define	TRANS_WAIT_NMPIPE		0x53
126*da6c28aaSamw #define	TRANS_CALL_NMPIPE		0x54
127*da6c28aaSamw 
128*da6c28aaSamw /*
129*da6c28aaSamw  * SMB pipe handle state bits used by Query/SetNamedPipeHandleState.
130*da6c28aaSamw  * These numbers are the bit locations of the fields in the handle state.
131*da6c28aaSamw  */
132*da6c28aaSamw #define	PIPE_COMPLETION_MODE_BITS	15
133*da6c28aaSamw #define	PIPE_PIPE_END_BITS		14
134*da6c28aaSamw #define	PIPE_PIPE_TYPE_BITS		10
135*da6c28aaSamw #define	PIPE_READ_MODE_BITS		8
136*da6c28aaSamw #define	PIPE_MAXIMUM_INSTANCES_BITS	0
137*da6c28aaSamw 
138*da6c28aaSamw /*
139*da6c28aaSamw  * DosPeekNmPipe pipe states.
140*da6c28aaSamw  */
141*da6c28aaSamw #define	PIPE_STATE_DISCONNECTED		0x0001
142*da6c28aaSamw #define	PIPE_STATE_LISTENING		0x0002
143*da6c28aaSamw #define	PIPE_STATE_CONNECTED		0x0003
144*da6c28aaSamw #define	PIPE_STATE_CLOSING		0x0004
145*da6c28aaSamw 
146*da6c28aaSamw /*
147*da6c28aaSamw  * DosCreateNPipe and DosQueryNPHState state.
148*da6c28aaSamw  */
149*da6c28aaSamw #define	SMB_PIPE_READMODE_BYTE		0x0000
150*da6c28aaSamw #define	SMB_PIPE_READMODE_MESSAGE	0x0100
151*da6c28aaSamw #define	SMB_PIPE_TYPE_BYTE		0x0000
152*da6c28aaSamw #define	SMB_PIPE_TYPE_MESSAGE		0x0400
153*da6c28aaSamw #define	SMB_PIPE_END_CLIENT		0x0000
154*da6c28aaSamw #define	SMB_PIPE_END_SERVER		0x4000
155*da6c28aaSamw #define	SMB_PIPE_WAIT			0x0000
156*da6c28aaSamw #define	SMB_PIPE_NOWAIT			0x8000
157*da6c28aaSamw #define	SMB_PIPE_UNLIMITED_INSTANCES	0x00FF
158*da6c28aaSamw 
159*da6c28aaSamw 
160*da6c28aaSamw #ifdef __cplusplus
161*da6c28aaSamw }
162*da6c28aaSamw #endif
163*da6c28aaSamw 
164*da6c28aaSamw 
165*da6c28aaSamw #endif /* _SMBSRV_NMPIPES_H */
166