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