- Timestamp:
- Mar 1, 2010, 3:05:48 PM (15 years ago)
- Location:
- branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/CodingSuggestions.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 6. Coding Suggestions</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="internals.html" title="Chapter 5. Samba Internals"><link rel="next" href="contributing.html" title="Chapter 7. Contributing code"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Coding Suggestions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="contributing.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 6. Coding Suggestions"><div class="titlepage"><div><div><h2 class="title"><a name="CodingSuggestions"></a>Chapter 6. Coding Suggestions</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Steve</span> <span class="surname">French</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Simo</span> <span class="surname">Sorce</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Andrew</span> <span class="surname">Bartlett</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Tim</span> <span class="surname">Potter</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Martin</span> <span class="surname">Pool</span></h3></div></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 6. Coding Suggestions</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="internals.html" title="Chapter 5. Samba Internals"><link rel="next" href="contributing.html" title="Chapter 7. Contributing code"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 6. Coding Suggestions</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="internals.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="contributing.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="CodingSuggestions"></a>Chapter 6. Coding Suggestions</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Steve</span> <span class="surname">French</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Simo</span> <span class="surname">Sorce</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Andrew</span> <span class="surname">Bartlett</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Tim</span> <span class="surname">Potter</span></h3></div></div><div><div class="author"><h3 class="author"><span class="firstname">Martin</span> <span class="surname">Pool</span></h3></div></div></div></div><p> 2 2 So you want to add code to Samba ... 3 3 </p><p> … … 40 40 </p><p> 41 41 Here are some other suggestions: 42 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>42 </p><div class="orderedlist"><ol type="1"><li><p> 43 43 use d_printf instead of printf for display text 44 44 reason: enable auto-substitution of translated language text 45 </p></li><li class="listitem"><p>45 </p></li><li><p> 46 46 use SAFE_FREE instead of free 47 47 reason: reduce traps due to null pointers 48 </p></li><li class="listitem"><p>48 </p></li><li><p> 49 49 don't use bzero use memset, or ZERO_STRUCT and ZERO_STRUCTP macros 50 50 reason: not POSIX 51 </p></li><li class="listitem"><p>51 </p></li><li><p> 52 52 don't use strcpy and strlen (use safe_* equivalents) 53 53 reason: to avoid traps due to buffer overruns 54 </p></li><li class="listitem"><p>54 </p></li><li><p> 55 55 don't use getopt_long, use popt functions instead 56 56 reason: portability 57 </p></li><li class="listitem"><p>57 </p></li><li><p> 58 58 explicitly add const qualifiers on parm passing in functions where parm 59 59 is input only (somewhat controversial but const can be #defined away) 60 </p></li><li class="listitem"><p>60 </p></li><li><p> 61 61 when passing a va_list as an arg, or assigning one to another 62 62 please use the VA_COPY() macro 63 63 reason: on some platforms, va_list is a struct that must be 64 64 initialized in each function...can SEGV if you don't. 65 </p></li><li class="listitem"><p>65 </p></li><li><p> 66 66 discourage use of threads 67 67 reason: portability (also see architecture.doc) 68 </p></li><li class="listitem"><p>68 </p></li><li><p> 69 69 don't explicitly include new header files in C files - new h files 70 70 should be included by adding them once to includes.h 71 71 reason: consistency 72 </p></li><li class="listitem"><p>72 </p></li><li><p> 73 73 don't explicitly extern functions (they are autogenerated by 74 74 "make proto" into proto.h) 75 75 reason: consistency 76 </p></li><li class="listitem"><p>76 </p></li><li><p> 77 77 use endian safe macros when unpacking SMBs (see byteorder.h and 78 78 internals.doc) 79 79 reason: not everyone uses Intel 80 </p></li><li class="listitem"><p>80 </p></li><li><p> 81 81 Note Unicode implications of charset handling (see internals.doc). See 82 82 pull_* and push_* and convert_string functions. 83 83 reason: Internationalization 84 </p></li><li class="listitem"><p>84 </p></li><li><p> 85 85 Don't assume English only 86 86 reason: See above 87 </p></li><li class="listitem"><p>87 </p></li><li><p> 88 88 Try to avoid using in/out parameters (functions that return data which 89 89 overwrites input parameters) 90 90 reason: Can cause stability problems 91 </p></li><li class="listitem"><p>91 </p></li><li><p> 92 92 Ensure copyright notices are correct, don't append Tridge's name to code 93 93 that he didn't write. If you did not write the code, make sure that it 94 94 can coexist with the rest of the Samba GPLed code. 95 </p></li><li class="listitem"><p>95 </p></li><li><p> 96 96 Consider usage of DATA_BLOBs for length specified byte-data. 97 97 reason: stability 98 </p></li><li class="listitem"><p>98 </p></li><li><p> 99 99 Take advantage of tdbs for database like function 100 100 reason: consistency 101 </p></li><li class="listitem"><p>101 </p></li><li><p> 102 102 Don't access the SAM_ACCOUNT structure directly, they should be accessed 103 103 via pdb_get...() and pdb_set...() functions. 104 104 reason: stability, consistency 105 </p></li><li class="listitem"><p>105 </p></li><li><p> 106 106 Don't check a password directly against the passdb, always use the 107 107 check_password() interface. 108 108 reason: long term pluggability 109 </p></li><li class="listitem"><p>109 </p></li><li><p> 110 110 Try to use asprintf rather than pstrings and fstrings where possible 111 </p></li><li class="listitem"><p>111 </p></li><li><p> 112 112 Use normal C comments / * instead of C++ comments // like 113 113 this. Although the C++ comment format is part of the C99 114 114 standard, some older vendor C compilers do not accept it. 115 </p></li><li class="listitem"><p>115 </p></li><li><p> 116 116 Try to write documentation for API functions and structures 117 117 explaining the point of the code, the way it should be used, and … … 119 119 comment start / ** so that they can be picked up by Doxygen, as in 120 120 this file. 121 </p></li><li class="listitem"><p>121 </p></li><li><p> 122 122 Keep the scope narrow. This means making functions/variables 123 123 static whenever possible. We don't want our namespace 124 124 polluted. Each module should have a minimal number of externally 125 125 visible functions or variables. 126 </p></li><li class="listitem"><p>126 </p></li><li><p> 127 127 Use function pointers to keep knowledge about particular pieces of 128 128 code isolated in one place. We don't want a particular piece of … … 132 132 functionality. This is particularly important for command 133 133 interpreters. 134 </p></li><li class="listitem"><p>134 </p></li><li><p> 135 135 Think carefully about what it will be like for someone else to add 136 136 to and maintain your code. If it would be hard for someone else to -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/Packaging.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 16. Notes to packagers</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt05.html" title="Part V. Appendices"><link rel="prev" href="pt05.html" title="Part V. Appendices"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Notes to packagers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt05.html">Prev</a> </td><th width="60%" align="center">Part V. Appendices</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="chapter" title="Chapter 16. Notes to packagers"><div class="titlepage"><div><div><h2 class="title"><a name="Packaging"></a>Chapter 16. Notes to packagers</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="surname">Vernooij</span></h3></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="Packaging.html#id2568047">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2568080">Modules</a></span></dt></dl></div><div class="sect1" title="Versioning"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2568047"></a>Versioning</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 16. Notes to packagers</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt05.html" title="Part V. Appendices"><link rel="prev" href="pt05.html" title="Part V. Appendices"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 16. Notes to packagers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt05.html">Prev</a> </td><th width="60%" align="center">Part V. Appendices</th><td width="20%" align="right"> </td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="Packaging"></a>Chapter 16. Notes to packagers</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="surname">Vernooij</span></h3></div></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="Packaging.html#id2561975">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2562008">Modules</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561975"></a>Versioning</h2></div></div></div><p> 2 2 Please, please set the vendor version suffix and number in <code class="filename">source/VERSION</code> and call 3 3 <code class="filename">source/script/mkvesion.sh</code> to include the versioning of your package. There is also … … 7 7 </p><pre class="programlisting"> 8 8 Version 2.999+3.0.alpha21-5 for Debian 9 </pre></div><div class="sect1" title="Modules"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2568080"></a>Modules</h2></div></div></div><p>9 </pre></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562008"></a>Modules</h2></div></div></div><p> 10 10 Samba3 has support for building parts of samba as plugins. This makes it possible to, for example, 11 11 put ldap or mysql support in a separate package, thus making it possible to have a normal samba package not -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/architecture.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 3. Samba Architecture</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="pt02.html" title="Part II. Samba Basics"><link rel="next" href="debug.html" title="Chapter 4. The samba DEBUG system"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Samba Architecture</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt02.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 3. Samba Architecture"><div class="titlepage"><div><div><h2 class="title"><a name="architecture"></a>Chapter 3. Samba Architecture</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Dan</span> <span class="surname">Shearer</span></h3></div></div><div><p class="pubdate"> November 1997</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="architecture.html#id2562765">Introduction</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562808">Multithreading and Samba</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562839">Threading smbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562900">Threading nmbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562945">nbmd Design</a></span></dt></dl></div><div class="sect1" title="Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562765"></a>Introduction</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 3. Samba Architecture</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="pt02.html" title="Part II. Samba Basics"><link rel="next" href="debug.html" title="Chapter 4. The samba DEBUG system"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 3. Samba Architecture</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt02.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="debug.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="architecture"></a>Chapter 3. Samba Architecture</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Dan</span> <span class="surname">Shearer</span></h3></div></div><div><p class="pubdate"> November 1997</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="architecture.html#id2556692">Introduction</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556735">Multithreading and Samba</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556767">Threading smbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556828">Threading nmbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556873">nbmd Design</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556692"></a>Introduction</h2></div></div></div><p> 2 2 This document gives a general overview of how Samba works 3 3 internally. The Samba Team has tried to come up with a model which is … … 7 7 </p><p> 8 8 It also tries to answer some of the frequently asked questions such as: 9 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>9 </p><div class="orderedlist"><ol type="1"><li><p> 10 10 Is Samba secure when running on Unix? The xyz platform? 11 11 What about the root priveliges issue? 12 </p></li><li class="listitem"><p>Pros and cons of multithreading in various parts of Samba</p></li><li class="listitem"><p>Why not have a separate process for name resolution, WINS, and browsing?</p></li></ol></div></div><div class="sect1" title="Multithreading and Samba"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562808"></a>Multithreading and Samba</h2></div></div></div><p>12 </p></li><li><p>Pros and cons of multithreading in various parts of Samba</p></li><li><p>Why not have a separate process for name resolution, WINS, and browsing?</p></li></ol></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556735"></a>Multithreading and Samba</h2></div></div></div><p> 13 13 People sometimes tout threads as a uniformly good thing. They are very 14 14 nice in their place but are quite inappropriate for smbd. nmbd is … … 27 27 that we use a separate process for each connection is one of Samba's 28 28 biggest advantages. 29 </p></div><div class="sect1" title="Threading smbd"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562839"></a>Threading smbd</h2></div></div></div><p>29 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556767"></a>Threading smbd</h2></div></div></div><p> 30 30 A few problems that would arise from a threaded smbd are: 31 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>31 </p><div class="orderedlist"><ol type="1"><li><p> 32 32 It's not only to create threads instead of processes, but you 33 33 must care about all variables if they have to be thread specific 34 34 (currently they would be global). 35 </p></li><li class="listitem"><p>35 </p></li><li><p> 36 36 if one thread dies (eg. a seg fault) then all threads die. We can 37 37 immediately throw robustness out the window. 38 </p></li><li class="listitem"><p>38 </p></li><li><p> 39 39 many of the system calls we make are blocking. Non-blocking 40 40 equivalents of many calls are either not available or are awkward (and … … 42 42 waiting. Imagine if one share is a slow NFS filesystem and the others 43 43 are fast, we will end up slowing all clients to the speed of NFS. 44 </p></li><li class="listitem"><p>44 </p></li><li><p> 45 45 you can't run as a different uid in different threads. This means 46 46 we would have to switch uid/gid on _every_ SMB packet. It would be 47 47 horrendously slow. 48 </p></li><li class="listitem"><p>48 </p></li><li><p> 49 49 the per process file descriptor limit would mean that we could only 50 50 support a limited number of clients. 51 </p></li><li class="listitem"><p>51 </p></li><li><p> 52 52 we couldn't use the system locking calls as the locking context of 53 53 fcntl() is a process, not a thread. 54 </p></li></ol></div></div><div class="sect1" title="Threading nmbd"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562900"></a>Threading nmbd</h2></div></div></div><p>54 </p></li></ol></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556828"></a>Threading nmbd</h2></div></div></div><p> 55 55 This would be ideal, but gets sunk by portability requirements. 56 56 </p><p> … … 79 79 complex structures) between the processes. We can't rely on each 80 80 platform having a shared memory system. 81 </p></div><div class="sect1" title="nbmd Design"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562945"></a>nbmd Design</h2></div></div></div><p>81 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556873"></a>nbmd Design</h2></div></div></div><p> 82 82 Originally Andrew used recursion to simulate a multi-threaded 83 83 environment, which use the stack enormously and made for really -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/contributing.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 7. Contributing code</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="CodingSuggestions.html" title="Chapter 6. Coding Suggestions"><link rel="next" href="modules.html" title="Chapter 8. Modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Contributing code</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="CodingSuggestions.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="modules.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 7. Contributing code"><div class="titlepage"><div><div><h2 class="title"><a name="contributing"></a>Chapter 7. Contributing code</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div></div></div><p>Here are a few tips and notes that might be useful if you are1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 7. Contributing code</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="CodingSuggestions.html" title="Chapter 6. Coding Suggestions"><link rel="next" href="modules.html" title="Chapter 8. Modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 7. Contributing code</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="CodingSuggestions.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="modules.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="contributing"></a>Chapter 7. Contributing code</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="orgname">The Samba Team</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div></div></div><p>Here are a few tips and notes that might be useful if you are 2 2 interested in modifying samba source code and getting it into 3 3 samba's main branch.</p><div class="variablelist"><dl><dt><span class="term">Retrieving the source</span></dt><dd><p>In order to contribute code to samba, make sure you have the … … 17 17 you can easily generate a diff file of these changes by running 18 18 <strong class="userinput"><code>cvs diff -u</code></strong>.</p></dd><dt><span class="term">Points of attention when modifying samba source code</span></dt><dd><p> 19 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Don't simply copy code from other places and modify it until it19 </p><div class="itemizedlist"><ul type="disc"><li><p>Don't simply copy code from other places and modify it until it 20 20 works. Code needs to be clean and logical. Duplicate 21 code is to be avoided.</p></li><li class="listitem"><p>Test your patch. It might take a while before one of us looks21 code is to be avoided.</p></li><li><p>Test your patch. It might take a while before one of us looks 22 22 at your patch so it will take longer before your patch when your patch 23 needs to go thru the review cycle again.</p></li><li class="listitem"><p>Don't put separate patches in one large diff file. This makes23 needs to go thru the review cycle again.</p></li><li><p>Don't put separate patches in one large diff file. This makes 24 24 it harder to read, understand and test the patch. You might 25 25 also risk not getting a good patch committed because you mixed it 26 with one that had issues. </p></li><li class="listitem"><p>Make sure your patch complies to the samba coding style as26 with one that had issues. </p></li><li><p>Make sure your patch complies to the samba coding style as 27 27 suggested in the coding-suggestions chapter. </p></li></ul></div><p> 28 28 </p></dd><dt><span class="term">Sending in bugfixes</span></dt><dd><p>Bugfixes to bugs in samba should be submitted to samba's -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/debug.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 4. The samba DEBUG system</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="architecture.html" title="Chapter 3. Samba Architecture"><link rel="next" href="internals.html" title="Chapter 5. Samba Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. The samba DEBUG system</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="architecture.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 4. The samba DEBUG system"><div class="titlepage"><div><div><h2 class="title"><a name="debug"></a>Chapter 4. The samba DEBUG system</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Chris</span> <span class="surname">Hertel</span></h3></div></div><div><p class="pubdate">July 1998</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="debug.html#id2563001">New Output Syntax</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563111">The DEBUG() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563216">The DEBUGADD() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563252">The DEBUGLVL() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563343">New Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#id2563348">dbgtext()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2563364">dbghdr()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2563383">format_debug_text()</a></span></dt></dl></dd></dl></div><div class="sect1" title="New Output Syntax"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563001"></a>New Output Syntax</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 4. The samba DEBUG system</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="architecture.html" title="Chapter 3. Samba Architecture"><link rel="next" href="internals.html" title="Chapter 5. Samba Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. The samba DEBUG system</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="architecture.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="internals.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="debug"></a>Chapter 4. The samba DEBUG system</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Chris</span> <span class="surname">Hertel</span></h3></div></div><div><p class="pubdate">July 1998</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="debug.html#id2556929">New Output Syntax</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557038">The DEBUG() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557144">The DEBUGADD() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557180">The DEBUGLVL() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557271">New Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#id2557276">dbgtext()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2557292">dbghdr()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2557311">format_debug_text()</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556929"></a>New Output Syntax</h2></div></div></div><p> 2 2 The syntax of a debugging log file is represented as: 3 3 </p><pre class="programlisting"> … … 26 26 LINE is the line number of the debug statement that generated the 27 27 message. 28 </p><p>Basically, what that all means is:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>28 </p><p>Basically, what that all means is:</p><div class="orderedlist"><ol type="1"><li><p> 29 29 A debugging log file is made up of debug messages. 30 </p></li><li class="listitem"><p>30 </p></li><li><p> 31 31 Each debug message is made up of a header and text. The header is 32 32 separated from the text by a newline. 33 </p></li><li class="listitem"><p>33 </p></li><li><p> 34 34 The header begins with the timestamp and debug level of the 35 35 message enclosed in brackets. The filename, function, and line … … 39 39 compiler, the function name may be missing (it is generated by the 40 40 __FUNCTION__ macro, which is not universally implemented, dangit). 41 </p></li><li class="listitem"><p>41 </p></li><li><p> 42 42 The message text is made up of zero or more lines, each terminated 43 43 by a newline. … … 52 52 the header line. That's because the example above was generated on an 53 53 SGI Indy, and the SGI compiler doesn't support the __FUNCTION__ macro. 54 </p></div><div class="sect1" title="The DEBUG() Macro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563111"></a>The DEBUG() Macro</h2></div></div></div><p>54 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557038"></a>The DEBUG() Macro</h2></div></div></div><p> 55 55 Use of the DEBUG() macro is unchanged. DEBUG() takes two parameters. 56 56 The first is the message level, the second is the body of a function … … 103 103 . 104 104 </pre><p>Which isn't much use. The format buffer kludge fixes this problem. 105 </p></div><div class="sect1" title="The DEBUGADD() Macro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563216"></a>The DEBUGADD() Macro</h2></div></div></div><p>105 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557144"></a>The DEBUGADD() Macro</h2></div></div></div><p> 106 106 In addition to the kludgey solution to the broken line problem 107 107 described above, there is a clean solution. The DEBUGADD() macro never … … 117 117 This is the second line. 118 118 This is the third line. 119 </pre></div><div class="sect1" title="The DEBUGLVL() Macro"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563252"></a>The DEBUGLVL() Macro</h2></div></div></div><p>119 </pre></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557180"></a>The DEBUGLVL() Macro</h2></div></div></div><p> 120 120 One of the problems with the DEBUG() macro was that DEBUG() lines 121 121 tended to get a bit long. Consider this example from … … 144 144 dbgtext( "for workgroup %s\n", work->work_group ); 145 145 } 146 </pre><p>(The dbgtext() function is explained below.)</p><p>There are a few advantages to this scheme:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>146 </pre><p>(The dbgtext() function is explained below.)</p><p>There are a few advantages to this scheme:</p><div class="orderedlist"><ol type="1"><li><p> 147 147 The test is performed only once. 148 </p></li><li class="listitem"><p>148 </p></li><li><p> 149 149 You can allocate variables off of the stack that will only be used 150 150 within the DEBUGLVL() block. 151 </p></li><li class="listitem"><p>151 </p></li><li><p> 152 152 Processing that is only relevant to debug output can be contained 153 153 within the DEBUGLVL() block. 154 </p></li></ol></div></div><div class="sect1" title="New Functions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563343"></a>New Functions</h2></div></div></div><div class="sect2" title="dbgtext()"><div class="titlepage"><div><div><h3 class="title"><a name="id2563348"></a>dbgtext()</h3></div></div></div><p>154 </p></li></ol></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557271"></a>New Functions</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557276"></a>dbgtext()</h3></div></div></div><p> 155 155 This function prints debug message text to the debug file (and 156 156 possibly to syslog) via the format buffer. The function uses a … … 161 161 If you use DEBUGLVL() you will probably print the body of the 162 162 message using dbgtext(). 163 </p></div><div class="sect2" title="dbghdr()"><div class="titlepage"><div><div><h3 class="title"><a name="id2563364"></a>dbghdr()</h3></div></div></div><p>163 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557292"></a>dbghdr()</h3></div></div></div><p> 164 164 This is the function that writes a debug message header. 165 165 Headers are not processed via the format buffer. Also note that … … 169 169 It is not likely that this function will be called directly. It 170 170 is used by DEBUG() and DEBUGADD(). 171 </p></div><div class="sect2" title="format_debug_text()"><div class="titlepage"><div><div><h3 class="title"><a name="id2563383"></a>format_debug_text()</h3></div></div></div><p>171 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557311"></a>format_debug_text()</h3></div></div></div><p> 172 172 This is a static function in debug.c. It stores the output text 173 173 for the body of the message in a buffer until it encounters a -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/devprinting.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 15. Samba Printing Internals</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt04.html" title="Part IV. Debugging and tracing"><link rel="prev" href="tracing.html" title="Chapter 14. Tracing samba system calls"><link rel="next" href="pt05.html" title="Part V. Appendices"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. Samba Printing Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tracing.html">Prev</a> </td><th width="60%" align="center">Part IV. Debugging and tracing</th><td width="20%" align="right"> <a accesskey="n" href="pt05.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 15. Samba Printing Internals"><div class="titlepage"><div><div><h2 class="title"><a name="devprinting"></a>Chapter 15. Samba Printing Internals</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Gerald</span> <span class="surname">Carter</span></h3></div></div><div><p class="pubdate">October 2002</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="devprinting.html#id2567455">Abstract</a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2567467">1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 15. Samba Printing Internals</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt04.html" title="Part IV. Debugging and tracing"><link rel="prev" href="tracing.html" title="Chapter 14. Tracing samba system calls"><link rel="next" href="pt05.html" title="Part V. Appendices"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 15. Samba Printing Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="tracing.html">Prev</a> </td><th width="60%" align="center">Part IV. Debugging and tracing</th><td width="20%" align="right"> <a accesskey="n" href="pt05.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="devprinting"></a>Chapter 15. Samba Printing Internals</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Gerald</span> <span class="surname">Carter</span></h3></div></div><div><p class="pubdate">October 2002</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="devprinting.html#id2561382">Abstract</a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561395"> 2 2 Printing Interface to Various Back ends 3 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7544">3 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561471"> 4 4 Print Queue TDB's 5 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7717">5 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561645"> 6 6 ChangeID and Client Caching of Printer Information 7 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7728">7 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561655"> 8 8 Windows NT/2K Printer Change Notify 9 </a></span></dt></dl></div><div class="sect1" title="Abstract"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2567455"></a>Abstract</h2></div></div></div><p>9 </a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561382"></a>Abstract</h2></div></div></div><p> 10 10 The purpose of this document is to provide some insight into 11 11 Samba's printing functionality and also to describe the semantics 12 12 of certain features of Windows client printing. 13 </p></div><div class="sect1" title="Printing Interface to Various Back ends"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2567467"></a>13 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561395"></a> 14 14 Printing Interface to Various Back ends 15 15 </h2></div></div></div><p> … … 17 17 function prototypes are defined in the <code class="varname">printif</code> structure declared 18 18 in <code class="filename">printing.h</code>. 19 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>retrieve the contents of a print queue</p></li><li class="listitem"><p>pause the print queue</p></li><li class="listitem"><p>resume a paused print queue</p></li><li class="listitem"><p>delete a job from the queue</p></li><li class="listitem"><p>pause a job in the print queue</p></li><li class="listitem"><p>result a paused print job in the queue</p></li><li class="listitem"><p>submit a job to the print queue</p></li></ul></div><p>19 </p><div class="itemizedlist"><ul type="disc"><li><p>retrieve the contents of a print queue</p></li><li><p>pause the print queue</p></li><li><p>resume a paused print queue</p></li><li><p>delete a job from the queue</p></li><li><p>pause a job in the print queue</p></li><li><p>result a paused print job in the queue</p></li><li><p>submit a job to the print queue</p></li></ul></div><p> 20 20 Currently there are only two printing back end implementations 21 21 defined. 22 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>a generic set of functions for working with standard UNIX23 printing subsystems</p></li><li class="listitem"><p>a set of CUPS specific functions (this is only enabled if24 the CUPS libraries were located at compile time).</p></li></ul></div></div><div class="sect1" title="Print Queue TDB's"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2567544"></a>22 </p><div class="itemizedlist"><ul type="disc"><li><p>a generic set of functions for working with standard UNIX 23 printing subsystems</p></li><li><p>a set of CUPS specific functions (this is only enabled if 24 the CUPS libraries were located at compile time).</p></li></ul></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561471"></a> 25 25 Print Queue TDB's 26 26 </h2></div></div></div><p> … … 78 78 When updating a print queue, smbd will perform the following 79 79 steps ( refer to <code class="filename">print.c:print_queue_update()</code> ): 80 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Check to see if another smbd is currently in80 </p><div class="orderedlist"><ol type="1"><li><p>Check to see if another smbd is currently in 81 81 the process of updating the queue contents by checking the pid 82 82 stored in <code class="constant">LOCK/<em class="replaceable"><code>printer_name</code></em></code>. 83 If so, then do not update the TDB.</p></li><li class="listitem"><p>Lock the mutex entry in the TDB and store our own pid.84 Check that this succeeded, else fail.</p></li><li class="listitem"><p>Store the updated time stamp for the new cache85 listing</p></li><li class="listitem"><p>Retrieve the queue listing via "lpq command"</p></li><li class="listitem"><pre class="programlisting">83 If so, then do not update the TDB.</p></li><li><p>Lock the mutex entry in the TDB and store our own pid. 84 Check that this succeeded, else fail.</p></li><li><p>Store the updated time stamp for the new cache 85 listing</p></li><li><p>Retrieve the queue listing via "lpq command"</p></li><li><pre class="programlisting"> 86 86 foreach job in the queue 87 87 { … … 95 95 update the job status only 96 96 } 97 }</pre></li><li class="listitem"><p>Delete any jobs in the TDB that are not98 in the in the lpq listing</p></li><li class="listitem"><p>Store the print queue status in the TDB</p></li><li class="listitem"><p>update the cache time stamp again</p></li></ol></div><p>97 }</pre></li><li><p>Delete any jobs in the TDB that are not 98 in the in the lpq listing</p></li><li><p>Store the print queue status in the TDB</p></li><li><p>update the cache time stamp again</p></li></ol></div><p> 99 99 Note that it is the contents of this TDB that is returned to Windows 100 100 clients and not the actual listing from the "lpq command". … … 111 111 queue TDB. Otherwise, the Device Mode is obtained from the printer 112 112 object when the client issues a GetJob(level == 2) request. 113 </p></div><div class="sect1" title="ChangeID and Client Caching of Printer Information"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2567717"></a>113 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561645"></a> 114 114 ChangeID and Client Caching of Printer Information 115 115 </h2></div></div></div><p> 116 116 [To be filled in later] 117 </p></div><div class="sect1" title="Windows NT/2K Printer Change Notify"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2567728"></a>117 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561655"></a> 118 118 Windows NT/2K Printer Change Notify 119 119 </h2></div></div></div><p> … … 128 128 </p><p> 129 129 The basic set of RPC's used to implement change notification are 130 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>RemoteFindFirstPrinterChangeNotifyEx ( RFFPCN )</p></li><li class="listitem"><p>RemoteFindNextPrinterChangeNotifyEx ( RFNPCN )</p></li><li class="listitem"><p>FindClosePrinterChangeNotify( FCPCN )</p></li><li class="listitem"><p>ReplyOpenPrinter</p></li><li class="listitem"><p>ReplyClosePrinter</p></li><li class="listitem"><p>RouteRefreshPrinterChangeNotify ( RRPCN )</p></li></ul></div><p>130 </p><div class="itemizedlist"><ul type="disc"><li><p>RemoteFindFirstPrinterChangeNotifyEx ( RFFPCN )</p></li><li><p>RemoteFindNextPrinterChangeNotifyEx ( RFNPCN )</p></li><li><p>FindClosePrinterChangeNotify( FCPCN )</p></li><li><p>ReplyOpenPrinter</p></li><li><p>ReplyClosePrinter</p></li><li><p>RouteRefreshPrinterChangeNotify ( RRPCN )</p></li></ul></div><p> 131 131 One additional RPC is available to a server, but is never used by the 132 132 Windows spooler service: 133 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>RouteReplyPrinter()</p></li></ul></div><p>133 </p><div class="itemizedlist"><ul type="disc"><li><p>RouteReplyPrinter()</p></li></ul></div><p> 134 134 The opnum for all of these RPC's are defined in include/rpc_spoolss.h 135 135 </p><p> … … 173 173 The current list of notification events supported by Samba can be 174 174 found by examining the internal tables in srv_spoolss_nt.c 175 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>printer_notify_table[]</p></li><li class="listitem"><p>job_notify_table[]</p></li></ul></div><p>175 </p><div class="itemizedlist"><ul type="disc"><li><p>printer_notify_table[]</p></li><li><p>job_notify_table[]</p></li></ul></div><p> 176 176 When an event occurs that could be monitored, smbd sends a message 177 177 to itself about the change. The list of events to be transmitted … … 193 193 The actual change notification is performed using the RRPCN request 194 194 RPC. This packet contains 195 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>the printer handle registered with the196 client's spooler on which the change occurred</p></li><li class="listitem"><p>The change_low value which was sent as part197 of the last RFNPCN request from the client</p></li><li class="listitem"><p>The SPOOL_NOTIFY_INFO container with the event195 </p><div class="itemizedlist"><ul type="disc"><li><p>the printer handle registered with the 196 client's spooler on which the change occurred</p></li><li><p>The change_low value which was sent as part 197 of the last RFNPCN request from the client</p></li><li><p>The SPOOL_NOTIFY_INFO container with the event 198 198 information</p></li></ul></div><p> 199 199 A <code class="varname">SPOOL_NOTIFY_INFO</code> contains: 200 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>the version and flags field are predefined201 and should not be changed</p></li><li class="listitem"><p>The count field is the number of entries200 </p><div class="itemizedlist"><ul type="disc"><li><p>the version and flags field are predefined 201 and should not be changed</p></li><li><p>The count field is the number of entries 202 202 in the SPOOL_NOTIFY_INFO_DATA array</p></li></ul></div><p> 203 203 The <code class="varname">SPOOL_NOTIFY_INFO_DATA</code> entries contain: 204 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The type defines whether or not this event205 is for a printer or a print job</p></li><li class="listitem"><p>The field is the flag identifying the event</p></li><li class="listitem"><p>the notify_data union contains the new valuie of the206 attribute</p></li><li class="listitem"><p>The enc_type defines the size of the structure for marshalling207 and unmarshalling</p></li><li class="listitem"><p>(a) the id must be 0 for a printer event on a printer handle.204 </p><div class="itemizedlist"><ul type="disc"><li><p>The type defines whether or not this event 205 is for a printer or a print job</p></li><li><p>The field is the flag identifying the event</p></li><li><p>the notify_data union contains the new valuie of the 206 attribute</p></li><li><p>The enc_type defines the size of the structure for marshalling 207 and unmarshalling</p></li><li><p>(a) the id must be 0 for a printer event on a printer handle. 208 208 (b) the id must be the job id for an event on a printer job 209 209 (c) the id must be the matching number of the printer index used … … 211 211 handle for notification. Samba currently uses the snum of 212 212 the printer for this which can break if the list of services 213 has been modified since the notification handle was registered.</p></li><li class="listitem"><p>The size is either (a) the string length in UNICODE for strings,213 has been modified since the notification handle was registered.</p></li><li><p>The size is either (a) the string length in UNICODE for strings, 214 214 (b) the size in bytes of the security descriptor, or (c) 0 for 215 215 data values.</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="tracing.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pt05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 14. Tracing samba system calls </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Part V. Appendices</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/index.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>SAMBA Developers Guide</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><meta name="description" content="Last Update : Fri Oct 10 00:59:58 CEST 2003 This book is a collection of documents that might be useful for people developing samba or those interested in doing so. It's nothing more than a collection of documents written by samba developers about the internals of various parts of samba and the SMB protocol. It's still (and will always be) incomplete. The most recent version of this document can be found at http://devel.samba.org/. This documentation is distributed under the GNU General Public License (GPL) version 2. A copy of the license is included with the Samba source distribution. A copy can be found on-line at http://www.fsf.org/licenses/gpl.txt This document is incomplete and unmaintained. It is merely a collection of development-related notes."><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="next" href="pr01.html" title="Attribution"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">SAMBA Developers Guide</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr></table><hr></div><div class="book" title="SAMBA Developers Guide"><div class="titlepage"><div><div><h1 class="title"><a name="Samba-Developers-Guide"></a>SAMBA Developers Guide</h1></div><div><div class="authorgroup"><div class="editor"><h4 class="editedby">Edited by</h4><h3 class="editor"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div></div><div><div class="abstract" title="Abstract"><p class="title"><b>Abstract</b></p><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>SAMBA Developers Guide</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><meta name="description" content="Last Update : Fri Oct 10 00:59:58 CEST 2003 This book is a collection of documents that might be useful for people developing samba or those interested in doing so. It's nothing more than a collection of documents written by samba developers about the internals of various parts of samba and the SMB protocol. It's still (and will always be) incomplete. The most recent version of this document can be found at http://devel.samba.org/. This documentation is distributed under the GNU General Public License (GPL) version 2. A copy of the license is included with the Samba source distribution. A copy can be found on-line at http://www.fsf.org/licenses/gpl.txt This document is incomplete and unmaintained. It is merely a collection of development-related notes."><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="next" href="pr01.html" title="Attribution"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">SAMBA Developers Guide</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr></table><hr></div><div class="book" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="Samba-Developers-Guide"></a>SAMBA Developers Guide</h1></div><div><div class="authorgroup"><div class="editor"><h4 class="editedby">Edited by</h4><h3 class="editor"><span class="firstname">Jelmer</span> <span class="othername">R.</span> <span class="orgname">The Samba Team</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">The Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p> 2 2 <span class="emphasis"><em>Last Update</em></span> : Fri Oct 10 00:59:58 CEST 2003 3 3 </p><p> … … 12 12 version 2. A copy of the license is included with the Samba source 13 13 distribution. A copy can be found on-line at <a class="ulink" href="http://www.fsf.org/licenses/gpl.txt" target="_top">http://www.fsf.org/licenses/gpl.txt</a> 14 </p><div class="warning" title="Warning"style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>This document is incomplete and unmaintained. It is merely a15 collection of development-related notes.</p></div></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="pr01.html">Attribution</a></span></dt><dt><span class="part"><a href="pt01.html">I. The protocol</a></span></dt><dd><dl><dt><span class="chapter"><a href="unix-smb.html">1. NetBIOS in a Unix World</a></span></dt><dd><dl><dt><span class="sect1"><a href="unix-smb.html#id2 505193">Introduction</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505214">Usernames</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505546">File Ownership</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505577">Passwords</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504910">Locking</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504962">Deny Modes</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504994">Trapdoor UIDs</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505015">Port numbers</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2556040">Protocol Complexity</a></span></dt></dl></dd><dt><span class="chapter"><a href="ntdomain.html">2. NT Domain RPC's</a></span></dt><dd><dl><dt><span class="sect1"><a href="ntdomain.html#id2556159">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556325">Sources</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556351">Credits</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2556382">Notes and Structures</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556388">Notes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556450">Enumerations</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556613">Structures</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2558885">MSRPC over Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2558896">MSRPC Pipes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2558979">Header</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559653">Tail</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559688">RPC Bind / Bind Ack</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559827">NTLSA Transact Named Pipe</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559955">LSA Open Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560051">LSA Query Info Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560132">LSA Enumerate Trusted Domains</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560202">LSA Open Secret</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560285">LSA Close</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560336">LSA Lookup SIDS</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560497">LSA Lookup Names</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2560669">NETLOGON rpc Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2560795">LSA Request Challenge</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560904">LSA Authenticate 2</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561019">LSA Server Password Set</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561111">LSA SAM Logon</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561190">LSA SAM Logoff</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2561262">\\MAILSLOT\NET\NTLOGON</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2561276">Query for PDC</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561476">SAM Logon</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2561726">SRVSVC Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2561760">Net Share Enum</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561928">Net Server Get Info</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2562018">Cryptographic side of NT Domain Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2562024">Definitions</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562150">Protocol</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562229">Comments</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2562270">SIDs and RIDs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2562302">Well-known SIDs</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562541">Well-known RIDS</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="pt02.html">II. Samba Basics</a></span></dt><dd><dl><dt><span class="chapter"><a href="architecture.html">3. Samba Architecture</a></span></dt><dd><dl><dt><span class="sect1"><a href="architecture.html#id2562765">Introduction</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562808">Multithreading and Samba</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562839">Threading smbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562900">Threading nmbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562945">nbmd Design</a></span></dt></dl></dd><dt><span class="chapter"><a href="debug.html">4. The samba DEBUG system</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug.html#id2563001">New Output Syntax</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563111">The DEBUG() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563216">The DEBUGADD() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563252">The DEBUGLVL() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563343">New Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#id2563348">dbgtext()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2563364">dbghdr()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2563383">format_debug_text()</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="internals.html">5. Samba Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="internals.html#id2563435">Character Handling</a></span></dt><dt><span class="sect1"><a href="internals.html#id2563456">The new functions</a></span></dt><dt><span class="sect1"><a href="internals.html#id2563585">Macros in byteorder.h</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2563596">CVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563607">PVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563618">SCVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563628">SVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563641">IVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563652">SVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563664">IVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563675">SSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563686">SIVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563698">SSVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563709">SIVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563720">RSVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563732">RIVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563743">RSSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563755">RSIVAL(buf,pos,val)</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2563768">LAN Manager Samba API</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2563796">Parameters</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563920">Return value</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2563990">Code character table</a></span></dt></dl></dd><dt><span class="chapter"><a href="CodingSuggestions.html">6. Coding Suggestions</a></span></dt><dt><span class="chapter"><a href="contributing.html">7. Contributing code</a></span></dt><dt><span class="chapter"><a href="modules.html">8. Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="modules.html#id2564642">Advantages</a></span></dt><dt><span class="sect1"><a href="modules.html#id2564680">Loading modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2564706">Static modules</a></span></dt><dt><span class="sect2"><a href="modules.html#id2564738">Shared modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="modules.html#id2564762">Writing modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2564811">Static/Shared selection in configure.in</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="pt03.html">III. Samba Subsystems</a></span></dt><dd><dl><dt><span class="chapter"><a href="rpc-plugin.html">9. RPC Pluggable Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="rpc-plugin.html#id2564970">About</a></span></dt><dt><span class="sect1"><a href="rpc-plugin.html#id2564986">General Overview</a></span></dt></dl></dd><dt><span class="chapter"><a href="vfs.html">10. VFS Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="vfs.html#id2565148">The Samba (Posix) VFS layer</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565189">The general interface</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2565500">Possible VFS operation layers</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2565561">The Interaction between the Samba VFS subsystem and the modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565568">Initialization and registration</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2565713">How the Modules handle per connection data</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2565913">Upgrading to the New VFS Interface</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565919">Upgrading from 2.2.* and 3.0alpha modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2566324">Some Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2566329">Implement TRANSPARENT functions</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2566349">Implement OPAQUE functions</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parsing.html">11. The smb.conf file</a></span></dt><dd><dl><dt><span class="sect1"><a href="parsing.html#id2566406">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566478">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566523">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566574">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2566651">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566709">About params.c</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="wins.html">12. Samba WINS Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="wins.html#id2566747">WINS Failover</a></span></dt></dl></dd><dt><span class="chapter"><a href="pwencrypt.html">13. LanMan and NT Password Encryption</a></span></dt><dd><dl><dt><span class="sect1"><a href="pwencrypt.html#id2566865">Introduction</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2566885">How does it work?</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2566969">The smbpasswd file</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt04.html">IV. Debugging and tracing</a></span></dt><dd><dl><dt><span class="chapter"><a href="tracing.html">14. Tracing samba system calls</a></span></dt><dt><span class="chapter"><a href="devprinting.html">15. Samba Printing Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="devprinting.html#id2567455">Abstract</a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2567467">14 </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>This document is incomplete and unmaintained. It is merely a 15 collection of development-related notes.</p></div></div></div></div><hr></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="preface"><a href="pr01.html">Attribution</a></span></dt><dt><span class="part"><a href="pt01.html">I. The protocol</a></span></dt><dd><dl><dt><span class="chapter"><a href="unix-smb.html">1. NetBIOS in a Unix World</a></span></dt><dd><dl><dt><span class="sect1"><a href="unix-smb.html#id2499122">Introduction</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499143">Usernames</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499475">File Ownership</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499506">Passwords</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498843">Locking</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498891">Deny Modes</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498923">Trapdoor UIDs</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498944">Port numbers</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498960">Protocol Complexity</a></span></dt></dl></dd><dt><span class="chapter"><a href="ntdomain.html">2. NT Domain RPC's</a></span></dt><dd><dl><dt><span class="sect1"><a href="ntdomain.html#id2550090">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2550255">Sources</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550282">Credits</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2550313">Notes and Structures</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2550318">Notes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550381">Enumerations</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550543">Structures</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2552813">MSRPC over Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2552823">MSRPC Pipes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2552907">Header</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553580">Tail</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553616">RPC Bind / Bind Ack</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553755">NTLSA Transact Named Pipe</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553883">LSA Open Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553978">LSA Query Info Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554060">LSA Enumerate Trusted Domains</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554130">LSA Open Secret</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554213">LSA Close</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554264">LSA Lookup SIDS</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554425">LSA Lookup Names</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2554597">NETLOGON rpc Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2554723">LSA Request Challenge</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554832">LSA Authenticate 2</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554947">LSA Server Password Set</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555038">LSA SAM Logon</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555118">LSA SAM Logoff</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555189">\\MAILSLOT\NET\NTLOGON</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555203">Query for PDC</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555404">SAM Logon</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555654">SRVSVC Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555688">Net Share Enum</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555856">Net Server Get Info</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555945">Cryptographic side of NT Domain Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555952">Definitions</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556077">Protocol</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556156">Comments</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2556198">SIDs and RIDs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556230">Well-known SIDs</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556468">Well-known RIDS</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="pt02.html">II. Samba Basics</a></span></dt><dd><dl><dt><span class="chapter"><a href="architecture.html">3. Samba Architecture</a></span></dt><dd><dl><dt><span class="sect1"><a href="architecture.html#id2556692">Introduction</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556735">Multithreading and Samba</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556767">Threading smbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556828">Threading nmbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556873">nbmd Design</a></span></dt></dl></dd><dt><span class="chapter"><a href="debug.html">4. The samba DEBUG system</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug.html#id2556929">New Output Syntax</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557038">The DEBUG() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557144">The DEBUGADD() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557180">The DEBUGLVL() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557271">New Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#id2557276">dbgtext()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2557292">dbghdr()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2557311">format_debug_text()</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="internals.html">5. Samba Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="internals.html#id2557363">Character Handling</a></span></dt><dt><span class="sect1"><a href="internals.html#id2557384">The new functions</a></span></dt><dt><span class="sect1"><a href="internals.html#id2557513">Macros in byteorder.h</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2557523">CVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557534">PVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557545">SCVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557556">SVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557568">IVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557580">SVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557591">IVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557603">SSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557614">SIVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557625">SSVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557637">SIVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557648">RSVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557660">RIVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557671">RSSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557683">RSIVAL(buf,pos,val)</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2557696">LAN Manager Samba API</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2557723">Parameters</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557848">Return value</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2557918">Code character table</a></span></dt></dl></dd><dt><span class="chapter"><a href="CodingSuggestions.html">6. Coding Suggestions</a></span></dt><dt><span class="chapter"><a href="contributing.html">7. Contributing code</a></span></dt><dt><span class="chapter"><a href="modules.html">8. Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="modules.html#id2558570">Advantages</a></span></dt><dt><span class="sect1"><a href="modules.html#id2558608">Loading modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2558634">Static modules</a></span></dt><dt><span class="sect2"><a href="modules.html#id2558666">Shared modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="modules.html#id2558690">Writing modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2558739">Static/Shared selection in configure.in</a></span></dt></dl></dd></dl></dd></dl></dd><dt><span class="part"><a href="pt03.html">III. Samba Subsystems</a></span></dt><dd><dl><dt><span class="chapter"><a href="rpc-plugin.html">9. RPC Pluggable Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="rpc-plugin.html#id2558898">About</a></span></dt><dt><span class="sect1"><a href="rpc-plugin.html#id2558913">General Overview</a></span></dt></dl></dd><dt><span class="chapter"><a href="vfs.html">10. VFS Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="vfs.html#id2559076">The Samba (Posix) VFS layer</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559117">The general interface</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2559428">Possible VFS operation layers</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2559489">The Interaction between the Samba VFS subsystem and the modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559495">Initialization and registration</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2559640">How the Modules handle per connection data</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2559841">Upgrading to the New VFS Interface</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559847">Upgrading from 2.2.* and 3.0alpha modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2560251">Some Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2560257">Implement TRANSPARENT functions</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2560276">Implement OPAQUE functions</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parsing.html">11. The smb.conf file</a></span></dt><dd><dl><dt><span class="sect1"><a href="parsing.html#id2560333">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560405">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560450">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560502">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2560579">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560636">About params.c</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="wins.html">12. Samba WINS Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="wins.html#id2560674">WINS Failover</a></span></dt></dl></dd><dt><span class="chapter"><a href="pwencrypt.html">13. LanMan and NT Password Encryption</a></span></dt><dd><dl><dt><span class="sect1"><a href="pwencrypt.html#id2560792">Introduction</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2560813">How does it work?</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2560896">The smbpasswd file</a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt04.html">IV. Debugging and tracing</a></span></dt><dd><dl><dt><span class="chapter"><a href="tracing.html">14. Tracing samba system calls</a></span></dt><dt><span class="chapter"><a href="devprinting.html">15. Samba Printing Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="devprinting.html#id2561382">Abstract</a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561395"> 16 16 Printing Interface to Various Back ends 17 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7544">17 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561471"> 18 18 Print Queue TDB's 19 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7717">19 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561645"> 20 20 ChangeID and Client Caching of Printer Information 21 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7728">21 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561655"> 22 22 Windows NT/2K Printer Change Notify 23 </a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt05.html">V. Appendices</a></span></dt><dd><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id256 8047">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2568080">Modules</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Attribution</td></tr></table></div></body></html>23 </a></span></dt></dl></dd></dl></dd><dt><span class="part"><a href="pt05.html">V. Appendices</a></span></dt><dd><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id2561975">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2562008">Modules</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Attribution</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/internals.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 5. Samba Internals</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="debug.html" title="Chapter 4. The samba DEBUG system"><link rel="next" href="CodingSuggestions.html" title="Chapter 6. Coding Suggestions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Samba Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="CodingSuggestions.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 5. Samba Internals"><div class="titlepage"><div><div><h2 class="title"><a name="internals"></a>Chapter 5. Samba Internals</h2></div><div><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Chappell</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:David.Chappell@mail.trincoll.edu">David.Chappell@mail.trincoll.edu</a>></code></p></div></div></div></div><div><p class="pubdate">8 May 1996</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="internals.html#id2563435">Character Handling</a></span></dt><dt><span class="sect1"><a href="internals.html#id2563456">The new functions</a></span></dt><dt><span class="sect1"><a href="internals.html#id2563585">Macros in byteorder.h</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2563596">CVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563607">PVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563618">SCVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563628">SVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563641">IVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563652">SVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563664">IVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563675">SSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563686">SIVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563698">SSVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563709">SIVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563720">RSVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563732">RIVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563743">RSSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563755">RSIVAL(buf,pos,val)</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2563768">LAN Manager Samba API</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2563796">Parameters</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563920">Return value</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2563990">Code character table</a></span></dt></dl></div><div class="sect1" title="Character Handling"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563435"></a>Character Handling</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 5. Samba Internals</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="debug.html" title="Chapter 4. The samba DEBUG system"><link rel="next" href="CodingSuggestions.html" title="Chapter 6. Coding Suggestions"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 5. Samba Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="CodingSuggestions.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="internals"></a>Chapter 5. Samba Internals</h2></div><div><div class="author"><h3 class="author"><span class="firstname">David</span> <span class="surname">Chappell</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:David.Chappell@mail.trincoll.edu">David.Chappell@mail.trincoll.edu</a>></code></p></div></div></div></div><div><p class="pubdate">8 May 1996</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="internals.html#id2557363">Character Handling</a></span></dt><dt><span class="sect1"><a href="internals.html#id2557384">The new functions</a></span></dt><dt><span class="sect1"><a href="internals.html#id2557513">Macros in byteorder.h</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2557523">CVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557534">PVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557545">SCVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557556">SVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557568">IVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557580">SVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557591">IVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557603">SSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557614">SIVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557625">SSVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557637">SIVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557648">RSVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557660">RIVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557671">RSSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557683">RSIVAL(buf,pos,val)</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2557696">LAN Manager Samba API</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2557723">Parameters</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557848">Return value</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2557918">Code character table</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557363"></a>Character Handling</h2></div></div></div><p> 2 2 This section describes character set handling in Samba, as implemented in 3 3 Samba 3.0 and above … … 9 9 codepage. This led to a nightmare of code that tried to cope with 10 10 particular cases without handlingt the general case. 11 </p></div><div class="sect1" title="The new functions"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563456"></a>The new functions</h2></div></div></div><p>11 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557384"></a>The new functions</h2></div></div></div><p> 12 12 The new system works like this: 13 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>13 </p><div class="orderedlist"><ol type="1"><li><p> 14 14 all char* strings inside Samba are "unix" strings. These are 15 15 multi-byte strings that are in the charset defined by the "unix 16 16 charset" option in smb.conf. 17 </p></li><li class="listitem"><p>17 </p></li><li><p> 18 18 there is no single fixed character set for unix strings, but any 19 19 character set that is used does need the following properties: 20 </p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"><p>20 </p><div class="orderedlist"><ol type="a"><li><p> 21 21 must not contain NULLs except for termination 22 </p></li><li class="listitem"><p>22 </p></li><li><p> 23 23 must be 7-bit compatible with C strings, so that a constant 24 24 string or character in C will be byte-for-byte identical to the 25 25 equivalent string in the chosen character set. 26 </p></li><li class="listitem"><p>26 </p></li><li><p> 27 27 when you uppercase or lowercase a string it does not become 28 28 longer than the original string 29 </p></li><li class="listitem"><p>29 </p></li><li><p> 30 30 must be able to correctly hold all characters that your client 31 31 will throw at it … … 34 34 are fine, but UCS2 could not be used for unix strings as they 35 35 contain nulls. 36 </p></li><li class="listitem"><p>36 </p></li><li><p> 37 37 when you need to put a string into a buffer that will be sent on the 38 38 wire, or you need a string in a character set format that is … … 41 41 wire buffer into a (multi-byte) unix string. The push_ functions 42 42 push a string out to a wire buffer. 43 </p></li><li class="listitem"><p>43 </p></li><li><p> 44 44 the two main pull_ and push_ functions you need to understand are 45 45 pull_string and push_string. These functions take a base pointer … … 58 58 charcnv.c that call the pull_/push_ functions with particularly 59 59 common arguments, such as pull_ascii_pstring() 60 </p></li><li class="listitem"><p>60 </p></li><li><p> 61 61 The biggest thing to remember is that internal (unix) strings in Samba 62 62 may now contain multi-byte characters. This means you cannot assume … … 66 66 like strchr_m(). I know this is very slow, and we will eventually 67 67 speed it up but right now we want this stuff correct not fast. 68 </p></li><li class="listitem"><p>68 </p></li><li><p> 69 69 all lp_ functions now return unix strings. The magic "DOS" flag on 70 70 parameters is gone. 71 </p></li><li class="listitem"><p>71 </p></li><li><p> 72 72 all vfs functions take unix strings. Don't convert when passing to them 73 </p></li></ol></div></div><div class="sect1" title="Macros in byteorder.h"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563585"></a>Macros in byteorder.h</h2></div></div></div><p>73 </p></li></ol></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557513"></a>Macros in byteorder.h</h2></div></div></div><p> 74 74 This section describes the macros defined in byteorder.h. These macros 75 75 are used extensively in the Samba code. 76 </p><div class="sect2" title="CVAL(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563596"></a>CVAL(buf,pos)</h3></div></div></div><p>76 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557523"></a>CVAL(buf,pos)</h3></div></div></div><p> 77 77 returns the byte at offset pos within buffer buf as an unsigned character. 78 </p></div><div class="sect2" title="PVAL(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563607"></a>PVAL(buf,pos)</h3></div></div></div><p>returns the value of CVAL(buf,pos) cast to type unsigned integer.</p></div><div class="sect2" title="SCVAL(buf,pos,val)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563618"></a>SCVAL(buf,pos,val)</h3></div></div></div><p>sets the byte at offset pos within buffer buf to value val.</p></div><div class="sect2" title="SVAL(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563628"></a>SVAL(buf,pos)</h3></div></div></div><p>78 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557534"></a>PVAL(buf,pos)</h3></div></div></div><p>returns the value of CVAL(buf,pos) cast to type unsigned integer.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557545"></a>SCVAL(buf,pos,val)</h3></div></div></div><p>sets the byte at offset pos within buffer buf to value val.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557556"></a>SVAL(buf,pos)</h3></div></div></div><p> 79 79 returns the value of the unsigned short (16 bit) little-endian integer at 80 80 offset pos within buffer buf. An integer of this type is sometimes 81 81 refered to as "USHORT". 82 </p></div><div class="sect2" title="IVAL(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563641"></a>IVAL(buf,pos)</h3></div></div></div><p>returns the value of the unsigned 32 bit little-endian integer at offset83 pos within buffer buf.</p></div><div class="sect2" title="SVALS(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563652"></a>SVALS(buf,pos)</h3></div></div></div><p>returns the value of the signed short (16 bit) little-endian integer at84 offset pos within buffer buf.</p></div><div class="sect2" title="IVALS(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563664"></a>IVALS(buf,pos)</h3></div></div></div><p>returns the value of the signed 32 bit little-endian integer at offset pos85 within buffer buf.</p></div><div class="sect2" title="SSVAL(buf,pos,val)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563675"></a>SSVAL(buf,pos,val)</h3></div></div></div><p>sets the unsigned short (16 bit) little-endian integer at offset pos within86 buffer buf to value val.</p></div><div class="sect2" title="SIVAL(buf,pos,val)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563686"></a>SIVAL(buf,pos,val)</h3></div></div></div><p>sets the unsigned 32 bit little-endian integer at offset pos within buffer87 buf to the value val.</p></div><div class="sect2" title="SSVALS(buf,pos,val)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563698"></a>SSVALS(buf,pos,val)</h3></div></div></div><p>sets the short (16 bit) signed little-endian integer at offset pos within88 buffer buf to the value val.</p></div><div class="sect2" title="SIVALS(buf,pos,val)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563709"></a>SIVALS(buf,pos,val)</h3></div></div></div><p>sets the signed 32 bit little-endian integer at offset pos withing buffer89 buf to the value val.</p></div><div class="sect2" title="RSVAL(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563720"></a>RSVAL(buf,pos)</h3></div></div></div><p>returns the value of the unsigned short (16 bit) big-endian integer at90 offset pos within buffer buf.</p></div><div class="sect2" title="RIVAL(buf,pos)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563732"></a>RIVAL(buf,pos)</h3></div></div></div><p>returns the value of the unsigned 32 bit big-endian integer at offset91 pos within buffer buf.</p></div><div class="sect2" title="RSSVAL(buf,pos,val)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563743"></a>RSSVAL(buf,pos,val)</h3></div></div></div><p>sets the value of the unsigned short (16 bit) big-endian integer at82 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557568"></a>IVAL(buf,pos)</h3></div></div></div><p>returns the value of the unsigned 32 bit little-endian integer at offset 83 pos within buffer buf.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557580"></a>SVALS(buf,pos)</h3></div></div></div><p>returns the value of the signed short (16 bit) little-endian integer at 84 offset pos within buffer buf.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557591"></a>IVALS(buf,pos)</h3></div></div></div><p>returns the value of the signed 32 bit little-endian integer at offset pos 85 within buffer buf.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557603"></a>SSVAL(buf,pos,val)</h3></div></div></div><p>sets the unsigned short (16 bit) little-endian integer at offset pos within 86 buffer buf to value val.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557614"></a>SIVAL(buf,pos,val)</h3></div></div></div><p>sets the unsigned 32 bit little-endian integer at offset pos within buffer 87 buf to the value val.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557625"></a>SSVALS(buf,pos,val)</h3></div></div></div><p>sets the short (16 bit) signed little-endian integer at offset pos within 88 buffer buf to the value val.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557637"></a>SIVALS(buf,pos,val)</h3></div></div></div><p>sets the signed 32 bit little-endian integer at offset pos withing buffer 89 buf to the value val.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557648"></a>RSVAL(buf,pos)</h3></div></div></div><p>returns the value of the unsigned short (16 bit) big-endian integer at 90 offset pos within buffer buf.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557660"></a>RIVAL(buf,pos)</h3></div></div></div><p>returns the value of the unsigned 32 bit big-endian integer at offset 91 pos within buffer buf.</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557671"></a>RSSVAL(buf,pos,val)</h3></div></div></div><p>sets the value of the unsigned short (16 bit) big-endian integer at 92 92 offset pos within buffer buf to value val. 93 refered to as "USHORT".</p></div><div class="sect2" title="RSIVAL(buf,pos,val)"><div class="titlepage"><div><div><h3 class="title"><a name="id2563755"></a>RSIVAL(buf,pos,val)</h3></div></div></div><p>sets the value of the unsigned 32 bit big-endian integer at offset94 pos within buffer buf to value val.</p></div></div><div class="sect1" title="LAN Manager Samba API"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563768"></a>LAN Manager Samba API</h2></div></div></div><p>93 refered to as "USHORT".</p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557683"></a>RSIVAL(buf,pos,val)</h3></div></div></div><p>sets the value of the unsigned 32 bit big-endian integer at offset 94 pos within buffer buf to value val.</p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557696"></a>LAN Manager Samba API</h2></div></div></div><p> 95 95 This section describes the functions need to make a LAN Manager RPC call. 96 96 This information had been obtained by examining the Samba code and the LAN … … 105 105 This function is defined in client.c. It uses an SMB transaction to call a 106 106 remote api. 107 </p><div class="sect2" title="Parameters"><div class="titlepage"><div><div><h3 class="title"><a name="id2563796"></a>Parameters</h3></div></div></div><p>The parameters are as follows:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>107 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557723"></a>Parameters</h3></div></div></div><p>The parameters are as follows:</p><div class="orderedlist"><ol type="1"><li><p> 108 108 prcnt: the number of bytes of parameters begin sent. 109 </p></li><li class="listitem"><p>109 </p></li><li><p> 110 110 drcnt: the number of bytes of data begin sent. 111 </p></li><li class="listitem"><p>111 </p></li><li><p> 112 112 mprcnt: the maximum number of bytes of parameters which should be returned 113 </p></li><li class="listitem"><p>113 </p></li><li><p> 114 114 mdrcnt: the maximum number of bytes of data which should be returned 115 </p></li><li class="listitem"><p>115 </p></li><li><p> 116 116 param: a pointer to the parameters to be sent. 117 </p></li><li class="listitem"><p>117 </p></li><li><p> 118 118 data: a pointer to the data to be sent. 119 </p></li><li class="listitem"><p>119 </p></li><li><p> 120 120 rparam: a pointer to a pointer which will be set to point to the returned 121 121 parameters. The caller of call_api() must deallocate this memory. 122 </p></li><li class="listitem"><p>122 </p></li><li><p> 123 123 rdata: a pointer to a pointer which will be set to point to the returned 124 124 data. The caller of call_api() must deallocate this memory. … … 126 126 These are the parameters which you ought to send, in the order of their 127 127 appearance in the parameter block: 128 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>128 </p><div class="orderedlist"><ol type="1"><li><p> 129 129 An unsigned 16 bit integer API number. You should set this value with 130 130 SSVAL(). I do not know where these numbers are described. 131 </p></li><li class="listitem"><p>131 </p></li><li><p> 132 132 An ASCIIZ string describing the parameters to the API function as defined 133 133 in the LAN Manager documentation. The first parameter, which is the server 134 134 name, is ommited. This string is based uppon the API function as described 135 135 in the manual, not the data which is actually passed. 136 </p></li><li class="listitem"><p>136 </p></li><li><p> 137 137 An ASCIIZ string describing the data structure which ought to be returned. 138 </p></li><li class="listitem"><p>138 </p></li><li><p> 139 139 Any parameters which appear in the function call, as defined in the LAN 140 140 Manager API documentation, after the "Server" and up to and including the 141 141 "uLevel" parameters. 142 </p></li><li class="listitem"><p>142 </p></li><li><p> 143 143 An unsigned 16 bit integer which gives the size in bytes of the buffer we 144 144 will use to receive the returned array of data structures. Presumably this 145 145 should be the same as mdrcnt. This value should be set with SSVAL(). 146 </p></li><li class="listitem"><p>146 </p></li><li><p> 147 147 An ASCIIZ string describing substructures which should be returned. If no 148 148 substructures apply, this string is of zero length. … … 150 150 The code in client.c always calls call_api() with no data. It is unclear 151 151 when a non-zero length data buffer would be sent. 152 </p></div><div class="sect2" title="Return value"><div class="titlepage"><div><div><h3 class="title"><a name="id2563920"></a>Return value</h3></div></div></div><p>152 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2557848"></a>Return value</h3></div></div></div><p> 153 153 The returned parameters (pointed to by rparam), in their order of appearance 154 are:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>154 are:</p><div class="orderedlist"><ol type="1"><li><p> 155 155 An unsigned 16 bit integer which contains the API function's return code. 156 156 This value should be read with SVAL(). 157 </p></li><li class="listitem"><p>157 </p></li><li><p> 158 158 An adjustment which tells the amount by which pointers in the returned 159 159 data should be adjusted. This value should be read with SVAL(). Basically, … … 161 161 pointer value added to it and then have this value subtracted from it in 162 162 order to obtain the currect offset into the returned data buffer. 163 </p></li><li class="listitem"><p>163 </p></li><li><p> 164 164 A count of the number of elements in the array of structures returned. 165 165 It is also possible that this may sometimes be the number of bytes returned. … … 181 181 do with indicating the amount of data returned or possibly the amount of 182 182 data which can be returned if enough buffer space is allowed. 183 </p></div></div><div class="sect1" title="Code character table"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2563990"></a>Code character table</h2></div></div></div><p>183 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2557918"></a>Code character table</h2></div></div></div><p> 184 184 Certain data structures are described by means of ASCIIz strings containing 185 185 code characters. These are the code characters: 186 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>186 </p><div class="orderedlist"><ol type="1"><li><p> 187 187 W a type byte little-endian unsigned integer 188 </p></li><li class="listitem"><p>188 </p></li><li><p> 189 189 N a count of substructures which follow 190 </p></li><li class="listitem"><p>190 </p></li><li><p> 191 191 D a four byte little-endian unsigned integer 192 </p></li><li class="listitem"><p>192 </p></li><li><p> 193 193 B a byte (with optional count expressed as trailing ASCII digits) 194 </p></li><li class="listitem"><p>194 </p></li><li><p> 195 195 z a four byte offset to a NULL terminated string 196 </p></li><li class="listitem"><p>196 </p></li><li><p> 197 197 l a four byte offset to non-string user data 198 </p></li><li class="listitem"><p>198 </p></li><li><p> 199 199 b an offset to data (with count expressed as trailing ASCII digits) 200 </p></li><li class="listitem"><p>200 </p></li><li><p> 201 201 r pointer to returned data buffer??? 202 </p></li><li class="listitem"><p>202 </p></li><li><p> 203 203 L length in bytes of returned data buffer??? 204 </p></li><li class="listitem"><p>204 </p></li><li><p> 205 205 h number of bytes of information available??? 206 206 </p></li></ol></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="debug.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="CodingSuggestions.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. The samba DEBUG system </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 6. Coding Suggestions</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/modules.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 8. Modules</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="contributing.html" title="Chapter 7. Contributing code"><link rel="next" href="pt03.html" title="Part III. Samba Subsystems"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Modules</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="contributing.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="pt03.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 8. Modules"><div class="titlepage"><div><div><h2 class="title"><a name="modules"></a>Chapter 8. Modules</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate"> 19 March 2003 </p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="modules.html#id2564642">Advantages</a></span></dt><dt><span class="sect1"><a href="modules.html#id2564680">Loading modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2564706">Static modules</a></span></dt><dt><span class="sect2"><a href="modules.html#id2564738">Shared modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="modules.html#id2564762">Writing modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2564811">Static/Shared selection in configure.in</a></span></dt></dl></dd></dl></div><div class="sect1" title="Advantages"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2564642"></a>Advantages</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 8. Modules</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt02.html" title="Part II. Samba Basics"><link rel="prev" href="contributing.html" title="Chapter 7. Contributing code"><link rel="next" href="pt03.html" title="Part III. Samba Subsystems"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 8. Modules</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="contributing.html">Prev</a> </td><th width="60%" align="center">Part II. Samba Basics</th><td width="20%" align="right"> <a accesskey="n" href="pt03.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="modules"></a>Chapter 8. Modules</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="orgname">Samba Team</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate"> 19 March 2003 </p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="modules.html#id2558570">Advantages</a></span></dt><dt><span class="sect1"><a href="modules.html#id2558608">Loading modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2558634">Static modules</a></span></dt><dt><span class="sect2"><a href="modules.html#id2558666">Shared modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="modules.html#id2558690">Writing modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2558739">Static/Shared selection in configure.in</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2558570"></a>Advantages</h2></div></div></div><p> 2 2 The new modules system has the following advantages: 3 </p><table border="0" summary="Simple list" class="simplelist"><tr><td>Transparent loading of static and shared modules (no need4 for a subsystem to know about modules)</td></tr><tr><td>Simple selection between shared and static modules at configure time</td></tr><tr><td>"preload modules" option for increasing performance for stable modules</td></tr><tr><td>No nasty #define stuff anymore</td></tr><tr><td>All backends are available as plugin now (including pdb_ldap and pdb_tdb)</td></tr></table></div><div class="sect1" title="Loading modules"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2564680"></a>Loading modules</h2></div></div></div><p>3 </p><table class="simplelist" border="0" summary="Simple list"><tr><td>Transparent loading of static and shared modules (no need 4 for a subsystem to know about modules)</td></tr><tr><td>Simple selection between shared and static modules at configure time</td></tr><tr><td>"preload modules" option for increasing performance for stable modules</td></tr><tr><td>No nasty #define stuff anymore</td></tr><tr><td>All backends are available as plugin now (including pdb_ldap and pdb_tdb)</td></tr></table></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2558608"></a>Loading modules</h2></div></div></div><p> 5 5 Some subsystems in samba use different backends. These backends can be 6 6 either statically linked in to samba or available as a plugin. A subsystem … … 12 12 This function will be called by the initialisation function of the module to 13 13 register itself. 14 </p><div class="sect2" title="Static modules"><div class="titlepage"><div><div><h3 class="title"><a name="id2564706"></a>Static modules</h3></div></div></div><p>14 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558634"></a>Static modules</h3></div></div></div><p> 15 15 The modules system compiles a list of initialisation functions for the 16 16 static modules of each subsystem. This is a define. For example, … … 22 22 These functions should be called before the subsystem is used. That 23 23 should be done when the subsystem is initialised or first used. 24 </p></div><div class="sect2" title="Shared modules"><div class="titlepage"><div><div><h3 class="title"><a name="id2564738"></a>Shared modules</h3></div></div></div><p>24 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558666"></a>Shared modules</h3></div></div></div><p> 25 25 If a subsystem needs a certain backend, it should check if it has 26 26 already been registered. If the backend hasn't been registered already, … … 32 32 </p><p>After smb_probe_module() has been executed, the subsystem 33 33 should check again if the module has been registered. 34 </p></div></div><div class="sect1" title="Writing modules"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2564762"></a>Writing modules</h2></div></div></div><p>34 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2558690"></a>Writing modules</h2></div></div></div><p> 35 35 Each module has an initialisation function. For modules that are 36 36 included with samba this name is '<em class="replaceable"><code>subsystem</code></em>_<em class="replaceable"><code>backend</code></em>_init'. For external modules (that will never be built-in, but only available as a module) this name is always 'init_module'. (In the case of modules included with samba, the configure system will add a #define subsystem_backend_init() init_module()). … … 47 47 return NT_STATUS_OK; 48 48 } 49 </pre><div class="sect2" title="Static/Shared selection in configure.in"><div class="titlepage"><div><div><h3 class="title"><a name="id2564811"></a>Static/Shared selection in configure.in</h3></div></div></div><p>49 </pre><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2558739"></a>Static/Shared selection in configure.in</h3></div></div></div><p> 50 50 Some macros in configure.in generate the various defines and substs that 51 51 are necessary for the system to work correct. All modules that should … … 65 65 be changed by ./configure are rebuilded in the 'modules_clean' make target. 66 66 Practically, this means all c files that contain <code class="literal">static_init_subsystem;</code> calls need to be rebuilded. 67 </p><div class="note" title="Note"style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>67 </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p> 68 68 There currently also is a configure.in command called SMB_MODULE_PROVIVES(). 69 69 This is used for modules that register multiple things. It should not -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/ntdomain.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 2. NT Domain RPC's</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt01.html" title="Part I. The protocol"><link rel="prev" href="unix-smb.html" title="Chapter 1. NetBIOS in a Unix World"><link rel="next" href="pt02.html" title="Part II. Samba Basics"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. NT Domain RPC's</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="unix-smb.html">Prev</a> </td><th width="60%" align="center">Part I. The protocol</th><td width="20%" align="right"> <a accesskey="n" href="pt02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 2. NT Domain RPC's"><div class="titlepage"><div><div><h2 class="title"><a name="ntdomain"></a>Chapter 2. NT Domain RPC's</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Luke</span> <span class="surname">Leighton</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:lkcl@switchboard.net">lkcl@switchboard.net</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Paul</span> <span class="surname">Ashton</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:paul@argo.demon.co.uk">paul@argo.demon.co.uk</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Duncan</span> <span class="surname">Stansfield</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:duncans@sco.com">duncans@sco.com</a>></code></p></div></div></div></div><div><p class="pubdate">01 November 97(version 0.0.24)</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ntdomain.html#id2556159">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556325">Sources</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556351">Credits</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2556382">Notes and Structures</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556388">Notes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556450">Enumerations</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556613">Structures</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2558885">MSRPC over Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2558896">MSRPC Pipes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2558979">Header</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559653">Tail</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559688">RPC Bind / Bind Ack</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559827">NTLSA Transact Named Pipe</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559955">LSA Open Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560051">LSA Query Info Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560132">LSA Enumerate Trusted Domains</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560202">LSA Open Secret</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560285">LSA Close</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560336">LSA Lookup SIDS</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560497">LSA Lookup Names</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2560669">NETLOGON rpc Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2560795">LSA Request Challenge</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560904">LSA Authenticate 2</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561019">LSA Server Password Set</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561111">LSA SAM Logon</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561190">LSA SAM Logoff</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2561262">\\MAILSLOT\NET\NTLOGON</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2561276">Query for PDC</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561476">SAM Logon</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2561726">SRVSVC Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2561760">Net Share Enum</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561928">Net Server Get Info</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2562018">Cryptographic side of NT Domain Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2562024">Definitions</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562150">Protocol</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562229">Comments</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2562270">SIDs and RIDs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2562302">Well-known SIDs</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562541">Well-known RIDS</a></span></dt></dl></dd></dl></div><div class="sect1" title="Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556159"></a>Introduction</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 2. NT Domain RPC's</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt01.html" title="Part I. The protocol"><link rel="prev" href="unix-smb.html" title="Chapter 1. NetBIOS in a Unix World"><link rel="next" href="pt02.html" title="Part II. Samba Basics"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. NT Domain RPC's</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="unix-smb.html">Prev</a> </td><th width="60%" align="center">Part I. The protocol</th><td width="20%" align="right"> <a accesskey="n" href="pt02.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="ntdomain"></a>Chapter 2. NT Domain RPC's</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Luke</span> <span class="surname">Leighton</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:lkcl@switchboard.net">lkcl@switchboard.net</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Paul</span> <span class="surname">Ashton</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:paul@argo.demon.co.uk">paul@argo.demon.co.uk</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Duncan</span> <span class="surname">Stansfield</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:duncans@sco.com">duncans@sco.com</a>></code></p></div></div></div></div><div><p class="pubdate">01 November 97(version 0.0.24)</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ntdomain.html#id2550090">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2550255">Sources</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550282">Credits</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2550313">Notes and Structures</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2550318">Notes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550381">Enumerations</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550543">Structures</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2552813">MSRPC over Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2552823">MSRPC Pipes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2552907">Header</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553580">Tail</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553616">RPC Bind / Bind Ack</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553755">NTLSA Transact Named Pipe</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553883">LSA Open Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553978">LSA Query Info Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554060">LSA Enumerate Trusted Domains</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554130">LSA Open Secret</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554213">LSA Close</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554264">LSA Lookup SIDS</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554425">LSA Lookup Names</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2554597">NETLOGON rpc Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2554723">LSA Request Challenge</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554832">LSA Authenticate 2</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554947">LSA Server Password Set</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555038">LSA SAM Logon</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555118">LSA SAM Logoff</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555189">\\MAILSLOT\NET\NTLOGON</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555203">Query for PDC</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555404">SAM Logon</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555654">SRVSVC Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555688">Net Share Enum</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555856">Net Server Get Info</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555945">Cryptographic side of NT Domain Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555952">Definitions</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556077">Protocol</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556156">Comments</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2556198">SIDs and RIDs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556230">Well-known SIDs</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556468">Well-known RIDS</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2550090"></a>Introduction</h2></div></div></div><p> 2 2 This document contains information to provide an NT workstation with login 3 3 services, without the need for an NT server. It is the sgml version of <a class="ulink" href="http://mailhost.cb1.com/~lkcl/cifsntdomain.txt" target="_top">http://mailhost.cb1.com/~lkcl/cifsntdomain.txt</a>, controlled by Luke. … … 39 39 This document is by no means complete or authoritative. Missing sections 40 40 include, but are not limited to: 41 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Mappings of RIDs to usernames (and vice-versa).</p></li><li class="listitem"><p>What a User ID is and what a Group ID is.</p></li><li class="listitem"><p>The exact meaning/definition of various magic constants or enumerations.</p></li><li class="listitem"><p>The reply error code and use of that error code when a41 </p><div class="orderedlist"><ol type="1"><li><p>Mappings of RIDs to usernames (and vice-versa).</p></li><li><p>What a User ID is and what a Group ID is.</p></li><li><p>The exact meaning/definition of various magic constants or enumerations.</p></li><li><p>The reply error code and use of that error code when a 42 42 workstation becomes a member of a domain (to be described later). 43 43 Failure to return this error code will make the workstation report 44 that it is already a member of the domain.</p></li><li class="listitem"><p>the cryptographic side of the NetrServerPasswordSet command,44 that it is already a member of the domain.</p></li><li><p>the cryptographic side of the NetrServerPasswordSet command, 45 45 which would allow the workstation to change its password. This password is 46 46 used to generate the long-term session key. [It is possible to reject this 47 command, and keep the default workstation password].</p></li></ol></div><div class="sect2" title="Sources"><div class="titlepage"><div><div><h3 class="title"><a name="id2556325"></a>Sources</h3></div></div></div><table border="0" summary="Simple list" class="simplelist"><tr><td>cket Traces from Netmonitor (Service Pack 1 and above)</td></tr><tr><td>ul Ashton and Luke Leighton's other "NT Domain" doc.</td></tr><tr><td>FS documentation - cifs6.txt</td></tr><tr><td>FS documentation - cifsrap2.txt</td></tr></table></div><div class="sect2" title="Credits"><div class="titlepage"><div><div><h3 class="title"><a name="id2556351"></a>Credits</h3></div></div></div><table border="0" summary="Simple list" class="simplelist"><tr><td>Paul Ashton: loads of work with Net Monitor; understanding the NT authentication system; reference implementation of the NT domain support on which this document is originally based.</td></tr><tr><td>Duncan Stansfield: low-level analysis of MSRPC Pipes.</td></tr><tr><td>Linus Nordberg: producing c-code from Paul's crypto spec.</td></tr><tr><td>Windows Sourcer development team</td></tr></table></div></div><div class="sect1" title="Notes and Structures"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556382"></a>Notes and Structures</h2></div></div></div><div class="sect2" title="Notes"><div class="titlepage"><div><div><h3 class="title"><a name="id2556388"></a>Notes</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>47 command, and keep the default workstation password].</p></li></ol></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550255"></a>Sources</h3></div></div></div><table class="simplelist" border="0" summary="Simple list"><tr><td>cket Traces from Netmonitor (Service Pack 1 and above)</td></tr><tr><td>ul Ashton and Luke Leighton's other "NT Domain" doc.</td></tr><tr><td>FS documentation - cifs6.txt</td></tr><tr><td>FS documentation - cifsrap2.txt</td></tr></table></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550282"></a>Credits</h3></div></div></div><table class="simplelist" border="0" summary="Simple list"><tr><td>Paul Ashton: loads of work with Net Monitor; understanding the NT authentication system; reference implementation of the NT domain support on which this document is originally based.</td></tr><tr><td>Duncan Stansfield: low-level analysis of MSRPC Pipes.</td></tr><tr><td>Linus Nordberg: producing c-code from Paul's crypto spec.</td></tr><tr><td>Windows Sourcer development team</td></tr></table></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2550313"></a>Notes and Structures</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550318"></a>Notes</h3></div></div></div><div class="orderedlist"><ol type="1"><li><p> 48 48 In the SMB Transact pipes, some "Structures", described here, appear to be 49 49 4-byte aligned with the SMB header, at their start. Exactly which 50 50 "Structures" need aligning is not precisely known or documented. 51 </p></li><li class="listitem"><p>51 </p></li><li><p> 52 52 In the UDP NTLOGON Mailslots, some "Structures", described here, appear to be 53 53 2-byte aligned with the start of the mailslot, at their start. 54 </p></li><li class="listitem"><p>54 </p></li><li><p> 55 55 Domain SID is of the format S-revision-version-auth1-auth2...authN. 56 56 e.g S-1-5-123-456-789-123-456. the 5 could be a sub-revision. 57 </p></li><li class="listitem"><p>57 </p></li><li><p> 58 58 any undocumented buffer pointers must be non-zero if the string buffer it 59 59 refers to contains characters. exactly what value they should be is unknown. … … 66 66 into the data stream. Exactly what happens with an array of buffer pointers 67 67 is not known, although an educated guess can be made. 68 </p></li><li class="listitem"><p>68 </p></li><li><p> 69 69 an array of structures (a container) appears to have a count and a pointer. 70 70 if the count is zero, the pointer is also zero. no further data is put … … 73 73 count again, followed by an array of container sub-structures. the count 74 74 appears a third time after the last sub-structure. 75 </p></li></ol></div></div><div class="sect2" title="Enumerations"><div class="titlepage"><div><div><h3 class="title"><a name="id2556450"></a>Enumerations</h3></div></div></div><div class="sect3" title="MSRPC Header type"><div class="titlepage"><div><div><h4 class="title"><a name="id2556456"></a>MSRPC Header type</h4></div></div></div><p>command number in the msrpc packet header</p><div class="variablelist"><dl><dt><span class="term">MSRPC_Request:</span></dt><dd><p>0x00</p></dd><dt><span class="term">MSRPC_Response:</span></dt><dd><p>0x02</p></dd><dt><span class="term">MSRPC_Bind:</span></dt><dd><p>0x0B</p></dd><dt><span class="term">MSRPC_BindAck:</span></dt><dd><p>0x0C</p></dd></dl></div></div><div class="sect3" title="MSRPC Packet info"><div class="titlepage"><div><div><h4 class="title"><a name="id2556514"></a>MSRPC Packet info</h4></div></div></div><p>The meaning of these flags is undocumented</p><div class="variablelist"><dl><dt><span class="term">FirstFrag:</span></dt><dd><p>0x01 </p></dd><dt><span class="term">LastFrag:</span></dt><dd><p>0x02 </p></dd><dt><span class="term">NotaFrag:</span></dt><dd><p>0x04 </p></dd><dt><span class="term">RecRespond:</span></dt><dd><p>0x08 </p></dd><dt><span class="term">NoMultiplex:</span></dt><dd><p>0x10 </p></dd><dt><span class="term">NotForIdemp:</span></dt><dd><p>0x20 </p></dd><dt><span class="term">NotforBcast:</span></dt><dd><p>0x40 </p></dd><dt><span class="term">NoUuid:</span></dt><dd><p>0x80 </p></dd></dl></div></div></div><div class="sect2" title="Structures"><div class="titlepage"><div><div><h3 class="title"><a name="id2556613"></a>Structures</h3></div></div></div><div class="sect3" title="VOID *"><div class="titlepage"><div><div><h4 class="title"><a name="id2556618"></a>VOID *</h4></div></div></div><p>sizeof VOID* is 32 bits.</p></div><div class="sect3" title="char"><div class="titlepage"><div><div><h4 class="title"><a name="id2556627"></a>char</h4></div></div></div><p>sizeof char is 8 bits.</p></div><div class="sect3" title="UTIME"><div class="titlepage"><div><div><h4 class="title"><a name="id2556635"></a>UTIME</h4></div></div></div><p>UTIME is 32 bits, indicating time in seconds since 01jan1970. documented in cifs6.txt (section 3.5 page, page 30).</p></div><div class="sect3" title="NTTIME"><div class="titlepage"><div><div><h4 class="title"><a name="id2556646"></a>NTTIME</h4></div></div></div><p>NTTIME is 64 bits. documented in cifs6.txt (section 3.5 page, page 30).</p></div><div class="sect3" title="DOM_SID (domain SID structure)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556656"></a>DOM_SID (domain SID structure)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>num of sub-authorities in domain SID</p></dd><dt><span class="term">UINT8</span></dt><dd><p>SID revision number</p></dd><dt><span class="term">UINT8</span></dt><dd><p>num of sub-authorities in domain SID</p></dd><dt><span class="term">UINT8[6]</span></dt><dd><p>6 bytes for domain SID - Identifier Authority.</p></dd><dt><span class="term">UINT16[n_subauths]</span></dt><dd><p>domain SID sub-authorities</p></dd></dl></div><p><span class="emphasis"><em>Note: the domain SID is documented elsewhere.</em></span>76 </p></div><div class="sect3" title="STR (string)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556728"></a>STR (string)</h4></div></div></div><p>STR (string) is a char[] : a null-terminated string of ascii characters.</p></div><div class="sect3" title="UNIHDR (unicode string header)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556739"></a>UNIHDR (unicode string header) </h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>length of unicode string</p></dd><dt><span class="term">UINT16</span></dt><dd><p>max length of unicode string</p></dd><dt><span class="term">UINT32</span></dt><dd><p>4 - undocumented.</p></dd></dl></div></div><div class="sect3" title="UNIHDR2 (unicode string header plus buffer pointer)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556782"></a>UNIHDR2 (unicode string header plus buffer pointer)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UNIHDR</span></dt><dd><p>unicode string header</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd></dl></div></div><div class="sect3" title="UNISTR (unicode string)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556814"></a>UNISTR (unicode string)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16[]</span></dt><dd><p>null-terminated string of unicode characters.</p></dd></dl></div></div><div class="sect3" title="NAME (length-indicated unicode string)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556835"></a>NAME (length-indicated unicode string)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>length of unicode string</p></dd><dt><span class="term">UINT16[]</span></dt><dd><p>null-terminated string of unicode characters.</p></dd></dl></div></div><div class="sect3" title="UNISTR2 (aligned unicode string)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556868"></a>UNISTR2 (aligned unicode string)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with the start of the SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>max length of unicode string</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>length of unicode string</p></dd><dt><span class="term">UINT16[]</span></dt><dd><p>string of uncode characters</p></dd></dl></div></div><div class="sect3" title="OBJ_ATTR (object attributes)"><div class="titlepage"><div><div><h4 class="title"><a name="id2556933"></a>OBJ_ATTR (object attributes)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0x18 - length (in bytes) including the length field.</p></dd><dt><span class="term">VOID*</span></dt><dd><p>0 - root directory (pointer)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>0 - object name (pointer)</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - attributes (undocumented)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>0 - security descriptior (pointer)</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - security quality of service</p></dd></dl></div></div><div class="sect3" title="POL_HND (LSA policy handle)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557006"></a>POL_HND (LSA policy handle)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[20]</span></dt><dd><p>policy handle</p></dd></dl></div></div><div class="sect3" title="DOM_SID2 (domain SID structure, SIDS stored in unicode)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557026"></a>DOM_SID2 (domain SID structure, SIDS stored in unicode)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>5 - SID type</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UNIHDR2</span></dt><dd><p>domain SID unicode string header</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain SID unicode string</p></dd></dl></div><p><span class="emphasis"><em>Note: there is a conflict between the unicode string header and the unicode string itself as to which to use to indicate string length. this will need to be resolved.</em></span></p><p><span class="emphasis"><em>Note: the SID type indicates, for example, an alias; a well-known group etc. this is documented somewhere.</em></span></p></div><div class="sect3" title="DOM_RID (domain RID structure)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557094"></a>DOM_RID (domain RID structure)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>5 - well-known SID. 1 - user SID (see ShowACLs)</p></dd><dt><span class="term">UINT32</span></dt><dd><p>5 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>domain RID </p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - domain index out of above reference domains</p></dd></dl></div></div><div class="sect3" title="LOG_INFO (server, account, client structure)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557147"></a>LOG_INFO (server, account, client structure)</h4></div></div></div><p><span class="emphasis"><em>Note: logon server name starts with two '\' characters and is upper case.</em></span></p><p><span class="emphasis"><em>Note: account name is the logon client name from the LSA Request Challenge, with a $ on the end of it, in upper case.</em></span></p><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>account name unicode string</p></dd><dt><span class="term">UINT16</span></dt><dd><p>sec_chan - security channel type</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon client machine unicode string</p></dd></dl></div></div><div class="sect3" title="CLNT_SRV (server, client names structure)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557224"></a>CLNT_SRV (server, client names structure)</h4></div></div></div><p><span class="emphasis"><em>Note: logon server name starts with two '\' characters and is upper case.</em></span></p><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon client machine unicode string</p></dd></dl></div></div><div class="sect3" title="CREDS (credentials + time stamp)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557284"></a>CREDS (credentials + time stamp)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[8]</span></dt><dd><p>credentials</p></dd><dt><span class="term">UTIME</span></dt><dd><p>time stamp</p></dd></dl></div></div><div class="sect3" title="CLNT_INFO2 (server, client structure, client credentials)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557315"></a>CLNT_INFO2 (server, client structure, client credentials)</h4></div></div></div><p><span class="emphasis"><em>Note: whenever this structure appears in a request, you must take a copy of the client-calculated credentials received, because they will beused in subsequent credential checks. the presumed intention is to77 maintain an authenticated request/response trail.</em></span></p><div class="variablelist"><dl><dt><span class="term">CLNT_SRV</span></dt><dd><p>client and server names</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>???? padding, for 4-byte alignment with SMB header.</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to client credentials.</p></dd><dt><span class="term">CREDS</span></dt><dd><p>client-calculated credentials + client time</p></dd></dl></div></div><div class="sect3" title="CLNT_INFO (server, account, client structure, client credentials)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557380"></a>CLNT_INFO (server, account, client structure, client credentials)</h4></div></div></div><p><span class="emphasis"><em>Note: whenever this structure appears in a request, you must take a copy of the client-calculated credentials received, because they will be used in subsequent credential checks. the presumed intention is to maintain an authenticated request/response trail.</em></span></p><div class="variablelist"><dl><dt><span class="term">LOG_INFO</span></dt><dd><p>logon account info</p></dd><dt><span class="term">CREDS</span></dt><dd><p>client-calculated credentials + client time</p></dd></dl></div></div><div class="sect3" title="ID_INFO_1 (id info structure, auth level 1)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557421"></a>ID_INFO_1 (id info structure, auth level 1)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>ptr_id_info_1</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>domain name unicode header</p></dd><dt><span class="term">UINT32</span></dt><dd><p>param control</p></dd><dt><span class="term">UINT64</span></dt><dd><p>logon ID</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>user name unicode header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>workgroup name unicode header</p></dd><dt><span class="term">char[16]</span></dt><dd><p>arc4 LM OWF Password</p></dd><dt><span class="term">char[16]</span></dt><dd><p>arc4 NT OWF Password</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>domain name unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>user name unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>workstation name unicode string</p></dd></dl></div></div><div class="sect3" title="SAM_INFO (sam logon/logoff id info structure)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557550"></a>SAM_INFO (sam logon/logoff id info structure)</h4></div></div></div><p><span class="emphasis"><em>Note: presumably, the return credentials is supposedly for the server to verify that the credential chain hasn't been compromised.</em></span></p><div class="variablelist"><dl><dt><span class="term">CLNT_INFO2</span></dt><dd><p>client identification/authentication info</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to return credentials.</p></dd><dt><span class="term">CRED</span></dt><dd><p>return credentials - ignored.</p></dd><dt><span class="term">UINT16</span></dt><dd><p>logon level</p></dd><dt><span class="term">UINT16</span></dt><dd><p>switch value</p></dd></dl></div><pre class="programlisting">75 </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550381"></a>Enumerations</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550386"></a>MSRPC Header type</h4></div></div></div><p>command number in the msrpc packet header</p><div class="variablelist"><dl><dt><span class="term">MSRPC_Request:</span></dt><dd><p>0x00</p></dd><dt><span class="term">MSRPC_Response:</span></dt><dd><p>0x02</p></dd><dt><span class="term">MSRPC_Bind:</span></dt><dd><p>0x0B</p></dd><dt><span class="term">MSRPC_BindAck:</span></dt><dd><p>0x0C</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550444"></a>MSRPC Packet info</h4></div></div></div><p>The meaning of these flags is undocumented</p><div class="variablelist"><dl><dt><span class="term">FirstFrag:</span></dt><dd><p>0x01 </p></dd><dt><span class="term">LastFrag:</span></dt><dd><p>0x02 </p></dd><dt><span class="term">NotaFrag:</span></dt><dd><p>0x04 </p></dd><dt><span class="term">RecRespond:</span></dt><dd><p>0x08 </p></dd><dt><span class="term">NoMultiplex:</span></dt><dd><p>0x10 </p></dd><dt><span class="term">NotForIdemp:</span></dt><dd><p>0x20 </p></dd><dt><span class="term">NotforBcast:</span></dt><dd><p>0x40 </p></dd><dt><span class="term">NoUuid:</span></dt><dd><p>0x80 </p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2550543"></a>Structures</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550548"></a>VOID *</h4></div></div></div><p>sizeof VOID* is 32 bits.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550557"></a>char</h4></div></div></div><p>sizeof char is 8 bits.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550566"></a>UTIME</h4></div></div></div><p>UTIME is 32 bits, indicating time in seconds since 01jan1970. documented in cifs6.txt (section 3.5 page, page 30).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550576"></a>NTTIME</h4></div></div></div><p>NTTIME is 64 bits. documented in cifs6.txt (section 3.5 page, page 30).</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550586"></a>DOM_SID (domain SID structure)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>num of sub-authorities in domain SID</p></dd><dt><span class="term">UINT8</span></dt><dd><p>SID revision number</p></dd><dt><span class="term">UINT8</span></dt><dd><p>num of sub-authorities in domain SID</p></dd><dt><span class="term">UINT8[6]</span></dt><dd><p>6 bytes for domain SID - Identifier Authority.</p></dd><dt><span class="term">UINT16[n_subauths]</span></dt><dd><p>domain SID sub-authorities</p></dd></dl></div><p><span class="emphasis"><em>Note: the domain SID is documented elsewhere.</em></span> 76 </p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550658"></a>STR (string)</h4></div></div></div><p>STR (string) is a char[] : a null-terminated string of ascii characters.</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550669"></a>UNIHDR (unicode string header) </h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>length of unicode string</p></dd><dt><span class="term">UINT16</span></dt><dd><p>max length of unicode string</p></dd><dt><span class="term">UINT32</span></dt><dd><p>4 - undocumented.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550710"></a>UNIHDR2 (unicode string header plus buffer pointer)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UNIHDR</span></dt><dd><p>unicode string header</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550742"></a>UNISTR (unicode string)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16[]</span></dt><dd><p>null-terminated string of unicode characters.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550763"></a>NAME (length-indicated unicode string)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>length of unicode string</p></dd><dt><span class="term">UINT16[]</span></dt><dd><p>null-terminated string of unicode characters.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550796"></a>UNISTR2 (aligned unicode string)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with the start of the SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>max length of unicode string</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>length of unicode string</p></dd><dt><span class="term">UINT16[]</span></dt><dd><p>string of uncode characters</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550861"></a>OBJ_ATTR (object attributes)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0x18 - length (in bytes) including the length field.</p></dd><dt><span class="term">VOID*</span></dt><dd><p>0 - root directory (pointer)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>0 - object name (pointer)</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - attributes (undocumented)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>0 - security descriptior (pointer)</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - security quality of service</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550934"></a>POL_HND (LSA policy handle)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[20]</span></dt><dd><p>policy handle</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2550954"></a>DOM_SID2 (domain SID structure, SIDS stored in unicode)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>5 - SID type</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UNIHDR2</span></dt><dd><p>domain SID unicode string header</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain SID unicode string</p></dd></dl></div><p><span class="emphasis"><em>Note: there is a conflict between the unicode string header and the unicode string itself as to which to use to indicate string length. this will need to be resolved.</em></span></p><p><span class="emphasis"><em>Note: the SID type indicates, for example, an alias; a well-known group etc. this is documented somewhere.</em></span></p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551021"></a>DOM_RID (domain RID structure)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>5 - well-known SID. 1 - user SID (see ShowACLs)</p></dd><dt><span class="term">UINT32</span></dt><dd><p>5 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>domain RID </p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - domain index out of above reference domains</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551075"></a>LOG_INFO (server, account, client structure)</h4></div></div></div><p><span class="emphasis"><em>Note: logon server name starts with two '\' characters and is upper case.</em></span></p><p><span class="emphasis"><em>Note: account name is the logon client name from the LSA Request Challenge, with a $ on the end of it, in upper case.</em></span></p><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>account name unicode string</p></dd><dt><span class="term">UINT16</span></dt><dd><p>sec_chan - security channel type</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon client machine unicode string</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551152"></a>CLNT_SRV (server, client names structure)</h4></div></div></div><p><span class="emphasis"><em>Note: logon server name starts with two '\' characters and is upper case.</em></span></p><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon client machine unicode string</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551212"></a>CREDS (credentials + time stamp)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[8]</span></dt><dd><p>credentials</p></dd><dt><span class="term">UTIME</span></dt><dd><p>time stamp</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551243"></a>CLNT_INFO2 (server, client structure, client credentials)</h4></div></div></div><p><span class="emphasis"><em>Note: whenever this structure appears in a request, you must take a copy of the client-calculated credentials received, because they will beused in subsequent credential checks. the presumed intention is to 77 maintain an authenticated request/response trail.</em></span></p><div class="variablelist"><dl><dt><span class="term">CLNT_SRV</span></dt><dd><p>client and server names</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>???? padding, for 4-byte alignment with SMB header.</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to client credentials.</p></dd><dt><span class="term">CREDS</span></dt><dd><p>client-calculated credentials + client time</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551308"></a>CLNT_INFO (server, account, client structure, client credentials)</h4></div></div></div><p><span class="emphasis"><em>Note: whenever this structure appears in a request, you must take a copy of the client-calculated credentials received, because they will be used in subsequent credential checks. the presumed intention is to maintain an authenticated request/response trail.</em></span></p><div class="variablelist"><dl><dt><span class="term">LOG_INFO</span></dt><dd><p>logon account info</p></dd><dt><span class="term">CREDS</span></dt><dd><p>client-calculated credentials + client time</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551349"></a>ID_INFO_1 (id info structure, auth level 1)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>ptr_id_info_1</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>domain name unicode header</p></dd><dt><span class="term">UINT32</span></dt><dd><p>param control</p></dd><dt><span class="term">UINT64</span></dt><dd><p>logon ID</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>user name unicode header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>workgroup name unicode header</p></dd><dt><span class="term">char[16]</span></dt><dd><p>arc4 LM OWF Password</p></dd><dt><span class="term">char[16]</span></dt><dd><p>arc4 NT OWF Password</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>domain name unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>user name unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>workstation name unicode string</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551478"></a>SAM_INFO (sam logon/logoff id info structure)</h4></div></div></div><p><span class="emphasis"><em>Note: presumably, the return credentials is supposedly for the server to verify that the credential chain hasn't been compromised.</em></span></p><div class="variablelist"><dl><dt><span class="term">CLNT_INFO2</span></dt><dd><p>client identification/authentication info</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to return credentials.</p></dd><dt><span class="term">CRED</span></dt><dd><p>return credentials - ignored.</p></dd><dt><span class="term">UINT16</span></dt><dd><p>logon level</p></dd><dt><span class="term">UINT16</span></dt><dd><p>switch value</p></dd></dl></div><pre class="programlisting"> 78 78 switch (switch_value) 79 79 case 1: … … 81 81 ID_INFO_1 id_info_1; 82 82 } 83 </pre></div><div class="sect3" title="GID (group id info)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557631"></a>GID (group id info)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>group id</p></dd><dt><span class="term">UINT32</span></dt><dd><p>user attributes (only used by NT 3.1 and 3.51)</p></dd></dl></div></div><div class="sect3" title="DOM_REF (domain reference info)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557661"></a>DOM_REF (domain reference info)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num referenced domains?</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name buffer pointer.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>32 - max number of entries</p></dd><dt><span class="term">UINT32</span></dt><dd><p>4 - num referenced domains?</p></dd><dt><span class="term">UNIHDR2</span></dt><dd><p>domain name unicode string header</p></dd><dt><span class="term">UNIHDR2[num_ref_doms-1]</span></dt><dd><p>referenced domain unicode string headers</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain name unicode string</p></dd><dt><span class="term">DOM_SID[num_ref_doms]</span></dt><dd><p>referenced domain SIDs</p></dd></dl></div></div><div class="sect3" title="DOM_INFO (domain info, levels 3 and 5 are the same))"><div class="titlepage"><div><div><h4 class="title"><a name="id2557770"></a>DOM_INFO (domain info, levels 3 and 5 are the same))</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8[]</span></dt><dd><p>??? padding to get 4-byte alignment with start of SMB header</p></dd><dt><span class="term">UINT16</span></dt><dd><p>domain name string length * 2</p></dd><dt><span class="term">UINT16</span></dt><dd><p>domain name string length * 2</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name string buffer pointer</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain SID string buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>domain name (unicode string)</p></dd><dt><span class="term">DOM_SID</span></dt><dd><p>domain SID</p></dd></dl></div></div><div class="sect3" title="USER_INFO (user logon info)"><div class="titlepage"><div><div><h4 class="title"><a name="id2557858"></a>USER_INFO (user logon info)</h4></div></div></div><p><span class="emphasis"><em>Note: it would be nice to know what the 16 byte user session key is for.</em></span></p><div class="variablelist"><dl><dt><span class="term">NTTIME</span></dt><dd><p>logon time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>logoff time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>kickoff time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>password last set time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>password can change time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>password must change time</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>username unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>user's full name unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>logon script unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>profile path unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>home directory unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>home directory drive unicode string header</p></dd><dt><span class="term">UINT16</span></dt><dd><p>logon count</p></dd><dt><span class="term">UINT16</span></dt><dd><p>bad password count</p></dd><dt><span class="term">UINT32</span></dt><dd><p>User ID</p></dd><dt><span class="term">UINT32</span></dt><dd><p>Group ID</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num groups</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer to groups.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>user flags</p></dd><dt><span class="term">char[16]</span></dt><dd><p>user session key</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>logon server unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>logon domain unicode string header</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented logon domain id pointer</p></dd><dt><span class="term">char[40]</span></dt><dd><p>40 undocumented padding bytes. future expansion?</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - num_other_sids?</p></dd><dt><span class="term">VOID*</span></dt><dd><p>NULL - undocumented pointer to other domain SIDs.</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>username unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>user's full name unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon script unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>profile path unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>home directory unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>home directory drive unicode string</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num groups</p></dd><dt><span class="term">GID[num_groups]</span></dt><dd><p>group info</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon domain unicode string</p></dd><dt><span class="term">DOM_SID</span></dt><dd><p>domain SID</p></dd><dt><span class="term">DOM_SID[num_sids]</span></dt><dd><p>other domain SIDs?</p></dd></dl></div></div><div class="sect3" title="SH_INFO_1_PTR (pointers to level 1 share info strings)"><div class="titlepage"><div><div><h4 class="title"><a name="id2558290"></a>SH_INFO_1_PTR (pointers to level 1 share info strings)</h4></div></div></div><p><span class="emphasis"><em>Note: see cifsrap2.txt section5, page 10.</em></span></p><table border="0" summary="Simple list" class="simplelist"><tr><td>0 for shi1_type indicates a Disk.</td></tr><tr><td>1 for shi1_type indicates a Print Queue.</td></tr><tr><td>2 for shi1_type indicates a Device.</td></tr><tr><td>3 for shi1_type indicates an IPC pipe.</td></tr><tr><td>0x8000 0000 (top bit set in shi1_type) indicates a hidden share.</td></tr></table><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>shi1_netname - pointer to net name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>shi1_type - type of share. 0 - undocumented.</p></dd><dt><span class="term">VOID*</span></dt><dd><p>shi1_remark - pointer to comment.</p></dd></dl></div></div><div class="sect3" title="SH_INFO_1_STR (level 1 share info strings)"><div class="titlepage"><div><div><h4 class="title"><a name="id2558366"></a>SH_INFO_1_STR (level 1 share info strings)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UNISTR2</span></dt><dd><p>shi1_netname - unicode string of net name</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>shi1_remark - unicode string of comment.</p></dd></dl></div></div><div class="sect3" title="SHARE_INFO_1_CTR"><div class="titlepage"><div><div><h4 class="title"><a name="id2558399"></a>SHARE_INFO_1_CTR</h4></div></div></div><p>share container with 0 entries:</p><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0 - EntriesRead</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - Buffer</p></dd></dl></div><p>share container with > 0 entries:</p><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>EntriesRead</p></dd><dt><span class="term">UINT32</span></dt><dd><p>non-zero - Buffer</p></dd><dt><span class="term">UINT32</span></dt><dd><p>EntriesRead</p></dd><dt><span class="term">SH_INFO_1_PTR[EntriesRead]</span></dt><dd><p>share entry pointers</p></dd><dt><span class="term">SH_INFO_1_STR[EntriesRead]</span></dt><dd><p>share entry strings</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with start of the SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>EntriesRead</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - padding</p></dd></dl></div></div><div class="sect3" title="SERVER_INFO_101"><div class="titlepage"><div><div><h4 class="title"><a name="id2558528"></a>SERVER_INFO_101</h4></div></div></div><p><span class="emphasis"><em>Note: see cifs6.txt section 6.4 - the fields described therein will be of assistance here. for example, the type listed below is the same as fServerType, which is described in 6.4.1. </em></span></p><div class="variablelist"><dl><dt><span class="term">SV_TYPE_WORKSTATION</span></dt><dd><p>0x00000001 All workstations</p></dd><dt><span class="term">SV_TYPE_SERVER</span></dt><dd><p>0x00000002 All servers</p></dd><dt><span class="term">SV_TYPE_SQLSERVER</span></dt><dd><p>0x00000004 Any server running with SQL server</p></dd><dt><span class="term">SV_TYPE_DOMAIN_CTRL</span></dt><dd><p>0x00000008 Primary domain controller</p></dd><dt><span class="term">SV_TYPE_DOMAIN_BAKCTRL</span></dt><dd><p>0x00000010 Backup domain controller</p></dd><dt><span class="term">SV_TYPE_TIME_SOURCE</span></dt><dd><p>0x00000020 Server running the timesource service</p></dd><dt><span class="term">SV_TYPE_AFP</span></dt><dd><p>0x00000040 Apple File Protocol servers</p></dd><dt><span class="term">SV_TYPE_NOVELL</span></dt><dd><p>0x00000080 Novell servers</p></dd><dt><span class="term">SV_TYPE_DOMAIN_MEMBER</span></dt><dd><p>0x00000100 Domain Member</p></dd><dt><span class="term">SV_TYPE_PRINTQ_SERVER</span></dt><dd><p>0x00000200 Server sharing print queue</p></dd><dt><span class="term">SV_TYPE_DIALIN_SERVER</span></dt><dd><p>0x00000400 Server running dialin service.</p></dd><dt><span class="term">SV_TYPE_XENIX_SERVER</span></dt><dd><p>0x00000800 Xenix server</p></dd><dt><span class="term">SV_TYPE_NT</span></dt><dd><p>0x00001000 NT server</p></dd><dt><span class="term">SV_TYPE_WFW</span></dt><dd><p>0x00002000 Server running Windows for </p></dd><dt><span class="term">SV_TYPE_SERVER_NT</span></dt><dd><p>0x00008000 Windows NT non DC server</p></dd><dt><span class="term">SV_TYPE_POTENTIAL_BROWSER</span></dt><dd><p>0x00010000 Server that can run the browser service</p></dd><dt><span class="term">SV_TYPE_BACKUP_BROWSER</span></dt><dd><p>0x00020000 Backup browser server</p></dd><dt><span class="term">SV_TYPE_MASTER_BROWSER</span></dt><dd><p>0x00040000 Master browser server</p></dd><dt><span class="term">SV_TYPE_DOMAIN_MASTER</span></dt><dd><p>0x00080000 Domain Master Browser server</p></dd><dt><span class="term">SV_TYPE_LOCAL_LIST_ONLY</span></dt><dd><p>0x40000000 Enumerate only entries marked "local"</p></dd><dt><span class="term">SV_TYPE_DOMAIN_ENUM</span></dt><dd><p>0x80000000 Enumerate Domains. The pszServer and pszDomain parameters must be NULL.</p></dd></dl></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>500 - platform_id</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>5 - major version</p></dd><dt><span class="term">UINT32</span></dt><dd><p>4 - minor version</p></dd><dt><span class="term">UINT32</span></dt><dd><p>type (SV_TYPE_... bit field)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to comment</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>sv101_name - unicode string of server name</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>sv_101_comment - unicode string of server comment.</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with start of the SMB header.</p></dd></dl></div></div></div></div><div class="sect1" title="MSRPC over Transact Named Pipe"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2558885"></a>MSRPC over Transact Named Pipe</h2></div></div></div><p>For details on the SMB Transact Named Pipe, see cifs6.txt</p><div class="sect2" title="MSRPC Pipes"><div class="titlepage"><div><div><h3 class="title"><a name="id2558896"></a>MSRPC Pipes</h3></div></div></div><p>83 </pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551559"></a>GID (group id info)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>group id</p></dd><dt><span class="term">UINT32</span></dt><dd><p>user attributes (only used by NT 3.1 and 3.51)</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551589"></a>DOM_REF (domain reference info)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num referenced domains?</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name buffer pointer.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>32 - max number of entries</p></dd><dt><span class="term">UINT32</span></dt><dd><p>4 - num referenced domains?</p></dd><dt><span class="term">UNIHDR2</span></dt><dd><p>domain name unicode string header</p></dd><dt><span class="term">UNIHDR2[num_ref_doms-1]</span></dt><dd><p>referenced domain unicode string headers</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain name unicode string</p></dd><dt><span class="term">DOM_SID[num_ref_doms]</span></dt><dd><p>referenced domain SIDs</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551698"></a>DOM_INFO (domain info, levels 3 and 5 are the same))</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8[]</span></dt><dd><p>??? padding to get 4-byte alignment with start of SMB header</p></dd><dt><span class="term">UINT16</span></dt><dd><p>domain name string length * 2</p></dd><dt><span class="term">UINT16</span></dt><dd><p>domain name string length * 2</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name string buffer pointer</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain SID string buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>domain name (unicode string)</p></dd><dt><span class="term">DOM_SID</span></dt><dd><p>domain SID</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2551786"></a>USER_INFO (user logon info)</h4></div></div></div><p><span class="emphasis"><em>Note: it would be nice to know what the 16 byte user session key is for.</em></span></p><div class="variablelist"><dl><dt><span class="term">NTTIME</span></dt><dd><p>logon time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>logoff time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>kickoff time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>password last set time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>password can change time</p></dd><dt><span class="term">NTTIME</span></dt><dd><p>password must change time</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>username unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>user's full name unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>logon script unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>profile path unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>home directory unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>home directory drive unicode string header</p></dd><dt><span class="term">UINT16</span></dt><dd><p>logon count</p></dd><dt><span class="term">UINT16</span></dt><dd><p>bad password count</p></dd><dt><span class="term">UINT32</span></dt><dd><p>User ID</p></dd><dt><span class="term">UINT32</span></dt><dd><p>Group ID</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num groups</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer to groups.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>user flags</p></dd><dt><span class="term">char[16]</span></dt><dd><p>user session key</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>logon server unicode string header</p></dd><dt><span class="term">UNIHDR</span></dt><dd><p>logon domain unicode string header</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented logon domain id pointer</p></dd><dt><span class="term">char[40]</span></dt><dd><p>40 undocumented padding bytes. future expansion?</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - num_other_sids?</p></dd><dt><span class="term">VOID*</span></dt><dd><p>NULL - undocumented pointer to other domain SIDs.</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>username unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>user's full name unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon script unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>profile path unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>home directory unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>home directory drive unicode string</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num groups</p></dd><dt><span class="term">GID[num_groups]</span></dt><dd><p>group info</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon domain unicode string</p></dd><dt><span class="term">DOM_SID</span></dt><dd><p>domain SID</p></dd><dt><span class="term">DOM_SID[num_sids]</span></dt><dd><p>other domain SIDs?</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552218"></a>SH_INFO_1_PTR (pointers to level 1 share info strings)</h4></div></div></div><p><span class="emphasis"><em>Note: see cifsrap2.txt section5, page 10.</em></span></p><table class="simplelist" border="0" summary="Simple list"><tr><td>0 for shi1_type indicates a Disk.</td></tr><tr><td>1 for shi1_type indicates a Print Queue.</td></tr><tr><td>2 for shi1_type indicates a Device.</td></tr><tr><td>3 for shi1_type indicates an IPC pipe.</td></tr><tr><td>0x8000 0000 (top bit set in shi1_type) indicates a hidden share.</td></tr></table><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>shi1_netname - pointer to net name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>shi1_type - type of share. 0 - undocumented.</p></dd><dt><span class="term">VOID*</span></dt><dd><p>shi1_remark - pointer to comment.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552293"></a>SH_INFO_1_STR (level 1 share info strings)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UNISTR2</span></dt><dd><p>shi1_netname - unicode string of net name</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>shi1_remark - unicode string of comment.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552327"></a>SHARE_INFO_1_CTR</h4></div></div></div><p>share container with 0 entries:</p><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0 - EntriesRead</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - Buffer</p></dd></dl></div><p>share container with > 0 entries:</p><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>EntriesRead</p></dd><dt><span class="term">UINT32</span></dt><dd><p>non-zero - Buffer</p></dd><dt><span class="term">UINT32</span></dt><dd><p>EntriesRead</p></dd><dt><span class="term">SH_INFO_1_PTR[EntriesRead]</span></dt><dd><p>share entry pointers</p></dd><dt><span class="term">SH_INFO_1_STR[EntriesRead]</span></dt><dd><p>share entry strings</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with start of the SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>EntriesRead</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - padding</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2552455"></a>SERVER_INFO_101</h4></div></div></div><p><span class="emphasis"><em>Note: see cifs6.txt section 6.4 - the fields described therein will be of assistance here. for example, the type listed below is the same as fServerType, which is described in 6.4.1. </em></span></p><div class="variablelist"><dl><dt><span class="term">SV_TYPE_WORKSTATION</span></dt><dd><p>0x00000001 All workstations</p></dd><dt><span class="term">SV_TYPE_SERVER</span></dt><dd><p>0x00000002 All servers</p></dd><dt><span class="term">SV_TYPE_SQLSERVER</span></dt><dd><p>0x00000004 Any server running with SQL server</p></dd><dt><span class="term">SV_TYPE_DOMAIN_CTRL</span></dt><dd><p>0x00000008 Primary domain controller</p></dd><dt><span class="term">SV_TYPE_DOMAIN_BAKCTRL</span></dt><dd><p>0x00000010 Backup domain controller</p></dd><dt><span class="term">SV_TYPE_TIME_SOURCE</span></dt><dd><p>0x00000020 Server running the timesource service</p></dd><dt><span class="term">SV_TYPE_AFP</span></dt><dd><p>0x00000040 Apple File Protocol servers</p></dd><dt><span class="term">SV_TYPE_NOVELL</span></dt><dd><p>0x00000080 Novell servers</p></dd><dt><span class="term">SV_TYPE_DOMAIN_MEMBER</span></dt><dd><p>0x00000100 Domain Member</p></dd><dt><span class="term">SV_TYPE_PRINTQ_SERVER</span></dt><dd><p>0x00000200 Server sharing print queue</p></dd><dt><span class="term">SV_TYPE_DIALIN_SERVER</span></dt><dd><p>0x00000400 Server running dialin service.</p></dd><dt><span class="term">SV_TYPE_XENIX_SERVER</span></dt><dd><p>0x00000800 Xenix server</p></dd><dt><span class="term">SV_TYPE_NT</span></dt><dd><p>0x00001000 NT server</p></dd><dt><span class="term">SV_TYPE_WFW</span></dt><dd><p>0x00002000 Server running Windows for </p></dd><dt><span class="term">SV_TYPE_SERVER_NT</span></dt><dd><p>0x00008000 Windows NT non DC server</p></dd><dt><span class="term">SV_TYPE_POTENTIAL_BROWSER</span></dt><dd><p>0x00010000 Server that can run the browser service</p></dd><dt><span class="term">SV_TYPE_BACKUP_BROWSER</span></dt><dd><p>0x00020000 Backup browser server</p></dd><dt><span class="term">SV_TYPE_MASTER_BROWSER</span></dt><dd><p>0x00040000 Master browser server</p></dd><dt><span class="term">SV_TYPE_DOMAIN_MASTER</span></dt><dd><p>0x00080000 Domain Master Browser server</p></dd><dt><span class="term">SV_TYPE_LOCAL_LIST_ONLY</span></dt><dd><p>0x40000000 Enumerate only entries marked "local"</p></dd><dt><span class="term">SV_TYPE_DOMAIN_ENUM</span></dt><dd><p>0x80000000 Enumerate Domains. The pszServer and pszDomain parameters must be NULL.</p></dd></dl></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>500 - platform_id</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>5 - major version</p></dd><dt><span class="term">UINT32</span></dt><dd><p>4 - minor version</p></dd><dt><span class="term">UINT32</span></dt><dd><p>type (SV_TYPE_... bit field)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to comment</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>sv101_name - unicode string of server name</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>sv_101_comment - unicode string of server comment.</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with start of the SMB header.</p></dd></dl></div></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2552813"></a>MSRPC over Transact Named Pipe</h2></div></div></div><p>For details on the SMB Transact Named Pipe, see cifs6.txt</p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552823"></a>MSRPC Pipes</h3></div></div></div><p> 84 84 The MSRPC is conducted over an SMB Transact Pipe with a name of 85 85 <code class="filename">\PIPE\</code>. You must first obtain a 16 bit file handle, by … … 122 122 "\\PIPE\\lsarpc" 0x65 0x63; 0x72 0x70; 0x44 0x65; 123 123 "\\PIPE\\srvsvc" 0x73 0x76; 0x4E 0x00; 0x5C 0x43; 124 </pre></div><div class="sect2" title="Header"><div class="titlepage"><div><div><h3 class="title"><a name="id2558979"></a>Header</h3></div></div></div><p>[section to be rewritten, following receipt of work by Duncan Stansfield]</p><p>Interesting note: if you set packed data representation to 0x0100 0000125 then all 4-byte and 2-byte word ordering is turned around!</p><p>The start of each of the NTLSA and NETLOGON named pipes begins with:</p><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>00</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>5 - RPC major version</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>01</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - RPC minor version</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>02</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>2 - RPC response packet</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>03</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>3 - (FirstFrag bit-wise or with LastFrag)</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>04</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT32</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0x1000 0000 - packed data representation</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>08</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT16</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>fragment length - data size (bytes) inc header and tail.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>0A</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT16</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - authentication length </div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>0C</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT32</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>call identifier. matches 12th UINT32 of incoming RPC data.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>10</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT32</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>allocation hint - data size (bytes) minus header and tail.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>14</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT16</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - presentation context identifier</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>16</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - cancel count</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>17</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>in replies: 0 - reserved; in requests: opnum - see #defines.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>18</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>......</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>start of data (goes on for allocation_hint bytes)</div></div></div><div class="sect3" title="RPC_Packet for request, response, bind and bind acknowledgement"><div class="titlepage"><div><div><h4 class="title"><a name="id2559128"></a>RPC_Packet for request, response, bind and bind acknowledgement</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8 versionmaj</span></dt><dd><p>reply same as request (0x05)</p></dd><dt><span class="term">UINT8 versionmin</span></dt><dd><p>reply same as request (0x00)</p></dd><dt><span class="term">UINT8 type</span></dt><dd><p>one of the MSRPC_Type enums</p></dd><dt><span class="term">UINT8 flags</span></dt><dd><p>reply same as request (0x00 for Bind, 0x03 for Request)</p></dd><dt><span class="term">UINT32 representation</span></dt><dd><p>reply same as request (0x00000010)</p></dd><dt><span class="term">UINT16 fraglength</span></dt><dd><p>the length of the data section of the SMB trans packet</p></dd><dt><span class="term">UINT16 authlength</span></dt><dd><p></p></dd><dt><span class="term">UINT32 callid</span></dt><dd><p>call identifier. (e.g. 0x00149594)</p></dd><dt><span class="term">* stub USE TvPacket</span></dt><dd><p>the remainder of the packet depending on the "type"</p></dd></dl></div></div><div class="sect3" title="Interface identification"><div class="titlepage"><div><div><h4 class="title"><a name="id2559231"></a>Interface identification</h4></div></div></div><p>the interfaces are numbered. as yet I haven't seen more than one interface used on the same pipe name srvsvc</p><pre class="programlisting">124 </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2552907"></a>Header</h3></div></div></div><p>[section to be rewritten, following receipt of work by Duncan Stansfield]</p><p>Interesting note: if you set packed data representation to 0x0100 0000 125 then all 4-byte and 2-byte word ordering is turned around!</p><p>The start of each of the NTLSA and NETLOGON named pipes begins with:</p><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>00</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>5 - RPC major version</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>01</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - RPC minor version</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>02</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>2 - RPC response packet</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>03</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>3 - (FirstFrag bit-wise or with LastFrag)</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>04</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT32</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0x1000 0000 - packed data representation</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>08</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT16</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>fragment length - data size (bytes) inc header and tail.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>0A</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT16</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - authentication length </div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>0C</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT32</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>call identifier. matches 12th UINT32 of incoming RPC data.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>10</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT32</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>allocation hint - data size (bytes) minus header and tail.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>14</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT16</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - presentation context identifier</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>16</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>0 - cancel count</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>17</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>UINT8</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>in replies: 0 - reserved; in requests: opnum - see #defines.</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">offset: </span></strong>18</div><div class="seg"><strong><span class="segtitle">Variable type: </span></strong>......</div><div class="seg"><strong><span class="segtitle">Variable data: </span></strong>start of data (goes on for allocation_hint bytes)</div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553056"></a>RPC_Packet for request, response, bind and bind acknowledgement</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8 versionmaj</span></dt><dd><p>reply same as request (0x05)</p></dd><dt><span class="term">UINT8 versionmin</span></dt><dd><p>reply same as request (0x00)</p></dd><dt><span class="term">UINT8 type</span></dt><dd><p>one of the MSRPC_Type enums</p></dd><dt><span class="term">UINT8 flags</span></dt><dd><p>reply same as request (0x00 for Bind, 0x03 for Request)</p></dd><dt><span class="term">UINT32 representation</span></dt><dd><p>reply same as request (0x00000010)</p></dd><dt><span class="term">UINT16 fraglength</span></dt><dd><p>the length of the data section of the SMB trans packet</p></dd><dt><span class="term">UINT16 authlength</span></dt><dd><p></p></dd><dt><span class="term">UINT32 callid</span></dt><dd><p>call identifier. (e.g. 0x00149594)</p></dd><dt><span class="term">* stub USE TvPacket</span></dt><dd><p>the remainder of the packet depending on the "type"</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553159"></a>Interface identification</h4></div></div></div><p>the interfaces are numbered. as yet I haven't seen more than one interface used on the same pipe name srvsvc</p><pre class="programlisting"> 126 126 abstract (0x4B324FC8, 0x01D31670, 0x475A7812, 0x88E16EBF, 0x00000003) 127 127 transfer (0x8A885D04, 0x11C91CEB, 0x0008E89F, 0x6048102B, 0x00000002) 128 </pre></div><div class="sect3" title="RPC_Iface RW"><div class="titlepage"><div><div><h4 class="title"><a name="id2559252"></a>RPC_Iface RW</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8 byte[16]</span></dt><dd><p>16 bytes of number</p></dd><dt><span class="term">UINT32 version</span></dt><dd><p>the interface number</p></dd></dl></div></div><div class="sect3" title="RPC_ReqBind RW"><div class="titlepage"><div><div><h4 class="title"><a name="id2559281"></a>RPC_ReqBind RW</h4></div></div></div><p>the remainder of the packet after the header if "type" was Bind in the response header, "type" should be BindAck</p><div class="variablelist"><dl><dt><span class="term">UINT16 maxtsize</span></dt><dd><p>maximum transmission fragment size (0x1630)</p></dd><dt><span class="term">UINT16 maxrsize</span></dt><dd><p>max receive fragment size (0x1630)</p></dd><dt><span class="term">UINT32 assocgid</span></dt><dd><p>associated group id (0x0)</p></dd><dt><span class="term">UINT32 numelements</span></dt><dd><p>the number of elements (0x1)</p></dd><dt><span class="term">UINT16 contextid</span></dt><dd><p>presentation context identifier (0x0)</p></dd><dt><span class="term">UINT8 numsyntaxes</span></dt><dd><p>the number of syntaxes (has always been 1?)(0x1)</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>4-byte alignment padding, against SMB header</p></dd><dt><span class="term">* abstractint USE RPC_Iface</span></dt><dd><p>num and vers. of interface client is using</p></dd><dt><span class="term">* transferint USE RPC_Iface</span></dt><dd><p>num and vers. of interface to use for replies</p></dd></dl></div></div><div class="sect3" title="RPC_Address RW"><div class="titlepage"><div><div><h4 class="title"><a name="id2559389"></a>RPC_Address RW</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16 length</span></dt><dd><p>length of the string including null terminator</p></dd><dt><span class="term">* port USE string</span></dt><dd><p>the string above in single byte, null terminated form</p></dd></dl></div></div><div class="sect3" title="RPC_ResBind RW"><div class="titlepage"><div><div><h4 class="title"><a name="id2559420"></a>RPC_ResBind RW</h4></div></div></div><p>the response to place after the header in the reply packet</p><div class="variablelist"><dl><dt><span class="term">UINT16 maxtsize</span></dt><dd><p>same as request</p></dd><dt><span class="term">UINT16 maxrsize</span></dt><dd><p>same as request</p></dd><dt><span class="term">UINT32 assocgid</span></dt><dd><p>zero</p></dd><dt><span class="term">* secondaddr USE RPC_Address</span></dt><dd><p>the address string, as described earlier</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>4-byte alignment padding, against SMB header</p></dd><dt><span class="term">UINT8 numresults</span></dt><dd><p>the number of results (0x01)</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>4-byte alignment padding, against SMB header</p></dd><dt><span class="term">UINT16 result</span></dt><dd><p>result (0x00 = accept)</p></dd><dt><span class="term">UINT16 reason</span></dt><dd><p>reason (0x00 = no reason specified)</p></dd><dt><span class="term">* transfersyntax USE RPC_Iface</span></dt><dd><p>the transfer syntax from the request</p></dd></dl></div></div><div class="sect3" title="RPC_ReqNorm RW"><div class="titlepage"><div><div><h4 class="title"><a name="id2559536"></a>RPC_ReqNorm RW</h4></div></div></div><p>the remainder of the packet after the header for every other other request</p><div class="variablelist"><dl><dt><span class="term">UINT32 allochint</span></dt><dd><p>the size of the stub data in bytes</p></dd><dt><span class="term">UINT16 prescontext</span></dt><dd><p>presentation context identifier (0x0)</p></dd><dt><span class="term">UINT16 opnum</span></dt><dd><p>operation number (0x15)</p></dd><dt><span class="term">* stub USE TvPacket</span></dt><dd><p>a packet dependent on the pipe name (probably the interface) and the op number)</p></dd></dl></div></div><div class="sect3" title="RPC_ResNorm RW"><div class="titlepage"><div><div><h4 class="title"><a name="id2559592"></a>RPC_ResNorm RW</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32 allochint</span></dt><dd><p># size of the stub data in bytes</p></dd><dt><span class="term">UINT16 prescontext</span></dt><dd><p># presentation context identifier (same as request)</p></dd><dt><span class="term">UINT8 cancelcount</span></dt><dd><p># cancel count? (0x0)</p></dd><dt><span class="term">UINT8 reserved</span></dt><dd><p># 0 - one byte padding</p></dd><dt><span class="term">* stub USE TvPacket</span></dt><dd><p># the remainder of the reply</p></dd></dl></div></div></div><div class="sect2" title="Tail"><div class="titlepage"><div><div><h3 class="title"><a name="id2559653"></a>Tail</h3></div></div></div><p>The end of each of the NTLSA and NETLOGON named pipes ends with:</p><div class="variablelist"><dl><dt><span class="term">......</span></dt><dd><p>end of data</p></dd><dt><span class="term">UINT32</span></dt><dd><p>return code</p></dd></dl></div></div><div class="sect2" title="RPC Bind / Bind Ack"><div class="titlepage"><div><div><h3 class="title"><a name="id2559688"></a>RPC Bind / Bind Ack</h3></div></div></div><p>128 </pre></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553180"></a>RPC_Iface RW</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT8 byte[16]</span></dt><dd><p>16 bytes of number</p></dd><dt><span class="term">UINT32 version</span></dt><dd><p>the interface number</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553208"></a>RPC_ReqBind RW</h4></div></div></div><p>the remainder of the packet after the header if "type" was Bind in the response header, "type" should be BindAck</p><div class="variablelist"><dl><dt><span class="term">UINT16 maxtsize</span></dt><dd><p>maximum transmission fragment size (0x1630)</p></dd><dt><span class="term">UINT16 maxrsize</span></dt><dd><p>max receive fragment size (0x1630)</p></dd><dt><span class="term">UINT32 assocgid</span></dt><dd><p>associated group id (0x0)</p></dd><dt><span class="term">UINT32 numelements</span></dt><dd><p>the number of elements (0x1)</p></dd><dt><span class="term">UINT16 contextid</span></dt><dd><p>presentation context identifier (0x0)</p></dd><dt><span class="term">UINT8 numsyntaxes</span></dt><dd><p>the number of syntaxes (has always been 1?)(0x1)</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>4-byte alignment padding, against SMB header</p></dd><dt><span class="term">* abstractint USE RPC_Iface</span></dt><dd><p>num and vers. of interface client is using</p></dd><dt><span class="term">* transferint USE RPC_Iface</span></dt><dd><p>num and vers. of interface to use for replies</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553317"></a>RPC_Address RW</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16 length</span></dt><dd><p>length of the string including null terminator</p></dd><dt><span class="term">* port USE string</span></dt><dd><p>the string above in single byte, null terminated form</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553348"></a>RPC_ResBind RW</h4></div></div></div><p>the response to place after the header in the reply packet</p><div class="variablelist"><dl><dt><span class="term">UINT16 maxtsize</span></dt><dd><p>same as request</p></dd><dt><span class="term">UINT16 maxrsize</span></dt><dd><p>same as request</p></dd><dt><span class="term">UINT32 assocgid</span></dt><dd><p>zero</p></dd><dt><span class="term">* secondaddr USE RPC_Address</span></dt><dd><p>the address string, as described earlier</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>4-byte alignment padding, against SMB header</p></dd><dt><span class="term">UINT8 numresults</span></dt><dd><p>the number of results (0x01)</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>4-byte alignment padding, against SMB header</p></dd><dt><span class="term">UINT16 result</span></dt><dd><p>result (0x00 = accept)</p></dd><dt><span class="term">UINT16 reason</span></dt><dd><p>reason (0x00 = no reason specified)</p></dd><dt><span class="term">* transfersyntax USE RPC_Iface</span></dt><dd><p>the transfer syntax from the request</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553464"></a>RPC_ReqNorm RW</h4></div></div></div><p>the remainder of the packet after the header for every other other request</p><div class="variablelist"><dl><dt><span class="term">UINT32 allochint</span></dt><dd><p>the size of the stub data in bytes</p></dd><dt><span class="term">UINT16 prescontext</span></dt><dd><p>presentation context identifier (0x0)</p></dd><dt><span class="term">UINT16 opnum</span></dt><dd><p>operation number (0x15)</p></dd><dt><span class="term">* stub USE TvPacket</span></dt><dd><p>a packet dependent on the pipe name (probably the interface) and the op number)</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553519"></a>RPC_ResNorm RW</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32 allochint</span></dt><dd><p># size of the stub data in bytes</p></dd><dt><span class="term">UINT16 prescontext</span></dt><dd><p># presentation context identifier (same as request)</p></dd><dt><span class="term">UINT8 cancelcount</span></dt><dd><p># cancel count? (0x0)</p></dd><dt><span class="term">UINT8 reserved</span></dt><dd><p># 0 - one byte padding</p></dd><dt><span class="term">* stub USE TvPacket</span></dt><dd><p># the remainder of the reply</p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553580"></a>Tail</h3></div></div></div><p>The end of each of the NTLSA and NETLOGON named pipes ends with:</p><div class="variablelist"><dl><dt><span class="term">......</span></dt><dd><p>end of data</p></dd><dt><span class="term">UINT32</span></dt><dd><p>return code</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553616"></a>RPC Bind / Bind Ack</h3></div></div></div><p> 129 129 RPC Binds are the process of associating an RPC pipe (e.g \PIPE\lsarpc) 130 130 with a "transfer syntax" (see RPC_Iface structure). The purpose for doing … … 134 134 RPC_ResBind member transfersyntax is the same in the response as 135 135 the</em></span></p><p><span class="emphasis"><em>Note: The RPC_ResBind response member secondaddr contains the name of what is presumed to be the service behind the RPC pipe. The 136 mapping identified so far is:</em></span></p><div class="variablelist"><dl><dt><span class="term">initial SMBopenX request:</span></dt><dd><p>RPC_ResBind response:</p></dd><dt><span class="term">"\\PIPE\\srvsvc"</span></dt><dd><p>"\\PIPE\\ntsvcs"</p></dd><dt><span class="term">"\\PIPE\\samr"</span></dt><dd><p>"\\PIPE\\lsass"</p></dd><dt><span class="term">"\\PIPE\\lsarpc"</span></dt><dd><p>"\\PIPE\\lsass"</p></dd><dt><span class="term">"\\PIPE\\wkssvc"</span></dt><dd><p>"\\PIPE\\wksvcs"</p></dd><dt><span class="term">"\\PIPE\\NETLOGON"</span></dt><dd><p>"\\PIPE\\NETLOGON"</p></dd></dl></div><p><span class="emphasis"><em>Note: The RPC_Packet fraglength member in both the Bind Request and Bind Acknowledgment must contain the length of the entire RPC data, including the RPC_Packet header.</em></span></p><p>Request:</p><table border="0" summary="Simple list" class="simplelist"><tr><td>RPC_Packet</td></tr><tr><td>RPC_ReqBind</td></tr></table><p>Response:</p><table border="0" summary="Simple list" class="simplelist"><tr><td>RPC_Packet</td></tr><tr><td>RPC_ResBind</td></tr></table></div><div class="sect2" title="NTLSA Transact Named Pipe"><div class="titlepage"><div><div><h3 class="title"><a name="id2559827"></a>NTLSA Transact Named Pipe</h3></div></div></div><p>The sequence of actions taken on this pipe are:</p><table border="0" summary="Simple list" class="simplelist"><tr><td>Establish a connection to the IPC$ share (SMBtconX). use encrypted passwords.</td></tr><tr><td>Open an RPC Pipe with the name "\\PIPE\\lsarpc". Store the file handle.</td></tr><tr><td>Using the file handle, send a Set Named Pipe Handle state to 0x4300.</td></tr><tr><td>Send an LSA Open Policy request. Store the Policy Handle.</td></tr><tr><td>Using the Policy Handle, send LSA Query Info Policy requests, etc.</td></tr><tr><td>Using the Policy Handle, send an LSA Close.</td></tr><tr><td>Close the IPC$ share.</td></tr></table><p>Defines for this pipe, identifying the query are:</p><div class="variablelist"><dl><dt><span class="term">LSA Open Policy:</span></dt><dd><p>0x2c</p></dd><dt><span class="term">LSA Query Info Policy:</span></dt><dd><p>0x07</p></dd><dt><span class="term">LSA Enumerate Trusted Domains:</span></dt><dd><p>0x0d</p></dd><dt><span class="term">LSA Open Secret:</span></dt><dd><p>0xff</p></dd><dt><span class="term">LSA Lookup SIDs:</span></dt><dd><p>0xfe</p></dd><dt><span class="term">LSA Lookup Names:</span></dt><dd><p>0xfd</p></dd><dt><span class="term">LSA Close:</span></dt><dd><p>0x00</p></dd></dl></div></div><div class="sect2" title="LSA Open Policy"><div class="titlepage"><div><div><h3 class="title"><a name="id2559955"></a>LSA Open Policy</h3></div></div></div><p><span class="emphasis"><em>Note: The policy handle can be anything you like.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2559965"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>server name - unicode string starting with two '\'s</p></dd><dt><span class="term">OBJ_ATTR</span></dt><dd><p>object attributes</p></dd><dt><span class="term">UINT32</span></dt><dd><p>1 - desired access</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560019"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">return</span></dt><dd><p>0 - indicates success</p></dd></dl></div></div></div><div class="sect2" title="LSA Query Info Policy"><div class="titlepage"><div><div><h3 class="title"><a name="id2560051"></a>LSA Query Info Policy</h3></div></div></div><p><span class="emphasis"><em>Note: The info class in response must be the same as that in the request.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560062"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">UINT16</span></dt><dd><p>info class (also a policy handle?)</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560091"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UINT16</span></dt><dd><p>info class (same as info class in request).</p></dd></dl></div><pre class="programlisting">136 mapping identified so far is:</em></span></p><div class="variablelist"><dl><dt><span class="term">initial SMBopenX request:</span></dt><dd><p>RPC_ResBind response:</p></dd><dt><span class="term">"\\PIPE\\srvsvc"</span></dt><dd><p>"\\PIPE\\ntsvcs"</p></dd><dt><span class="term">"\\PIPE\\samr"</span></dt><dd><p>"\\PIPE\\lsass"</p></dd><dt><span class="term">"\\PIPE\\lsarpc"</span></dt><dd><p>"\\PIPE\\lsass"</p></dd><dt><span class="term">"\\PIPE\\wkssvc"</span></dt><dd><p>"\\PIPE\\wksvcs"</p></dd><dt><span class="term">"\\PIPE\\NETLOGON"</span></dt><dd><p>"\\PIPE\\NETLOGON"</p></dd></dl></div><p><span class="emphasis"><em>Note: The RPC_Packet fraglength member in both the Bind Request and Bind Acknowledgment must contain the length of the entire RPC data, including the RPC_Packet header.</em></span></p><p>Request:</p><table class="simplelist" border="0" summary="Simple list"><tr><td>RPC_Packet</td></tr><tr><td>RPC_ReqBind</td></tr></table><p>Response:</p><table class="simplelist" border="0" summary="Simple list"><tr><td>RPC_Packet</td></tr><tr><td>RPC_ResBind</td></tr></table></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553755"></a>NTLSA Transact Named Pipe</h3></div></div></div><p>The sequence of actions taken on this pipe are:</p><table class="simplelist" border="0" summary="Simple list"><tr><td>Establish a connection to the IPC$ share (SMBtconX). use encrypted passwords.</td></tr><tr><td>Open an RPC Pipe with the name "\\PIPE\\lsarpc". Store the file handle.</td></tr><tr><td>Using the file handle, send a Set Named Pipe Handle state to 0x4300.</td></tr><tr><td>Send an LSA Open Policy request. Store the Policy Handle.</td></tr><tr><td>Using the Policy Handle, send LSA Query Info Policy requests, etc.</td></tr><tr><td>Using the Policy Handle, send an LSA Close.</td></tr><tr><td>Close the IPC$ share.</td></tr></table><p>Defines for this pipe, identifying the query are:</p><div class="variablelist"><dl><dt><span class="term">LSA Open Policy:</span></dt><dd><p>0x2c</p></dd><dt><span class="term">LSA Query Info Policy:</span></dt><dd><p>0x07</p></dd><dt><span class="term">LSA Enumerate Trusted Domains:</span></dt><dd><p>0x0d</p></dd><dt><span class="term">LSA Open Secret:</span></dt><dd><p>0xff</p></dd><dt><span class="term">LSA Lookup SIDs:</span></dt><dd><p>0xfe</p></dd><dt><span class="term">LSA Lookup Names:</span></dt><dd><p>0xfd</p></dd><dt><span class="term">LSA Close:</span></dt><dd><p>0x00</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553883"></a>LSA Open Policy</h3></div></div></div><p><span class="emphasis"><em>Note: The policy handle can be anything you like.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553893"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>server name - unicode string starting with two '\'s</p></dd><dt><span class="term">OBJ_ATTR</span></dt><dd><p>object attributes</p></dd><dt><span class="term">UINT32</span></dt><dd><p>1 - desired access</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553946"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">return</span></dt><dd><p>0 - indicates success</p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2553978"></a>LSA Query Info Policy</h3></div></div></div><p><span class="emphasis"><em>Note: The info class in response must be the same as that in the request.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2553989"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">UINT16</span></dt><dd><p>info class (also a policy handle?)</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554019"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UINT16</span></dt><dd><p>info class (same as info class in request).</p></dd></dl></div><pre class="programlisting"> 137 137 switch (info class) 138 138 case 3: … … 143 143 144 144 return 0 - indicates success 145 </pre></div></div><div class="sect2" title="LSA Enumerate Trusted Domains"><div class="titlepage"><div><div><h3 class="title"><a name="id2560132"></a>LSA Enumerate Trusted Domains</h3></div></div></div><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560138"></a>Request</h4></div></div></div><p>no extra data</p></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560148"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0 - enumeration context</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - entries read</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - trust information</p></dd><dt><span class="term">return</span></dt><dd><p>0x8000 001a - "no trusted domains" success code</p></dd></dl></div></div></div><div class="sect2" title="LSA Open Secret"><div class="titlepage"><div><div><h3 class="title"><a name="id2560202"></a>LSA Open Secret</h3></div></div></div><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560208"></a>Request</h4></div></div></div><p>no extra data</p></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560217"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd></dl></div><p>return 0x0C00 0034 - "no such secret" success code</p></div></div><div class="sect2" title="LSA Close"><div class="titlepage"><div><div><h3 class="title"><a name="id2560285"></a>LSA Close</h3></div></div></div><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560291"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>policy handle to be closed</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560311"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>0s - closed policy handle (all zeros)</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" title="LSA Lookup SIDS"><div class="titlepage"><div><div><h3 class="title"><a name="id2560336"></a>LSA Lookup SIDS</h3></div></div></div><p><span class="emphasis"><em>Note: num_entries in response must be same as num_entries in request.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560347"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain SID buffer pointer</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name buffer pointer</p></dd><dt><span class="term">VOID*[num_entries] undocumented domain SID pointers to be looked up.146 </span></dt><dd><p>DOM_SID[num_entries] domain SIDs to be looked up.</p></dd><dt><span class="term">char[16]</span></dt><dd><p>completely undocumented 16 bytes.</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560424"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">DOM_REF</span></dt><dd><p>domain reference response</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">DOM_SID2[num_entries]</span></dt><dd><p>domain SIDs (from Request, listed above).</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" title="LSA Lookup Names"><div class="titlepage"><div><div><h3 class="title"><a name="id2560497"></a>LSA Lookup Names</h3></div></div></div><p><span class="emphasis"><em>Note: num_entries in response must be same as num_entries in request.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560508"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain SID buffer pointer</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name buffer pointer</p></dd><dt><span class="term">NAME[num_entries]</span></dt><dd><p>names to be looked up.</p></dd><dt><span class="term">char[]</span></dt><dd><p>undocumented bytes - falsely translated SID structure?</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560595"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">DOM_REF</span></dt><dd><p>domain reference response</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">DOM_RID[num_entries]</span></dt><dd><p>domain SIDs (from Request, listed above).</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd></dl></div><p>return 0 - indicates success</p></div></div></div><div class="sect1" title="NETLOGON rpc Transact Named Pipe"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560669"></a>NETLOGON rpc Transact Named Pipe</h2></div></div></div><p>The sequence of actions taken on this pipe are:</p><table border="0" summary="Simple list" class="simplelist"><tr><td>tablish a connection to the IPC$ share (SMBtconX). use encrypted passwords.</td></tr><tr><td>en an RPC Pipe with the name "\\PIPE\\NETLOGON". Store the file handle.</td></tr><tr><td>ing the file handle, send a Set Named Pipe Handle state to 0x4300.</td></tr><tr><td>eate Client Challenge. Send LSA Request Challenge. Store Server Challenge.</td></tr><tr><td>lculate Session Key. Send an LSA Auth 2 Challenge. Store Auth2 Challenge.</td></tr><tr><td>lc/Verify Client Creds. Send LSA Srv PW Set. Calc/Verify Server Creds.</td></tr><tr><td>lc/Verify Client Creds. Send LSA SAM Logon . Calc/Verify Server Creds.</td></tr><tr><td>lc/Verify Client Creds. Send LSA SAM Logoff. Calc/Verify Server Creds.</td></tr><tr><td>ose the IPC$ share.</td></tr></table><p>Defines for this pipe, identifying the query are</p><div class="variablelist"><dl><dt><span class="term">LSA Request Challenge:</span></dt><dd><p>0x04</p></dd><dt><span class="term">LSA Server Password Set:</span></dt><dd><p>0x06</p></dd><dt><span class="term">LSA SAM Logon:</span></dt><dd><p>0x02</p></dd><dt><span class="term">LSA SAM Logoff:</span></dt><dd><p>0x03</p></dd><dt><span class="term">LSA Auth 2:</span></dt><dd><p>0x0f</p></dd><dt><span class="term">LSA Logon Control:</span></dt><dd><p>0x0e</p></dd></dl></div><div class="sect2" title="LSA Request Challenge"><div class="titlepage"><div><div><h3 class="title"><a name="id2560795"></a>LSA Request Challenge</h3></div></div></div><p><span class="emphasis"><em>Note: logon server name starts with two '\' characters and is upper case.</em></span></p><p><span class="emphasis"><em>Note: logon client is the machine, not the user.</em></span></p><p><span class="emphasis"><em>Note: the initial LanManager password hash, against which the challenge is issued, is the machine name itself (lower case). there will becalls issued (LSA Server Password Set) which will change this, later. refusing these calls allows you to always deal with the same password (i.e the LM# of the machine name in lower case).</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560827"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon client unicode string</p></dd><dt><span class="term">char[8]</span></dt><dd><p>client challenge</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560879"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[8]</span></dt><dd><p>server challenge</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" title="LSA Authenticate 2"><div class="titlepage"><div><div><h3 class="title"><a name="id2560904"></a>LSA Authenticate 2</h3></div></div></div><p><span class="emphasis"><em>Note: in between request and response, calculate the client credentials, and check them against the client-calculated credentials (this process uses the previously received client credentials).</em></span></p><p><span class="emphasis"><em>Note: neg_flags in the response is the same as that in the request.</em></span></p><p><span class="emphasis"><em>Note: you must take a copy of the client-calculated credentials received here, because they will be used in subsequent authentication packets.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2560929"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">LOG_INFO</span></dt><dd><p>client identification info</p></dd><dt><span class="term">char[8]</span></dt><dd><p>client-calculated credentials</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to 4-byte align with start of SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>neg_flags - negotiated flags (usual value is 0x0000 01ff)</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2560982"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[8]</span></dt><dd><p>server credentials.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>neg_flags - same as neg_flags in request.</p></dd></dl></div><p>return 0 - indicates success. failure value unknown.</p></div></div><div class="sect2" title="LSA Server Password Set"><div class="titlepage"><div><div><h3 class="title"><a name="id2561019"></a>LSA Server Password Set</h3></div></div></div><p><span class="emphasis"><em>Note: the new password is suspected to be a DES encryption using the old password to generate the key.</em></span></p><p><span class="emphasis"><em>Note: in between request and response, calculate the client credentials, and check them against the client-calculated credentials (this process uses the previously received client credentials).</em></span></p><p><span class="emphasis"><em>Note: the server credentials are constructed from the client-calculated credentials and the client time + 1 second.</em></span></p><p><span class="emphasis"><em>Note: you must take a copy of the client-calculated credentials received here, because they will be used in subsequent authentication packets.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2561051"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">CLNT_INFO</span></dt><dd><p>client identification/authentication info</p></dd><dt><span class="term">char[]</span></dt><dd><p>new password - undocumented.</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2561084"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">CREDS</span></dt><dd><p>server credentials. server time stamp appears to be ignored.</p></dd></dl></div><p>return 0 - indicates success; 0xC000 006a indicates failure</p></div></div><div class="sect2" title="LSA SAM Logon"><div class="titlepage"><div><div><h3 class="title"><a name="id2561111"></a>LSA SAM Logon</h3></div></div></div><p><span class="emphasis"><em>145 </pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554060"></a>LSA Enumerate Trusted Domains</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554066"></a>Request</h4></div></div></div><p>no extra data</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554076"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0 - enumeration context</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - entries read</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - trust information</p></dd><dt><span class="term">return</span></dt><dd><p>0x8000 001a - "no trusted domains" success code</p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554130"></a>LSA Open Secret</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554135"></a>Request</h4></div></div></div><p>no extra data</p></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554145"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd><dt><span class="term">UINT32</span></dt><dd><p>0 - undocumented</p></dd></dl></div><p>return 0x0C00 0034 - "no such secret" success code</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554213"></a>LSA Close</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554218"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>policy handle to be closed</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554239"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>0s - closed policy handle (all zeros)</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554264"></a>LSA Lookup SIDS</h3></div></div></div><p><span class="emphasis"><em>Note: num_entries in response must be same as num_entries in request.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554275"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain SID buffer pointer</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name buffer pointer</p></dd><dt><span class="term">VOID*[num_entries] undocumented domain SID pointers to be looked up. 146 </span></dt><dd><p>DOM_SID[num_entries] domain SIDs to be looked up.</p></dd><dt><span class="term">char[16]</span></dt><dd><p>completely undocumented 16 bytes.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554352"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">DOM_REF</span></dt><dd><p>domain reference response</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">DOM_SID2[num_entries]</span></dt><dd><p>domain SIDs (from Request, listed above).</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554425"></a>LSA Lookup Names</h3></div></div></div><p><span class="emphasis"><em>Note: num_entries in response must be same as num_entries in request.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554436"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">POL_HND</span></dt><dd><p>LSA policy handle</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain SID buffer pointer</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented domain name buffer pointer</p></dd><dt><span class="term">NAME[num_entries]</span></dt><dd><p>names to be looked up.</p></dd><dt><span class="term">char[]</span></dt><dd><p>undocumented bytes - falsely translated SID structure?</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554523"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">DOM_REF</span></dt><dd><p>domain reference response</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd><dt><span class="term">DOM_RID[num_entries]</span></dt><dd><p>domain SIDs (from Request, listed above).</p></dd><dt><span class="term">UINT32</span></dt><dd><p>num_entries (listed above)</p></dd></dl></div><p>return 0 - indicates success</p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2554597"></a>NETLOGON rpc Transact Named Pipe</h2></div></div></div><p>The sequence of actions taken on this pipe are:</p><table class="simplelist" border="0" summary="Simple list"><tr><td>tablish a connection to the IPC$ share (SMBtconX). use encrypted passwords.</td></tr><tr><td>en an RPC Pipe with the name "\\PIPE\\NETLOGON". Store the file handle.</td></tr><tr><td>ing the file handle, send a Set Named Pipe Handle state to 0x4300.</td></tr><tr><td>eate Client Challenge. Send LSA Request Challenge. Store Server Challenge.</td></tr><tr><td>lculate Session Key. Send an LSA Auth 2 Challenge. Store Auth2 Challenge.</td></tr><tr><td>lc/Verify Client Creds. Send LSA Srv PW Set. Calc/Verify Server Creds.</td></tr><tr><td>lc/Verify Client Creds. Send LSA SAM Logon . Calc/Verify Server Creds.</td></tr><tr><td>lc/Verify Client Creds. Send LSA SAM Logoff. Calc/Verify Server Creds.</td></tr><tr><td>ose the IPC$ share.</td></tr></table><p>Defines for this pipe, identifying the query are</p><div class="variablelist"><dl><dt><span class="term">LSA Request Challenge:</span></dt><dd><p>0x04</p></dd><dt><span class="term">LSA Server Password Set:</span></dt><dd><p>0x06</p></dd><dt><span class="term">LSA SAM Logon:</span></dt><dd><p>0x02</p></dd><dt><span class="term">LSA SAM Logoff:</span></dt><dd><p>0x03</p></dd><dt><span class="term">LSA Auth 2:</span></dt><dd><p>0x0f</p></dd><dt><span class="term">LSA Logon Control:</span></dt><dd><p>0x0e</p></dd></dl></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554723"></a>LSA Request Challenge</h3></div></div></div><p><span class="emphasis"><em>Note: logon server name starts with two '\' characters and is upper case.</em></span></p><p><span class="emphasis"><em>Note: logon client is the machine, not the user.</em></span></p><p><span class="emphasis"><em>Note: the initial LanManager password hash, against which the challenge is issued, is the machine name itself (lower case). there will becalls issued (LSA Server Password Set) which will change this, later. refusing these calls allows you to always deal with the same password (i.e the LM# of the machine name in lower case).</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554754"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon server unicode string</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>logon client unicode string</p></dd><dt><span class="term">char[8]</span></dt><dd><p>client challenge</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554807"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[8]</span></dt><dd><p>server challenge</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554832"></a>LSA Authenticate 2</h3></div></div></div><p><span class="emphasis"><em>Note: in between request and response, calculate the client credentials, and check them against the client-calculated credentials (this process uses the previously received client credentials).</em></span></p><p><span class="emphasis"><em>Note: neg_flags in the response is the same as that in the request.</em></span></p><p><span class="emphasis"><em>Note: you must take a copy of the client-calculated credentials received here, because they will be used in subsequent authentication packets.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554857"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">LOG_INFO</span></dt><dd><p>client identification info</p></dd><dt><span class="term">char[8]</span></dt><dd><p>client-calculated credentials</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to 4-byte align with start of SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>neg_flags - negotiated flags (usual value is 0x0000 01ff)</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554910"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">char[8]</span></dt><dd><p>server credentials.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>neg_flags - same as neg_flags in request.</p></dd></dl></div><p>return 0 - indicates success. failure value unknown.</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2554947"></a>LSA Server Password Set</h3></div></div></div><p><span class="emphasis"><em>Note: the new password is suspected to be a DES encryption using the old password to generate the key.</em></span></p><p><span class="emphasis"><em>Note: in between request and response, calculate the client credentials, and check them against the client-calculated credentials (this process uses the previously received client credentials).</em></span></p><p><span class="emphasis"><em>Note: the server credentials are constructed from the client-calculated credentials and the client time + 1 second.</em></span></p><p><span class="emphasis"><em>Note: you must take a copy of the client-calculated credentials received here, because they will be used in subsequent authentication packets.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2554979"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">CLNT_INFO</span></dt><dd><p>client identification/authentication info</p></dd><dt><span class="term">char[]</span></dt><dd><p>new password - undocumented.</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555011"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">CREDS</span></dt><dd><p>server credentials. server time stamp appears to be ignored.</p></dd></dl></div><p>return 0 - indicates success; 0xC000 006a indicates failure</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555038"></a>LSA SAM Logon</h3></div></div></div><p><span class="emphasis"><em> 147 147 Note: valid_user is True iff the username and password hash are valid for 148 148 the requested domain. 149 </em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2561122"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">SAM_INFO</span></dt><dd><p>sam_id structure</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2561142"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">CREDS</span></dt><dd><p>server credentials. server time stamp appears to be ignored.</p></dd></dl></div><pre class="programlisting">149 </em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555050"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">SAM_INFO</span></dt><dd><p>sam_id structure</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555070"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">CREDS</span></dt><dd><p>server credentials. server time stamp appears to be ignored.</p></dd></dl></div><pre class="programlisting"> 150 150 if (valid_user) 151 151 { … … 167 167 return 0xC000 0064 - NT_STATUS_NO_SUCH_USER. 168 168 } 169 </pre></div></div><div class="sect2" title="LSA SAM Logoff"><div class="titlepage"><div><div><h3 class="title"><a name="id2561190"></a>LSA SAM Logoff</h3></div></div></div><p><span class="emphasis"><em>169 </pre></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555118"></a>LSA SAM Logoff</h3></div></div></div><p><span class="emphasis"><em> 170 170 Note: presumably, the SAM_INFO structure is validated, and a (currently 171 171 undocumented) error code returned if the Logoff is invalid. 172 </em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2561202"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">SAM_INFO</span></dt><dd><p>sam_id structure</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2561223"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">CREDS</span></dt><dd><p>server credentials. server time stamp appears to be ignored.</p></dd></dl></div><p>return 0 - indicates success. undocumented failure indication.</p></div></div></div><div class="sect1" title="\\MAILSLOT\NET\NTLOGON"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561262"></a>\\MAILSLOT\NET\NTLOGON</h2></div></div></div><p><span class="emphasis"><em>172 </em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555130"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">SAM_INFO</span></dt><dd><p>sam_id structure</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555150"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>undocumented buffer pointer</p></dd><dt><span class="term">CREDS</span></dt><dd><p>server credentials. server time stamp appears to be ignored.</p></dd></dl></div><p>return 0 - indicates success. undocumented failure indication.</p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2555189"></a>\\MAILSLOT\NET\NTLOGON</h2></div></div></div><p><span class="emphasis"><em> 173 173 Note: mailslots will contain a response mailslot, to which the response 174 174 should be sent. the target NetBIOS name is REQUEST_NAME<20>, where 175 175 REQUEST_NAME is the name of the machine that sent the request. 176 </em></span></p><div class="sect2" title="Query for PDC"><div class="titlepage"><div><div><h3 class="title"><a name="id2561276"></a>Query for PDC</h3></div></div></div><p><span class="emphasis"><em>Note: NTversion, LMNTtoken, LM20token in response are the same as those given in the request.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2561287"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x0007 - Query for PDC</p></dd><dt><span class="term">STR</span></dt><dd><p>machine name</p></dd><dt><span class="term">STR</span></dt><dd><p>response mailslot</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to 2-byte align with start of mailslot.</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2561383"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x000A - Respose to Query for PDC</p></dd><dt><span class="term">STR</span></dt><dd><p>machine name (in uppercase)</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to 2-byte align with start of mailslot.</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion (same as received in request)</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken (same as received in request)</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token (same as received in request)</p></dd></dl></div></div></div><div class="sect2" title="SAM Logon"><div class="titlepage"><div><div><h3 class="title"><a name="id2561476"></a>SAM Logon</h3></div></div></div><p><span class="emphasis"><em>Note: machine name in response is preceded by two '\' characters.</em></span></p><p><span class="emphasis"><em>Note: NTversion, LMNTtoken, LM20token in response are the same as those given in the request.</em></span></p><p><span class="emphasis"><em>Note: user name in the response is presumably the same as that in the request.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2561499"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x0012 - SAM Logon</p></dd><dt><span class="term">UINT16</span></dt><dd><p>request count</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>user name</p></dd><dt><span class="term">STR</span></dt><dd><p>response mailslot</p></dd><dt><span class="term">UINT32</span></dt><dd><p>alloweable account</p></dd><dt><span class="term">UINT32</span></dt><dd><p>domain SID size</p></dd><dt><span class="term">char[sid_size]</span></dt><dd><p>domain SID, of sid_size bytes.</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>???? padding to 4? 2? -byte align with start of mailslot.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2561638"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x0013 - Response to SAM Logon</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>user name - workstation trust account</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain name </p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token</p></dd></dl></div></div></div></div><div class="sect1" title="SRVSVC Transact Named Pipe"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2561726"></a>SRVSVC Transact Named Pipe</h2></div></div></div><p>Defines for this pipe, identifying the query are:</p><div class="variablelist"><dl><dt><span class="term">Net Share Enum</span></dt><dd><p>0x0f</p></dd><dt><span class="term">Net Server Get Info</span></dt><dd><p>0x15</p></dd></dl></div><div class="sect2" title="Net Share Enum"><div class="titlepage"><div><div><h3 class="title"><a name="id2561760"></a>Net Share Enum</h3></div></div></div><p><span class="emphasis"><em>Note: share level and switch value in the response are presumably the same as those in the request.</em></span></p><p><span class="emphasis"><em>Note: cifsrap2.txt (section 5) may be of limited assistance here.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2561777"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>pointer (to server name?)</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>server name</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with the start of the SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>share level</p></dd><dt><span class="term">UINT32</span></dt><dd><p>switch value</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to SHARE_INFO_1_CTR</p></dd><dt><span class="term">SHARE_INFO_1_CTR</span></dt><dd><p>share info with 0 entries</p></dd><dt><span class="term">UINT32</span></dt><dd><p>preferred maximum length (0xffff ffff)</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2561872"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>share level</p></dd><dt><span class="term">UINT32</span></dt><dd><p>switch value</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to SHARE_INFO_1_CTR</p></dd><dt><span class="term">SHARE_INFO_1_CTR</span></dt><dd><p>share info (only added if share info ptr is non-zero)</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" title="Net Server Get Info"><div class="titlepage"><div><div><h3 class="title"><a name="id2561928"></a>Net Server Get Info</h3></div></div></div><p><span class="emphasis"><em>Note: level is the same value as in the request.</em></span></p><div class="sect3" title="Request"><div class="titlepage"><div><div><h4 class="title"><a name="id2561939"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UNISTR2</span></dt><dd><p>server name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>switch level</p></dd></dl></div></div><div class="sect3" title="Response"><div class="titlepage"><div><div><h4 class="title"><a name="id2561970"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>switch level</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to SERVER_INFO_101</p></dd><dt><span class="term">SERVER_INFO_101</span></dt><dd><p>server info (only added if server info ptr is non-zero)</p></dd></dl></div><p>return 0 - indicates success</p></div></div></div><div class="sect1" title="Cryptographic side of NT Domain Authentication"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562018"></a>Cryptographic side of NT Domain Authentication</h2></div></div></div><div class="sect2" title="Definitions"><div class="titlepage"><div><div><h3 class="title"><a name="id2562024"></a>Definitions</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">Add(A1,A2)</span></dt><dd><p>Intel byte ordered addition of corresponding 4 byte words in arrays A1 and A2</p></dd><dt><span class="term">E(K,D)</span></dt><dd><p>DES ECB encryption of 8 byte data D using 7 byte key K</p></dd><dt><span class="term">lmowf()</span></dt><dd><p>Lan man hash</p></dd><dt><span class="term">ntowf()</span></dt><dd><p>NT hash</p></dd><dt><span class="term">PW</span></dt><dd><p>md4(machine_password) == md4(lsadump $machine.acc) ==176 </em></span></p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555203"></a>Query for PDC</h3></div></div></div><p><span class="emphasis"><em>Note: NTversion, LMNTtoken, LM20token in response are the same as those given in the request.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555215"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x0007 - Query for PDC</p></dd><dt><span class="term">STR</span></dt><dd><p>machine name</p></dd><dt><span class="term">STR</span></dt><dd><p>response mailslot</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to 2-byte align with start of mailslot.</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555311"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x000A - Respose to Query for PDC</p></dd><dt><span class="term">STR</span></dt><dd><p>machine name (in uppercase)</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to 2-byte align with start of mailslot.</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion (same as received in request)</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken (same as received in request)</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token (same as received in request)</p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555404"></a>SAM Logon</h3></div></div></div><p><span class="emphasis"><em>Note: machine name in response is preceded by two '\' characters.</em></span></p><p><span class="emphasis"><em>Note: NTversion, LMNTtoken, LM20token in response are the same as those given in the request.</em></span></p><p><span class="emphasis"><em>Note: user name in the response is presumably the same as that in the request.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555427"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x0012 - SAM Logon</p></dd><dt><span class="term">UINT16</span></dt><dd><p>request count</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>user name</p></dd><dt><span class="term">STR</span></dt><dd><p>response mailslot</p></dd><dt><span class="term">UINT32</span></dt><dd><p>alloweable account</p></dd><dt><span class="term">UINT32</span></dt><dd><p>domain SID size</p></dd><dt><span class="term">char[sid_size]</span></dt><dd><p>domain SID, of sid_size bytes.</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>???? padding to 4? 2? -byte align with start of mailslot.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555566"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT16</span></dt><dd><p>0x0013 - Response to SAM Logon</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>machine name</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>user name - workstation trust account</p></dd><dt><span class="term">UNISTR</span></dt><dd><p>domain name </p></dd><dt><span class="term">UINT32</span></dt><dd><p>NTversion</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LMNTtoken</p></dd><dt><span class="term">UINT16</span></dt><dd><p>LM20token</p></dd></dl></div></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2555654"></a>SRVSVC Transact Named Pipe</h2></div></div></div><p>Defines for this pipe, identifying the query are:</p><div class="variablelist"><dl><dt><span class="term">Net Share Enum</span></dt><dd><p>0x0f</p></dd><dt><span class="term">Net Server Get Info</span></dt><dd><p>0x15</p></dd></dl></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555688"></a>Net Share Enum</h3></div></div></div><p><span class="emphasis"><em>Note: share level and switch value in the response are presumably the same as those in the request.</em></span></p><p><span class="emphasis"><em>Note: cifsrap2.txt (section 5) may be of limited assistance here.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555705"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">VOID*</span></dt><dd><p>pointer (to server name?)</p></dd><dt><span class="term">UNISTR2</span></dt><dd><p>server name</p></dd><dt><span class="term">UINT8[]</span></dt><dd><p>padding to get unicode string 4-byte aligned with the start of the SMB header.</p></dd><dt><span class="term">UINT32</span></dt><dd><p>share level</p></dd><dt><span class="term">UINT32</span></dt><dd><p>switch value</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to SHARE_INFO_1_CTR</p></dd><dt><span class="term">SHARE_INFO_1_CTR</span></dt><dd><p>share info with 0 entries</p></dd><dt><span class="term">UINT32</span></dt><dd><p>preferred maximum length (0xffff ffff)</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555800"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>share level</p></dd><dt><span class="term">UINT32</span></dt><dd><p>switch value</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to SHARE_INFO_1_CTR</p></dd><dt><span class="term">SHARE_INFO_1_CTR</span></dt><dd><p>share info (only added if share info ptr is non-zero)</p></dd></dl></div><p>return 0 - indicates success</p></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555856"></a>Net Server Get Info</h3></div></div></div><p><span class="emphasis"><em>Note: level is the same value as in the request.</em></span></p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555867"></a>Request</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UNISTR2</span></dt><dd><p>server name</p></dd><dt><span class="term">UINT32</span></dt><dd><p>switch level</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2555898"></a>Response</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">UINT32</span></dt><dd><p>switch level</p></dd><dt><span class="term">VOID*</span></dt><dd><p>pointer to SERVER_INFO_101</p></dd><dt><span class="term">SERVER_INFO_101</span></dt><dd><p>server info (only added if server info ptr is non-zero)</p></dd></dl></div><p>return 0 - indicates success</p></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2555945"></a>Cryptographic side of NT Domain Authentication</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2555952"></a>Definitions</h3></div></div></div><div class="variablelist"><dl><dt><span class="term">Add(A1,A2)</span></dt><dd><p>Intel byte ordered addition of corresponding 4 byte words in arrays A1 and A2</p></dd><dt><span class="term">E(K,D)</span></dt><dd><p>DES ECB encryption of 8 byte data D using 7 byte key K</p></dd><dt><span class="term">lmowf()</span></dt><dd><p>Lan man hash</p></dd><dt><span class="term">ntowf()</span></dt><dd><p>NT hash</p></dd><dt><span class="term">PW</span></dt><dd><p>md4(machine_password) == md4(lsadump $machine.acc) == 177 177 pwdump(machine$) (initially) == md4(lmowf(unicode(machine))) 178 </p></dd><dt><span class="term">ARC4(K,Lk,D,Ld)</span></dt><dd><p>ARC4 encryption of data D of length Ld with key K of length Lk</p></dd><dt><span class="term">v[m..n(,l)]</span></dt><dd><p>subset of v from bytes m to n, optionally padded with zeroes to length l</p></dd><dt><span class="term">Cred(K,D)</span></dt><dd><p>E(K[7..7,7],E(K[0..6],D)) computes a credential</p></dd><dt><span class="term">Time()</span></dt><dd><p>4 byte current time</p></dd><dt><span class="term">Cc,Cs</span></dt><dd><p>8 byte client and server challenges Rc,Rs: 8 byte client and server credentials</p></dd></dl></div></div><div class="sect2" title="Protocol"><div class="titlepage"><div><div><h3 class="title"><a name="id2562150"></a>Protocol</h3></div></div></div><pre class="programlisting">178 </p></dd><dt><span class="term">ARC4(K,Lk,D,Ld)</span></dt><dd><p>ARC4 encryption of data D of length Ld with key K of length Lk</p></dd><dt><span class="term">v[m..n(,l)]</span></dt><dd><p>subset of v from bytes m to n, optionally padded with zeroes to length l</p></dd><dt><span class="term">Cred(K,D)</span></dt><dd><p>E(K[7..7,7],E(K[0..6],D)) computes a credential</p></dd><dt><span class="term">Time()</span></dt><dd><p>4 byte current time</p></dd><dt><span class="term">Cc,Cs</span></dt><dd><p>8 byte client and server challenges Rc,Rs: 8 byte client and server credentials</p></dd></dl></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556077"></a>Protocol</h3></div></div></div><pre class="programlisting"> 179 179 C->S ReqChal,Cc 180 180 S->C Cs … … 212 212 C: assert(Rs == Cred(Ks,Cred(Rc+Tc+1)) 213 213 C: Rc = Cred(Ks,Rc+Tc+1) 214 </pre></div><div class="sect2" title="Comments"><div class="titlepage"><div><div><h3 class="title"><a name="id2562229"></a>Comments</h3></div></div></div><p>214 </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556156"></a>Comments</h3></div></div></div><p> 215 215 On first joining the domain the session key could be computed by 216 216 anyone listening in on the network as the machine password has a well … … 233 233 encrypted. They should be sent using ARC4(Ks,md4(owf)) with the server 234 234 computing the same function using the owf values in the SAM. 235 </p></div></div><div class="sect1" title="SIDs and RIDs"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2562270"></a>SIDs and RIDs</h2></div></div></div><p>235 </p></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556198"></a>SIDs and RIDs</h2></div></div></div><p> 236 236 SIDs and RIDs are well documented elsewhere. 237 237 </p><p> 238 238 A SID is an NT Security ID (see DOM_SID structure). They are of the form: 239 </p><table border="0" summary="Simple list" class="simplelist"><tr><td>revision-NN-SubAuth1-SubAuth2-SubAuth3... </td></tr><tr><td>revision-0xNNNNNNNNNNNN-SubAuth1-SubAuth2-SubAuth3...</td></tr></table><p>239 </p><table class="simplelist" border="0" summary="Simple list"><tr><td>revision-NN-SubAuth1-SubAuth2-SubAuth3... </td></tr><tr><td>revision-0xNNNNNNNNNNNN-SubAuth1-SubAuth2-SubAuth3...</td></tr></table><p> 240 240 currently, the SID revision is 1. 241 241 The Sub-Authorities are known as Relative IDs (RIDs). 242 </p><div class="sect2" title="Well-known SIDs"><div class="titlepage"><div><div><h3 class="title"><a name="id2562302"></a>Well-known SIDs</h3></div></div></div><div class="sect3" title="Universal well-known SIDs"><div class="titlepage"><div><div><h4 class="title"><a name="id2562308"></a>Universal well-known SIDs</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">Null SID</span></dt><dd><p>S-1-0-0</p></dd><dt><span class="term">World</span></dt><dd><p>S-1-1-0</p></dd><dt><span class="term">Local</span></dt><dd><p>S-1-2-0</p></dd><dt><span class="term">Creator Owner ID</span></dt><dd><p>S-1-3-0</p></dd><dt><span class="term">Creator Group ID</span></dt><dd><p>S-1-3-1</p></dd><dt><span class="term">Creator Owner Server ID</span></dt><dd><p>S-1-3-2</p></dd><dt><span class="term">Creator Group Server ID</span></dt><dd><p>S-1-3-3</p></dd><dt><span class="term">(Non-unique IDs)</span></dt><dd><p>S-1-4</p></dd></dl></div></div><div class="sect3" title="NT well-known SIDs"><div class="titlepage"><div><div><h4 class="title"><a name="id2562403"></a>NT well-known SIDs</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">NT Authority</span></dt><dd><p>S-1-5</p></dd><dt><span class="term">Dialup</span></dt><dd><p>S-1-5-1</p></dd><dt><span class="term">Network</span></dt><dd><p>S-1-5-2</p></dd><dt><span class="term">Batch</span></dt><dd><p>S-1-5-3</p></dd><dt><span class="term">Interactive</span></dt><dd><p>S-1-5-4</p></dd><dt><span class="term">Service</span></dt><dd><p>S-1-5-6</p></dd><dt><span class="term">AnonymousLogon(aka null logon session)</span></dt><dd><p>S-1-5-7</p></dd><dt><span class="term">Proxy</span></dt><dd><p>S-1-5-8</p></dd><dt><span class="term">ServerLogon(aka domain controller account)</span></dt><dd><p>S-1-5-8</p></dd><dt><span class="term">(Logon IDs)</span></dt><dd><p>S-1-5-5-X-Y</p></dd><dt><span class="term">(NT non-unique IDs)</span></dt><dd><p>S-1-5-0x15-...</p></dd><dt><span class="term">(Built-in domain)</span></dt><dd><p>s-1-5-0x20</p></dd></dl></div></div></div><div class="sect2" title="Well-known RIDS"><div class="titlepage"><div><div><h3 class="title"><a name="id2562541"></a>Well-known RIDS</h3></div></div></div><p>242 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556230"></a>Well-known SIDs</h3></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2556235"></a>Universal well-known SIDs</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">Null SID</span></dt><dd><p>S-1-0-0</p></dd><dt><span class="term">World</span></dt><dd><p>S-1-1-0</p></dd><dt><span class="term">Local</span></dt><dd><p>S-1-2-0</p></dd><dt><span class="term">Creator Owner ID</span></dt><dd><p>S-1-3-0</p></dd><dt><span class="term">Creator Group ID</span></dt><dd><p>S-1-3-1</p></dd><dt><span class="term">Creator Owner Server ID</span></dt><dd><p>S-1-3-2</p></dd><dt><span class="term">Creator Group Server ID</span></dt><dd><p>S-1-3-3</p></dd><dt><span class="term">(Non-unique IDs)</span></dt><dd><p>S-1-4</p></dd></dl></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2556330"></a>NT well-known SIDs</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">NT Authority</span></dt><dd><p>S-1-5</p></dd><dt><span class="term">Dialup</span></dt><dd><p>S-1-5-1</p></dd><dt><span class="term">Network</span></dt><dd><p>S-1-5-2</p></dd><dt><span class="term">Batch</span></dt><dd><p>S-1-5-3</p></dd><dt><span class="term">Interactive</span></dt><dd><p>S-1-5-4</p></dd><dt><span class="term">Service</span></dt><dd><p>S-1-5-6</p></dd><dt><span class="term">AnonymousLogon(aka null logon session)</span></dt><dd><p>S-1-5-7</p></dd><dt><span class="term">Proxy</span></dt><dd><p>S-1-5-8</p></dd><dt><span class="term">ServerLogon(aka domain controller account)</span></dt><dd><p>S-1-5-8</p></dd><dt><span class="term">(Logon IDs)</span></dt><dd><p>S-1-5-5-X-Y</p></dd><dt><span class="term">(NT non-unique IDs)</span></dt><dd><p>S-1-5-0x15-...</p></dd><dt><span class="term">(Built-in domain)</span></dt><dd><p>s-1-5-0x20</p></dd></dl></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2556468"></a>Well-known RIDS</h3></div></div></div><p> 243 243 A RID is a sub-authority value, as part of either a SID, or in the case 244 244 of Group RIDs, part of the DOM_GID structure, in the USER_INFO_1 245 245 structure, in the LSA SAM Logon response. 246 </p><div class="sect3" title="Well-known RID users"><div class="titlepage"><div><div><h4 class="title"><a name="id2562552"></a>Well-known RID users</h4></div></div></div><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong>DOMAIN_USER_RID_ADMIN</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>01F4</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong>DOMAIN_USER_RID_GUEST</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>01F5</div></div></div></div><div class="sect3" title="Well-known RID groups"><div class="titlepage"><div><div><h4 class="title"><a name="id2562589"></a>Well-known RID groups</h4></div></div></div><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_GROUP_RID_ADMINS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0200</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_GROUP_RID_USERS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0201</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_GROUP_RID_GUESTS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0202</div></div></div></div><div class="sect3" title="Well-known RID aliases"><div class="titlepage"><div><div><h4 class="title"><a name="id2562634"></a>Well-known RID aliases</h4></div></div></div><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_ADMINS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0220</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_USERS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0221</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_GUESTS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0222</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_POWER_USERS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0223</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_ACCOUNT_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0224</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_SYSTEM_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0225</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_PRINT_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0226</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_BACKUP_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0227</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_REPLICATOR</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0228</div></div></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="unix-smb.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pt02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. NetBIOS in a Unix World </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Part II. Samba Basics</td></tr></table></div></body></html>246 </p><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2556480"></a>Well-known RID users</h4></div></div></div><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong>DOMAIN_USER_RID_ADMIN</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>01F4</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong>DOMAIN_USER_RID_GUEST</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>01F5</div></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2556516"></a>Well-known RID groups</h4></div></div></div><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_GROUP_RID_ADMINS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0200</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_GROUP_RID_USERS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0201</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_GROUP_RID_GUESTS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0202</div></div></div></div><div class="sect3" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="id2556561"></a>Well-known RID aliases</h4></div></div></div><div class="segmentedlist"><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_ADMINS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0220</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_USERS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0221</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_GUESTS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0222</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_POWER_USERS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0223</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_ACCOUNT_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0224</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_SYSTEM_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0225</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_PRINT_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0226</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_BACKUP_OPS</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0227</div></div><div class="seglistitem"><div class="seg"><strong><span class="segtitle">Groupname: </span></strong> DOMAIN_ALIAS_RID_REPLICATOR</div><div class="seg"><strong><span class="segtitle">????: </span></strong>0x0000</div><div class="seg"><strong><span class="segtitle">RID: </span></strong>0228</div></div></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="unix-smb.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="pt02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. NetBIOS in a Unix World </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Part II. Samba Basics</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/parsing.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 11. The smb.conf file</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="vfs.html" title="Chapter 10. VFS Modules"><link rel="next" href="wins.html" title="Chapter 12. Samba WINS Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. The smb.conf file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="vfs.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="wins.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 11. The smb.conf file"><div class="titlepage"><div><div><h2 class="title"><a name="parsing"></a>Chapter 11. The smb.conf file</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Chris</span> <span class="surname">Hertel</span></h3></div></div><div><p class="pubdate">November 1997</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parsing.html#id2566406">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566478">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566523">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566574">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2566651">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566709">About params.c</a></span></dt></dl></dd></dl></div><div class="sect1" title="Lexical Analysis"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566406"></a>Lexical Analysis</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 11. The smb.conf file</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="vfs.html" title="Chapter 10. VFS Modules"><link rel="next" href="wins.html" title="Chapter 12. Samba WINS Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. The smb.conf file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="vfs.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="wins.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="parsing"></a>Chapter 11. The smb.conf file</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Chris</span> <span class="surname">Hertel</span></h3></div></div><div><p class="pubdate">November 1997</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parsing.html#id2560333">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560405">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560450">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560502">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2560579">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560636">About params.c</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560333"></a>Lexical Analysis</h2></div></div></div><p> 2 2 Basically, the file is processed on a line by line basis. There are 3 3 four types of lines that are recognized by the lexical analyzer 4 4 (params.c): 5 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>5 </p><div class="orderedlist"><ol type="1"><li><p> 6 6 Blank lines - Lines containing only whitespace. 7 </p></li><li class="listitem"><p>7 </p></li><li><p> 8 8 Comment lines - Lines beginning with either a semi-colon or a 9 9 pound sign (';' or '#'). 10 </p></li><li class="listitem"><p>10 </p></li><li><p> 11 11 Section header lines - Lines beginning with an open square bracket ('['). 12 </p></li><li class="listitem"><p>12 </p></li><li><p> 13 13 Parameter lines - Lines beginning with any other character. 14 14 (The default line type.) … … 16 16 The first two are handled exclusively by the lexical analyzer, which 17 17 ignores them. The latter two line types are scanned for 18 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>18 </p><div class="orderedlist"><ol type="1"><li><p> 19 19 - Section names 20 </p></li><li class="listitem"><p>20 </p></li><li><p> 21 21 - Parameter names 22 </p></li><li class="listitem"><p>22 </p></li><li><p> 23 23 - Parameter values 24 24 </p></li></ol></div><p> … … 26 26 (loadparm.c). Parameter names and values are divided from one 27 27 another by an equal sign: '='. 28 </p><div class="sect2" title="Handling of Whitespace"><div class="titlepage"><div><div><h3 class="title"><a name="id2566478"></a>Handling of Whitespace</h3></div></div></div><p>28 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560405"></a>Handling of Whitespace</h3></div></div></div><p> 29 29 Whitespace is defined as all characters recognized by the isspace() 30 30 function (see ctype(3C)) except for the newline character ('\n') 31 31 The newline is excluded because it identifies the end of the line. 32 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>32 </p><div class="orderedlist"><ol type="1"><li><p> 33 33 The lexical analyzer scans past white space at the beginning of a line. 34 </p></li><li class="listitem"><p>34 </p></li><li><p> 35 35 Section and parameter names may contain internal white space. All 36 36 whitespace within a name is compressed to a single space character. 37 </p></li><li class="listitem"><p>37 </p></li><li><p> 38 38 Internal whitespace within a parameter value is kept verbatim with 39 39 the exception of carriage return characters ('\r'), all of which 40 40 are removed. 41 </p></li><li class="listitem"><p>41 </p></li><li><p> 42 42 Leading and trailing whitespace is removed from names and values. 43 </p></li></ol></div></div><div class="sect2" title="Handling of Line Continuation"><div class="titlepage"><div><div><h3 class="title"><a name="id2566523"></a>Handling of Line Continuation</h3></div></div></div><p>43 </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560450"></a>Handling of Line Continuation</h3></div></div></div><p> 44 44 Long section header and parameter lines may be extended across 45 45 multiple lines by use of the backslash character ('\\'). Line … … 64 64 of comments. They are *only* recognized within section and parameter 65 65 lines. 66 </p></div><div class="sect2" title="Line Continuation Quirks"><div class="titlepage"><div><div><h3 class="title"><a name="id2566574"></a>Line Continuation Quirks</h3></div></div></div><p>Note the following example:</p><pre class="programlisting">66 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560502"></a>Line Continuation Quirks</h3></div></div></div><p>Note the following example:</p><pre class="programlisting"> 67 67 param name = parameter value string \ 68 68 \ … … 88 88 [section name] 89 89 param name = value 90 </pre></div></div><div class="sect1" title="Syntax"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566651"></a>Syntax</h2></div></div></div><p>The syntax of the smb.conf file is as follows:</p><pre class="programlisting">90 </pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560579"></a>Syntax</h2></div></div></div><p>The syntax of the smb.conf file is as follows:</p><pre class="programlisting"> 91 91 <file> :== { <section> } EOF 92 92 <section> :== <section header> { <parameter line> } 93 93 <section header> :== '[' NAME ']' 94 94 <parameter line> :== NAME '=' VALUE NL 95 </pre><p>Basically, this means that</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>95 </pre><p>Basically, this means that</p><div class="orderedlist"><ol type="1"><li><p> 96 96 a file is made up of zero or more sections, and is terminated by 97 97 an EOF (we knew that). 98 </p></li><li class="listitem"><p>98 </p></li><li><p> 99 99 A section is made up of a section header followed by zero or more 100 100 parameter lines. 101 </p></li><li class="listitem"><p>101 </p></li><li><p> 102 102 A section header is identified by an opening bracket and 103 103 terminated by the closing bracket. The enclosed NAME identifies 104 104 the section. 105 </p></li><li class="listitem"><p>105 </p></li><li><p> 106 106 A parameter line is divided into a NAME and a VALUE. The *first* 107 107 equal sign on the line separates the NAME from the VALUE. The 108 108 VALUE is terminated by a newline character (NL = '\n'). 109 </p></li></ol></div><div class="sect2" title="About params.c"><div class="titlepage"><div><div><h3 class="title"><a name="id2566709"></a>About params.c</h3></div></div></div><p>109 </p></li></ol></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560636"></a>About params.c</h3></div></div></div><p> 110 110 The parsing of the config file is a bit unusual if you are used to 111 111 lex, yacc, bison, etc. Both lexical analysis (scanning) and parsing -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/pr01.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Attribution</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="index.html" title="SAMBA Developers Guide"><link rel="next" href="pt01.html" title="Part I. The protocol"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Attribution</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="pt01.html">Next</a></td></tr></table><hr></div><div class="preface" title="Attribution"><div class="titlepage"><div><div><h2 class="title"><a name="id2546462"></a>Attribution</h2></div></div></div><p><a class="link" href="unix-smb.html" title="Chapter 1. NetBIOS in a Unix World">NetBIOS in a Unix World</a>2 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Andrew Tridgell</p></li></ul></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Attribution</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="index.html" title="SAMBA Developers Guide"><link rel="next" href="pt01.html" title="Part I. The protocol"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Attribution</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="pt01.html">Next</a></td></tr></table><hr></div><div class="preface" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="id2540388"></a>Attribution</h2></div></div></div><p><a class="link" href="unix-smb.html" title="Chapter 1. NetBIOS in a Unix World">NetBIOS in a Unix World</a> 2 </p><div class="itemizedlist"><ul type="disc"><li><p>Andrew Tridgell</p></li></ul></div><p> 3 3 </p><p><a class="link" href="ntdomain.html" title="Chapter 2. NT Domain RPC's">NT Domain RPC's</a> 4 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Luke Leighton<a class="ulink" href="mailto:lkcl@switchboard.net" target="_top">mailto:lkcl@switchboard.net</a></p></li><li class="listitem"><p>Paul Ashton<a class="ulink" href="mailto:paul@argo.demon.co.uk" target="_top">mailto:paul@argo.demon.co.uk</a></p></li><li class="listitem"><p>Duncan Stansfield<a class="ulink" href="mailto:duncans@sco.com" target="_top">mailto:duncans@sco.com</a></p></li></ul></div><p>4 </p><div class="itemizedlist"><ul type="disc"><li><p>Luke Leighton<a class="ulink" href="mailto:lkcl@switchboard.net" target="_top">mailto:lkcl@switchboard.net</a></p></li><li><p>Paul Ashton<a class="ulink" href="mailto:paul@argo.demon.co.uk" target="_top">mailto:paul@argo.demon.co.uk</a></p></li><li><p>Duncan Stansfield<a class="ulink" href="mailto:duncans@sco.com" target="_top">mailto:duncans@sco.com</a></p></li></ul></div><p> 5 5 </p><p><a class="link" href="architecture.html" title="Chapter 3. Samba Architecture">Samba Architecture</a> 6 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Dan Shearer</p></li></ul></div><p>6 </p><div class="itemizedlist"><ul type="disc"><li><p>Dan Shearer</p></li></ul></div><p> 7 7 </p><p><a class="link" href="debug.html" title="Chapter 4. The samba DEBUG system">The samba DEBUG system</a> 8 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Chris Hertel</p></li></ul></div><p>8 </p><div class="itemizedlist"><ul type="disc"><li><p>Chris Hertel</p></li></ul></div><p> 9 9 </p><p><a class="link" href="internals.html" title="Chapter 5. Samba Internals">Samba Internals</a> 10 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>David Chappell<a class="ulink" href="mailto:David.Chappell@mail.trincoll.edu" target="_top">mailto:David.Chappell@mail.trincoll.edu</a></p></li></ul></div><p>10 </p><div class="itemizedlist"><ul type="disc"><li><p>David Chappell<a class="ulink" href="mailto:David.Chappell@mail.trincoll.edu" target="_top">mailto:David.Chappell@mail.trincoll.edu</a></p></li></ul></div><p> 11 11 </p><p><a class="link" href="CodingSuggestions.html" title="Chapter 6. Coding Suggestions">Coding Suggestions</a> 12 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Steve French</p></li><li class="listitem"><p>Simo Sorce</p></li><li class="listitem"><p>Andrew Bartlett</p></li><li class="listitem"><p>Tim Potter</p></li><li class="listitem"><p>Martin Pool</p></li></ul></div><p>12 </p><div class="itemizedlist"><ul type="disc"><li><p>Steve French</p></li><li><p>Simo Sorce</p></li><li><p>Andrew Bartlett</p></li><li><p>Tim Potter</p></li><li><p>Martin Pool</p></li></ul></div><p> 13 13 </p><p><a class="link" href="contributing.html" title="Chapter 7. Contributing code">Contributing code</a> 14 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Jelmer R. Vernooij<a class="ulink" href="mailto:jelmer@samba.org" target="_top">mailto:jelmer@samba.org</a></p></li></ul></div><p>14 </p><div class="itemizedlist"><ul type="disc"><li><p>Jelmer R. Vernooij<a class="ulink" href="mailto:jelmer@samba.org" target="_top">mailto:jelmer@samba.org</a></p></li></ul></div><p> 15 15 </p><p><a class="link" href="modules.html" title="Chapter 8. Modules">Modules</a> 16 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Jelmer Vernooij<a class="ulink" href="mailto:jelmer@samba.org" target="_top">mailto:jelmer@samba.org</a></p></li></ul></div><p>16 </p><div class="itemizedlist"><ul type="disc"><li><p>Jelmer Vernooij<a class="ulink" href="mailto:jelmer@samba.org" target="_top">mailto:jelmer@samba.org</a></p></li></ul></div><p> 17 17 </p><p><a class="link" href="rpc-plugin.html" title="Chapter 9. RPC Pluggable Modules">RPC Pluggable Modules</a> 18 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Anthony Liguori<a class="ulink" href="mailto:aliguor@us.ibm.com" target="_top">mailto:aliguor@us.ibm.com</a></p></li><li class="listitem"><p>Jelmer Vernooij<a class="ulink" href="mailto:jelmer@samba.org" target="_top">mailto:jelmer@samba.org</a></p></li></ul></div><p>18 </p><div class="itemizedlist"><ul type="disc"><li><p>Anthony Liguori<a class="ulink" href="mailto:aliguor@us.ibm.com" target="_top">mailto:aliguor@us.ibm.com</a></p></li><li><p>Jelmer Vernooij<a class="ulink" href="mailto:jelmer@samba.org" target="_top">mailto:jelmer@samba.org</a></p></li></ul></div><p> 19 19 </p><p><a class="link" href="vfs.html" title="Chapter 10. VFS Modules">VFS Modules</a> 20 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Alexander Bokovoy<a class="ulink" href="mailto:ab@samba.org" target="_top">mailto:ab@samba.org</a></p></li><li class="listitem"><p>Stefan Metzmacher<a class="ulink" href="mailto:metze@samba.org" target="_top">mailto:metze@samba.org</a></p></li></ul></div><p>20 </p><div class="itemizedlist"><ul type="disc"><li><p>Alexander Bokovoy<a class="ulink" href="mailto:ab@samba.org" target="_top">mailto:ab@samba.org</a></p></li><li><p>Stefan Metzmacher<a class="ulink" href="mailto:metze@samba.org" target="_top">mailto:metze@samba.org</a></p></li></ul></div><p> 21 21 </p><p><a class="link" href="parsing.html" title="Chapter 11. The smb.conf file">The smb.conf file</a> 22 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Chris Hertel</p></li></ul></div><p>22 </p><div class="itemizedlist"><ul type="disc"><li><p>Chris Hertel</p></li></ul></div><p> 23 23 </p><p><a class="link" href="wins.html" title="Chapter 12. Samba WINS Internals">Samba WINS Internals</a> 24 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Gerald Carter</p></li></ul></div><p>24 </p><div class="itemizedlist"><ul type="disc"><li><p>Gerald Carter</p></li></ul></div><p> 25 25 </p><p><a class="link" href="pwencrypt.html" title="Chapter 13. LanMan and NT Password Encryption">LanMan and NT Password Encryption</a> 26 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Jeremy Allison<a class="ulink" href="mailto:samba@samba.org" target="_top">mailto:samba@samba.org</a></p></li></ul></div><p>26 </p><div class="itemizedlist"><ul type="disc"><li><p>Jeremy Allison<a class="ulink" href="mailto:samba@samba.org" target="_top">mailto:samba@samba.org</a></p></li></ul></div><p> 27 27 </p><p><a class="link" href="tracing.html" title="Chapter 14. Tracing samba system calls">Tracing samba system calls</a> 28 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Andrew Tridgell</p></li></ul></div><p>28 </p><div class="itemizedlist"><ul type="disc"><li><p>Andrew Tridgell</p></li></ul></div><p> 29 29 </p><p><a class="link" href="devprinting.html" title="Chapter 15. Samba Printing Internals">Samba Printing Internals</a> 30 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Gerald Carter</p></li></ul></div><p>30 </p><div class="itemizedlist"><ul type="disc"><li><p>Gerald Carter</p></li></ul></div><p> 31 31 </p><p><a class="link" href="Packaging.html" title="Chapter 16. Notes to packagers">Notes to packagers</a> 32 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Jelmer Vernooij</p></li></ul></div><p>32 </p><div class="itemizedlist"><ul type="disc"><li><p>Jelmer Vernooij</p></li></ul></div><p> 33 33 </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="pt01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">SAMBA Developers Guide </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Part I. The protocol</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/pt01.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part I. The protocol</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="pr01.html" title="Attribution"><link rel="next" href="unix-smb.html" title="Chapter 1. NetBIOS in a Unix World"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part I. The protocol</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="unix-smb.html">Next</a></td></tr></table><hr></div><div class="part" title="Part I. The protocol"><div class="titlepage"><div><div><h1 class="title"><a name="id2505164"></a>Part I. The protocol</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="unix-smb.html">1. NetBIOS in a Unix World</a></span></dt><dd><dl><dt><span class="sect1"><a href="unix-smb.html#id2505193">Introduction</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505214">Usernames</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505546">File Ownership</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505577">Passwords</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504910">Locking</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504962">Deny Modes</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504994">Trapdoor UIDs</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505015">Port numbers</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2556040">Protocol Complexity</a></span></dt></dl></dd><dt><span class="chapter"><a href="ntdomain.html">2. NT Domain RPC's</a></span></dt><dd><dl><dt><span class="sect1"><a href="ntdomain.html#id2556159">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556325">Sources</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556351">Credits</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2556382">Notes and Structures</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556388">Notes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556450">Enumerations</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556613">Structures</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2558885">MSRPC over Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2558896">MSRPC Pipes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2558979">Header</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559653">Tail</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559688">RPC Bind / Bind Ack</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559827">NTLSA Transact Named Pipe</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2559955">LSA Open Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560051">LSA Query Info Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560132">LSA Enumerate Trusted Domains</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560202">LSA Open Secret</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560285">LSA Close</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560336">LSA Lookup SIDS</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560497">LSA Lookup Names</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2560669">NETLOGON rpc Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2560795">LSA Request Challenge</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2560904">LSA Authenticate 2</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561019">LSA Server Password Set</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561111">LSA SAM Logon</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561190">LSA SAM Logoff</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2561262">\\MAILSLOT\NET\NTLOGON</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2561276">Query for PDC</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561476">SAM Logon</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2561726">SRVSVC Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2561760">Net Share Enum</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2561928">Net Server Get Info</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2562018">Cryptographic side of NT Domain Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2562024">Definitions</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562150">Protocol</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562229">Comments</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2562270">SIDs and RIDs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2562302">Well-known SIDs</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2562541">Well-known RIDS</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="unix-smb.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Attribution </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. NetBIOS in a Unix World</td></tr></table></div></body></html>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part I. The protocol</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="pr01.html" title="Attribution"><link rel="next" href="unix-smb.html" title="Chapter 1. NetBIOS in a Unix World"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part I. The protocol</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="unix-smb.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2499093"></a>Part I. The protocol</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="unix-smb.html">1. NetBIOS in a Unix World</a></span></dt><dd><dl><dt><span class="sect1"><a href="unix-smb.html#id2499122">Introduction</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499143">Usernames</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499475">File Ownership</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499506">Passwords</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498843">Locking</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498891">Deny Modes</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498923">Trapdoor UIDs</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498944">Port numbers</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498960">Protocol Complexity</a></span></dt></dl></dd><dt><span class="chapter"><a href="ntdomain.html">2. NT Domain RPC's</a></span></dt><dd><dl><dt><span class="sect1"><a href="ntdomain.html#id2550090">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2550255">Sources</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550282">Credits</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2550313">Notes and Structures</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2550318">Notes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550381">Enumerations</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2550543">Structures</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2552813">MSRPC over Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2552823">MSRPC Pipes</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2552907">Header</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553580">Tail</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553616">RPC Bind / Bind Ack</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553755">NTLSA Transact Named Pipe</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553883">LSA Open Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2553978">LSA Query Info Policy</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554060">LSA Enumerate Trusted Domains</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554130">LSA Open Secret</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554213">LSA Close</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554264">LSA Lookup SIDS</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554425">LSA Lookup Names</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2554597">NETLOGON rpc Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2554723">LSA Request Challenge</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554832">LSA Authenticate 2</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2554947">LSA Server Password Set</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555038">LSA SAM Logon</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555118">LSA SAM Logoff</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555189">\\MAILSLOT\NET\NTLOGON</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555203">Query for PDC</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555404">SAM Logon</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555654">SRVSVC Transact Named Pipe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555688">Net Share Enum</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2555856">Net Server Get Info</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2555945">Cryptographic side of NT Domain Authentication</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2555952">Definitions</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556077">Protocol</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556156">Comments</a></span></dt></dl></dd><dt><span class="sect1"><a href="ntdomain.html#id2556198">SIDs and RIDs</a></span></dt><dd><dl><dt><span class="sect2"><a href="ntdomain.html#id2556230">Well-known SIDs</a></span></dt><dt><span class="sect2"><a href="ntdomain.html#id2556468">Well-known RIDS</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="unix-smb.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Attribution </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. NetBIOS in a Unix World</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/pt02.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part II. Samba Basics</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="ntdomain.html" title="Chapter 2. NT Domain RPC's"><link rel="next" href="architecture.html" title="Chapter 3. Samba Architecture"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. Samba Basics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ntdomain.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="architecture.html">Next</a></td></tr></table><hr></div><div class="part" title="Part II. Samba Basics"><div class="titlepage"><div><div><h1 class="title"><a name="id2562737"></a>Part II. Samba Basics</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="architecture.html">3. Samba Architecture</a></span></dt><dd><dl><dt><span class="sect1"><a href="architecture.html#id2562765">Introduction</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562808">Multithreading and Samba</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562839">Threading smbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562900">Threading nmbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2562945">nbmd Design</a></span></dt></dl></dd><dt><span class="chapter"><a href="debug.html">4. The samba DEBUG system</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug.html#id2563001">New Output Syntax</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563111">The DEBUG() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563216">The DEBUGADD() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563252">The DEBUGLVL() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2563343">New Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#id2563348">dbgtext()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2563364">dbghdr()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2563383">format_debug_text()</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="internals.html">5. Samba Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="internals.html#id2563435">Character Handling</a></span></dt><dt><span class="sect1"><a href="internals.html#id2563456">The new functions</a></span></dt><dt><span class="sect1"><a href="internals.html#id2563585">Macros in byteorder.h</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2563596">CVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563607">PVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563618">SCVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563628">SVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563641">IVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563652">SVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563664">IVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563675">SSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563686">SIVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563698">SSVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563709">SIVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563720">RSVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563732">RIVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563743">RSSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563755">RSIVAL(buf,pos,val)</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2563768">LAN Manager Samba API</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2563796">Parameters</a></span></dt><dt><span class="sect2"><a href="internals.html#id2563920">Return value</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2563990">Code character table</a></span></dt></dl></dd><dt><span class="chapter"><a href="CodingSuggestions.html">6. Coding Suggestions</a></span></dt><dt><span class="chapter"><a href="contributing.html">7. Contributing code</a></span></dt><dt><span class="chapter"><a href="modules.html">8. Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="modules.html#id2564642">Advantages</a></span></dt><dt><span class="sect1"><a href="modules.html#id2564680">Loading modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2564706">Static modules</a></span></dt><dt><span class="sect2"><a href="modules.html#id2564738">Shared modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="modules.html#id2564762">Writing modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2564811">Static/Shared selection in configure.in</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ntdomain.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="architecture.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. NT Domain RPC's </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Samba Architecture</td></tr></table></div></body></html>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part II. Samba Basics</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="ntdomain.html" title="Chapter 2. NT Domain RPC's"><link rel="next" href="architecture.html" title="Chapter 3. Samba Architecture"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part II. Samba Basics</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ntdomain.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="architecture.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2556665"></a>Part II. Samba Basics</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="architecture.html">3. Samba Architecture</a></span></dt><dd><dl><dt><span class="sect1"><a href="architecture.html#id2556692">Introduction</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556735">Multithreading and Samba</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556767">Threading smbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556828">Threading nmbd</a></span></dt><dt><span class="sect1"><a href="architecture.html#id2556873">nbmd Design</a></span></dt></dl></dd><dt><span class="chapter"><a href="debug.html">4. The samba DEBUG system</a></span></dt><dd><dl><dt><span class="sect1"><a href="debug.html#id2556929">New Output Syntax</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557038">The DEBUG() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557144">The DEBUGADD() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557180">The DEBUGLVL() Macro</a></span></dt><dt><span class="sect1"><a href="debug.html#id2557271">New Functions</a></span></dt><dd><dl><dt><span class="sect2"><a href="debug.html#id2557276">dbgtext()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2557292">dbghdr()</a></span></dt><dt><span class="sect2"><a href="debug.html#id2557311">format_debug_text()</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="internals.html">5. Samba Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="internals.html#id2557363">Character Handling</a></span></dt><dt><span class="sect1"><a href="internals.html#id2557384">The new functions</a></span></dt><dt><span class="sect1"><a href="internals.html#id2557513">Macros in byteorder.h</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2557523">CVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557534">PVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557545">SCVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557556">SVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557568">IVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557580">SVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557591">IVALS(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557603">SSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557614">SIVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557625">SSVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557637">SIVALS(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557648">RSVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557660">RIVAL(buf,pos)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557671">RSSVAL(buf,pos,val)</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557683">RSIVAL(buf,pos,val)</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2557696">LAN Manager Samba API</a></span></dt><dd><dl><dt><span class="sect2"><a href="internals.html#id2557723">Parameters</a></span></dt><dt><span class="sect2"><a href="internals.html#id2557848">Return value</a></span></dt></dl></dd><dt><span class="sect1"><a href="internals.html#id2557918">Code character table</a></span></dt></dl></dd><dt><span class="chapter"><a href="CodingSuggestions.html">6. Coding Suggestions</a></span></dt><dt><span class="chapter"><a href="contributing.html">7. Contributing code</a></span></dt><dt><span class="chapter"><a href="modules.html">8. Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="modules.html#id2558570">Advantages</a></span></dt><dt><span class="sect1"><a href="modules.html#id2558608">Loading modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2558634">Static modules</a></span></dt><dt><span class="sect2"><a href="modules.html#id2558666">Shared modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="modules.html#id2558690">Writing modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="modules.html#id2558739">Static/Shared selection in configure.in</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ntdomain.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="architecture.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. NT Domain RPC's </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Samba Architecture</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/pt03.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part III. Samba Subsystems</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="modules.html" title="Chapter 8. Modules"><link rel="next" href="rpc-plugin.html" title="Chapter 9. RPC Pluggable Modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. Samba Subsystems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="modules.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="rpc-plugin.html">Next</a></td></tr></table><hr></div><div class="part" title="Part III. Samba Subsystems"><div class="titlepage"><div><div><h1 class="title"><a name="id2564909"></a>Part III. Samba Subsystems</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="rpc-plugin.html">9. RPC Pluggable Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="rpc-plugin.html#id2564970">About</a></span></dt><dt><span class="sect1"><a href="rpc-plugin.html#id2564986">General Overview</a></span></dt></dl></dd><dt><span class="chapter"><a href="vfs.html">10. VFS Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="vfs.html#id2565148">The Samba (Posix) VFS layer</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565189">The general interface</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2565500">Possible VFS operation layers</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2565561">The Interaction between the Samba VFS subsystem and the modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565568">Initialization and registration</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2565713">How the Modules handle per connection data</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2565913">Upgrading to the New VFS Interface</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565919">Upgrading from 2.2.* and 3.0alpha modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2566324">Some Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2566329">Implement TRANSPARENT functions</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2566349">Implement OPAQUE functions</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parsing.html">11. The smb.conf file</a></span></dt><dd><dl><dt><span class="sect1"><a href="parsing.html#id2566406">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566478">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566523">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566574">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2566651">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566709">About params.c</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="wins.html">12. Samba WINS Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="wins.html#id2566747">WINS Failover</a></span></dt></dl></dd><dt><span class="chapter"><a href="pwencrypt.html">13. LanMan and NT Password Encryption</a></span></dt><dd><dl><dt><span class="sect1"><a href="pwencrypt.html#id2566865">Introduction</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2566885">How does it work?</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2566969">The smbpasswd file</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="modules.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="rpc-plugin.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 8. Modules </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. RPC Pluggable Modules</td></tr></table></div></body></html>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part III. Samba Subsystems</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="modules.html" title="Chapter 8. Modules"><link rel="next" href="rpc-plugin.html" title="Chapter 9. RPC Pluggable Modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part III. Samba Subsystems</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="modules.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="rpc-plugin.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2558836"></a>Part III. Samba Subsystems</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="rpc-plugin.html">9. RPC Pluggable Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="rpc-plugin.html#id2558898">About</a></span></dt><dt><span class="sect1"><a href="rpc-plugin.html#id2558913">General Overview</a></span></dt></dl></dd><dt><span class="chapter"><a href="vfs.html">10. VFS Modules</a></span></dt><dd><dl><dt><span class="sect1"><a href="vfs.html#id2559076">The Samba (Posix) VFS layer</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559117">The general interface</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2559428">Possible VFS operation layers</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2559489">The Interaction between the Samba VFS subsystem and the modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559495">Initialization and registration</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2559640">How the Modules handle per connection data</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2559841">Upgrading to the New VFS Interface</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559847">Upgrading from 2.2.* and 3.0alpha modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2560251">Some Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2560257">Implement TRANSPARENT functions</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2560276">Implement OPAQUE functions</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="parsing.html">11. The smb.conf file</a></span></dt><dd><dl><dt><span class="sect1"><a href="parsing.html#id2560333">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560405">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560450">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560502">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2560579">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560636">About params.c</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="wins.html">12. Samba WINS Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="wins.html#id2560674">WINS Failover</a></span></dt></dl></dd><dt><span class="chapter"><a href="pwencrypt.html">13. LanMan and NT Password Encryption</a></span></dt><dd><dl><dt><span class="sect1"><a href="pwencrypt.html#id2560792">Introduction</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2560813">How does it work?</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2560896">The smbpasswd file</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="modules.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="rpc-plugin.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 8. Modules </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 9. RPC Pluggable Modules</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/pt04.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part IV. Debugging and tracing</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="pwencrypt.html" title="Chapter 13. LanMan and NT Password Encryption"><link rel="next" href="tracing.html" title="Chapter 14. Tracing samba system calls"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. Debugging and tracing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pwencrypt.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="tracing.html">Next</a></td></tr></table><hr></div><div class="part" title="Part IV. Debugging and tracing"><div class="titlepage"><div><div><h1 class="title"><a name="id2567225"></a>Part IV. Debugging and tracing</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="tracing.html">14. Tracing samba system calls</a></span></dt><dt><span class="chapter"><a href="devprinting.html">15. Samba Printing Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="devprinting.html#id2567455">Abstract</a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2567467">1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part IV. Debugging and tracing</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="pwencrypt.html" title="Chapter 13. LanMan and NT Password Encryption"><link rel="next" href="tracing.html" title="Chapter 14. Tracing samba system calls"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part IV. Debugging and tracing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pwencrypt.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="tracing.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2561153"></a>Part IV. Debugging and tracing</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="tracing.html">14. Tracing samba system calls</a></span></dt><dt><span class="chapter"><a href="devprinting.html">15. Samba Printing Internals</a></span></dt><dd><dl><dt><span class="sect1"><a href="devprinting.html#id2561382">Abstract</a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561395"> 2 2 Printing Interface to Various Back ends 3 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7544">3 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561471"> 4 4 Print Queue TDB's 5 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7717">5 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561645"> 6 6 ChangeID and Client Caching of Printer Information 7 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id256 7728">7 </a></span></dt><dt><span class="sect1"><a href="devprinting.html#id2561655"> 8 8 Windows NT/2K Printer Change Notify 9 9 </a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pwencrypt.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="tracing.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 13. LanMan and NT Password Encryption </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 14. Tracing samba system calls</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/pt05.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part V. Appendices</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="devprinting.html" title="Chapter 15. Samba Printing Internals"><link rel="next" href="Packaging.html" title="Chapter 16. Notes to packagers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part V. Appendices</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr></table><hr></div><div class="part" title="Part V. Appendices"><div class="titlepage"><div><div><h1 class="title"><a name="id2568024"></a>Part V. Appendices</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id2568047">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2568080">Modules</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Samba Printing Internals </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Notes to packagers</td></tr></table></div></body></html>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Part V. Appendices</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="index.html" title="SAMBA Developers Guide"><link rel="prev" href="devprinting.html" title="Chapter 15. Samba Printing Internals"><link rel="next" href="Packaging.html" title="Chapter 16. Notes to packagers"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Part V. Appendices</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr></table><hr></div><div class="part" lang="en"><div class="titlepage"><div><div><h1 class="title"><a name="id2561951"></a>Part V. Appendices</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a href="Packaging.html">16. Notes to packagers</a></span></dt><dd><dl><dt><span class="sect1"><a href="Packaging.html#id2561975">Versioning</a></span></dt><dt><span class="sect1"><a href="Packaging.html#id2562008">Modules</a></span></dt></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="devprinting.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Packaging.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 15. Samba Printing Internals </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 16. Notes to packagers</td></tr></table></div></body></html> -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/pwencrypt.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 13. LanMan and NT Password Encryption</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="wins.html" title="Chapter 12. Samba WINS Internals"><link rel="next" href="pt04.html" title="Part IV. Debugging and tracing"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. LanMan and NT Password Encryption</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="wins.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="pt04.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 13. LanMan and NT Password Encryption"><div class="titlepage"><div><div><h2 class="title"><a name="pwencrypt"></a>Chapter 13. LanMan and NT Password Encryption</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jeremy</span> <span class="surname">Allison</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><br>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 13. LanMan and NT Password Encryption</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="wins.html" title="Chapter 12. Samba WINS Internals"><link rel="next" href="pt04.html" title="Part IV. Debugging and tracing"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 13. LanMan and NT Password Encryption</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="wins.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="pt04.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="pwencrypt"></a>Chapter 13. LanMan and NT Password Encryption</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Jeremy</span> <span class="orgname">Samba Team</span> <span class="surname">Allison</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><br> 2 2 <code class="email"><<a class="email" href="mailto:samba@samba.org">samba@samba.org</a>></code><br> 3 </p></div></div></div></div><div><p class="pubdate">19 Apr 1999</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="pwencrypt.html#id256 6865">Introduction</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2566885">How does it work?</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2566969">The smbpasswd file</a></span></dt></dl></div><div class="sect1" title="Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566865"></a>Introduction</h2></div></div></div><p>With the development of LanManager and Windows NT3 </p></div></div></div></div><div><p class="pubdate">19 Apr 1999</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="pwencrypt.html#id2560792">Introduction</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2560813">How does it work?</a></span></dt><dt><span class="sect1"><a href="pwencrypt.html#id2560896">The smbpasswd file</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560792"></a>Introduction</h2></div></div></div><p>With the development of LanManager and Windows NT 4 4 compatible password encryption for Samba, it is now able 5 5 to validate user connections in exactly the same way as … … 7 7 algorithm works and what issues there are in choosing whether 8 8 you want to use it. You should read it carefully, especially 9 the part about security and the "PROS and CONS" section.</p></div><div class="sect1" title="How does it work?"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566885"></a>How does it work?</h2></div></div></div><p>LanManager encryption is somewhat similar to UNIX9 the part about security and the "PROS and CONS" section.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560813"></a>How does it work?</h2></div></div></div><p>LanManager encryption is somewhat similar to UNIX 10 10 password encryption. The server uses a file containing a 11 11 hashed value of a user's password. This is created by taking … … 44 44 of the user's password - just the 16 byte hashed values derived from 45 45 it. Also note that the cleartext password or 16 byte hashed values 46 are never transmitted over the network - thus increasing security.</p></div><div class="sect1" title="The smbpasswd file"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566969"></a>The smbpasswd file</h2></div></div></div><a name="SMBPASSWDFILEFORMAT"></a><p>In order for Samba to participate in the above protocol46 are never transmitted over the network - thus increasing security.</p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560896"></a>The smbpasswd file</h2></div></div></div><a name="SMBPASSWDFILEFORMAT"></a><p>In order for Samba to participate in the above protocol 47 47 it must be able to look up the 16 byte hashed values given a user name. 48 48 Unfortunately, as the UNIX password value is also a one way hash -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/rpc-plugin.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 9. RPC Pluggable Modules</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="pt03.html" title="Part III. Samba Subsystems"><link rel="next" href="vfs.html" title="Chapter 10. VFS Modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. RPC Pluggable Modules</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt03.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="vfs.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 9. RPC Pluggable Modules"><div class="titlepage"><div><div><h2 class="title"><a name="rpc-plugin"></a>Chapter 9. RPC Pluggable Modules</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Anthony</span> <span class="surname">Liguori</span></h3><div class="affiliation"><span class="orgname">IBM<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:aliguor@us.ibm.com">aliguor@us.ibm.com</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate">January 2003</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="rpc-plugin.html#id2564970">About</a></span></dt><dt><span class="sect1"><a href="rpc-plugin.html#id2564986">General Overview</a></span></dt></dl></div><div class="sect1" title="About"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2564970"></a>About</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 9. RPC Pluggable Modules</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="pt03.html" title="Part III. Samba Subsystems"><link rel="next" href="vfs.html" title="Chapter 10. VFS Modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. RPC Pluggable Modules</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt03.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="vfs.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="rpc-plugin"></a>Chapter 9. RPC Pluggable Modules</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Anthony</span> <span class="orgname">IBM</span> <span class="surname">Liguori</span></h3><div class="affiliation"><span class="orgname">IBM<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:aliguor@us.ibm.com">aliguor@us.ibm.com</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="orgname">Samba Team</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email"><<a class="email" href="mailto:jelmer@samba.org">jelmer@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate">January 2003</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="rpc-plugin.html#id2558898">About</a></span></dt><dt><span class="sect1"><a href="rpc-plugin.html#id2558913">General Overview</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2558898"></a>About</h2></div></div></div><p> 2 2 This document describes how to make use the new RPC Pluggable Modules features 3 3 of Samba 3.0. This architecture was added to increase the maintainability of … … 5 5 The RPM architecture will also allow third-party vendors to add functionality 6 6 to Samba through plug-ins. 7 </p></div><div class="sect1" title="General Overview"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2564986"></a>General Overview</h2></div></div></div><p>7 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2558913"></a>General Overview</h2></div></div></div><p> 8 8 When an RPC call is sent to smbd, smbd tries to load a shared library by the 9 9 name <code class="filename">librpc_<pipename>.so</code> to handle the call if -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/tracing.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 14. Tracing samba system calls</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt04.html" title="Part IV. Debugging and tracing"><link rel="prev" href="pt04.html" title="Part IV. Debugging and tracing"><link rel="next" href="devprinting.html" title="Chapter 15. Samba Printing Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. Tracing samba system calls</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt04.html">Prev</a> </td><th width="60%" align="center">Part IV. Debugging and tracing</th><td width="20%" align="right"> <a accesskey="n" href="devprinting.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 14. Tracing samba system calls"><div class="titlepage"><div><div><h2 class="title"><a name="tracing"></a>Chapter 14. Tracing samba system calls</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Andrew</span> <span class="surname">Tridgell</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span></div></div></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 14. Tracing samba system calls</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt04.html" title="Part IV. Debugging and tracing"><link rel="prev" href="pt04.html" title="Part IV. Debugging and tracing"><link rel="next" href="devprinting.html" title="Chapter 15. Samba Printing Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 14. Tracing samba system calls</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt04.html">Prev</a> </td><th width="60%" align="center">Part IV. Debugging and tracing</th><td width="20%" align="right"> <a accesskey="n" href="devprinting.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="tracing"></a>Chapter 14. Tracing samba system calls</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Andrew</span> <span class="orgname">Samba Team</span> <span class="surname">Tridgell</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span></div></div></div></div></div><p> 2 2 This file describes how to do a system call trace on Samba to work out 3 3 what its doing wrong. This is not for the faint of heart, but if you -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/unix-smb.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 1. NetBIOS in a Unix World</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt01.html" title="Part I. The protocol"><link rel="prev" href="pt01.html" title="Part I. The protocol"><link rel="next" href="ntdomain.html" title="Chapter 2. NT Domain RPC's"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. NetBIOS in a Unix World</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt01.html">Prev</a> </td><th width="60%" align="center">Part I. The protocol</th><td width="20%" align="right"> <a accesskey="n" href="ntdomain.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 1. NetBIOS in a Unix World"><div class="titlepage"><div><div><h2 class="title"><a name="unix-smb"></a>Chapter 1. NetBIOS in a Unix World</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Andrew</span> <span class="surname">Tridgell</span></h3></div></div><div><p class="pubdate">April 1995</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="unix-smb.html#id2505193">Introduction</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505214">Usernames</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505546">File Ownership</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505577">Passwords</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504910">Locking</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504962">Deny Modes</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2504994">Trapdoor UIDs</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2505015">Port numbers</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2556040">Protocol Complexity</a></span></dt></dl></div><div class="sect1" title="Introduction"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2505193"></a>Introduction</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 1. NetBIOS in a Unix World</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt01.html" title="Part I. The protocol"><link rel="prev" href="pt01.html" title="Part I. The protocol"><link rel="next" href="ntdomain.html" title="Chapter 2. NT Domain RPC's"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. NetBIOS in a Unix World</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt01.html">Prev</a> </td><th width="60%" align="center">Part I. The protocol</th><td width="20%" align="right"> <a accesskey="n" href="ntdomain.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="unix-smb"></a>Chapter 1. NetBIOS in a Unix World</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Andrew</span> <span class="surname">Tridgell</span></h3></div></div><div><p class="pubdate">April 1995</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="unix-smb.html#id2499122">Introduction</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499143">Usernames</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499475">File Ownership</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2499506">Passwords</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498843">Locking</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498891">Deny Modes</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498923">Trapdoor UIDs</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498944">Port numbers</a></span></dt><dt><span class="sect1"><a href="unix-smb.html#id2498960">Protocol Complexity</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2499122"></a>Introduction</h2></div></div></div><p> 2 2 This is a short document that describes some of the issues that 3 3 confront a SMB implementation on unix, and how Samba copes with … … 7 7 It was written to help out a person who was writing a paper on unix to 8 8 PC connectivity. 9 </p></div><div class="sect1" title="Usernames"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2505214"></a>Usernames</h2></div></div></div><p>9 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2499143"></a>Usernames</h2></div></div></div><p> 10 10 The SMB protocol has only a loose username concept. Early SMB 11 11 protocols (such as CORE and COREPLUS) have no username concept at … … 44 44 validation and the derivation of the username from the service name 45 45 (either directly or via the user= option). 46 </p></div><div class="sect1" title="File Ownership"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2505546"></a>File Ownership</h2></div></div></div><p>46 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2499475"></a>File Ownership</h2></div></div></div><p> 47 47 The commonly used SMB protocols have no way of saying "you can't do 48 48 that because you don't own the file". They have, in fact, no concept … … 62 62 username mapping, and forcing a specific username for particular 63 63 shares. 64 </p></div><div class="sect1" title="Passwords"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2505577"></a>Passwords</h2></div></div></div><p>64 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2499506"></a>Passwords</h2></div></div></div><p> 65 65 Many SMB clients uppercase passwords before sending them. I have no 66 66 idea why they do this. Interestingly WfWg uppercases the password only … … 84 84 by the root user. See the documentation ENCRYPTION.txt for more 85 85 details. 86 </p></div><div class="sect1" title="Locking"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2504910"></a>Locking</h2></div></div></div><p>86 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2498843"></a>Locking</h2></div></div></div><p> 87 87 Since samba 2.2, samba supports other types of locking as well. This 88 88 section is outdated. … … 115 115 give up its lock. Unix has no simple way of implementing 116 116 opportunistic locking, and currently Samba has no support for it. 117 </p></div><div class="sect1" title="Deny Modes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2504962"></a>Deny Modes</h2></div></div></div><p>117 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2498891"></a>Deny Modes</h2></div></div></div><p> 118 118 When a SMB client opens a file it asks for a particular "deny mode" to 119 119 be placed on the file. These modes (DENY_NONE, DENY_READ, DENY_WRITE, … … 129 129 the shared memory implementation is vastly prefered and is turned on 130 130 by default for those systems that support it. 131 </p></div><div class="sect1" title="Trapdoor UIDs"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2504994"></a>Trapdoor UIDs</h2></div></div></div><p>131 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2498923"></a>Trapdoor UIDs</h2></div></div></div><p> 132 132 A SMB session can run with several uids on the one socket. This 133 133 happens when a user connects to two shares with different … … 139 139 Note that you can also get the "trapdoor uid" message for other 140 140 reasons. Please see the FAQ for details. 141 </p></div><div class="sect1" title="Port numbers"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2505015"></a>Port numbers</h2></div></div></div><p>141 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2498944"></a>Port numbers</h2></div></div></div><p> 142 142 There is a convention that clients on sockets use high "unprivileged" 143 143 port numbers (>1000) and connect to servers on low "privilegedg" port … … 162 162 on. Interestingly WinNT3.1 got this right - it sends node status 163 163 responses back to the source port in the request. 164 </p></div><div class="sect1" title="Protocol Complexity"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2556040"></a>Protocol Complexity</h2></div></div></div><p>164 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2498960"></a>Protocol Complexity</h2></div></div></div><p> 165 165 There are many "protocol levels" in the SMB protocol. It seems that 166 166 each time new functionality was added to a Microsoft operating system, -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/vfs.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 10. VFS Modules</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="rpc-plugin.html" title="Chapter 9. RPC Pluggable Modules"><link rel="next" href="parsing.html" title="Chapter 11. The smb.conf file"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. VFS Modules</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="rpc-plugin.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="parsing.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 10. VFS Modules"><div class="titlepage"><div><div><h2 class="title"><a name="vfs"></a>Chapter 10. VFS Modules</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Alexander</span> <span class="surname">Bokovoy</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:ab@samba.org">ab@samba.org</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Metzmacher</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:metze@samba.org">metze@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate"> 27 May 2003 </p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="vfs.html#id2565148">The Samba (Posix) VFS layer</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565189">The general interface</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2565500">Possible VFS operation layers</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2565561">The Interaction between the Samba VFS subsystem and the modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565568">Initialization and registration</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2565713">How the Modules handle per connection data</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2565913">Upgrading to the New VFS Interface</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2565919">Upgrading from 2.2.* and 3.0alpha modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2566324">Some Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2566329">Implement TRANSPARENT functions</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2566349">Implement OPAQUE functions</a></span></dt></dl></dd></dl></div><div class="sect1" title="The Samba (Posix) VFS layer"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2565148"></a>The Samba (Posix) VFS layer</h2></div></div></div><p>While most of Samba deployments are done using POSIX-compatible1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 10. VFS Modules</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="rpc-plugin.html" title="Chapter 9. RPC Pluggable Modules"><link rel="next" href="parsing.html" title="Chapter 11. The smb.conf file"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 10. VFS Modules</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="rpc-plugin.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="parsing.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="vfs"></a>Chapter 10. VFS Modules</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Alexander</span> <span class="surname">Bokovoy</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:ab@samba.org">ab@samba.org</a>></code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Stefan</span> <span class="surname">Metzmacher</span></h3><div class="affiliation"><div class="address"><p><code class="email"><<a class="email" href="mailto:metze@samba.org">metze@samba.org</a>></code></p></div></div></div></div><div><p class="pubdate"> 27 May 2003 </p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="vfs.html#id2559076">The Samba (Posix) VFS layer</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559117">The general interface</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2559428">Possible VFS operation layers</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2559489">The Interaction between the Samba VFS subsystem and the modules</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559495">Initialization and registration</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2559640">How the Modules handle per connection data</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2559841">Upgrading to the New VFS Interface</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2559847">Upgrading from 2.2.* and 3.0alpha modules</a></span></dt></dl></dd><dt><span class="sect1"><a href="vfs.html#id2560251">Some Notes</a></span></dt><dd><dl><dt><span class="sect2"><a href="vfs.html#id2560257">Implement TRANSPARENT functions</a></span></dt><dt><span class="sect2"><a href="vfs.html#id2560276">Implement OPAQUE functions</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2559076"></a>The Samba (Posix) VFS layer</h2></div></div></div><p>While most of Samba deployments are done using POSIX-compatible 2 2 operating systems, there is clearly more to a file system than what is 3 3 required by POSIX when it comes to adopting semantics of NT file … … 25 25 to load several instances of the same VFS module with different 26 26 parameters. 27 </p><div class="sect2" title="The general interface"><div class="titlepage"><div><div><h3 class="title"><a name="id2565189"></a>The general interface</h3></div></div></div><p>A VFS module has three major components:28 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><span class="emphasis"><em>An initialization function</em></span> that is27 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559117"></a>The general interface</h3></div></div></div><p>A VFS module has three major components: 28 </p><div class="itemizedlist"><ul type="disc"><li><span class="emphasis"><em>An initialization function</em></span> that is 29 29 called during the module load to register implemented 30 operations.</li><li class="listitem"><span class="emphasis"><em>An operations table</em></span> representing a30 operations.</li><li><span class="emphasis"><em>An operations table</em></span> representing a 31 31 mapping between statically defined module functions and VFS layer 32 operations.</li><li class="listitem"><span class="emphasis"><em>Module functions</em></span> that do actual32 operations.</li><li><span class="emphasis"><em>Module functions</em></span> that do actual 33 33 work.</li></ul></div><p> 34 34 </p><p>While this structure has been first applied to the VFS … … 50 50 </p><p>Therefore, initialization function passes three parameters to the 51 51 VFS registration function, <code class="literal">smb_register_vfs()</code> 52 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><span class="emphasis"><em>interface version number</em></span>, as constant53 <code class="literal">SMB_VFS_INTERFACE_VERSION</code>, </li><li class="listitem"><span class="emphasis"><em>module name</em></span>, under which Samba core54 will know it, and</li><li class="listitem"><span class="emphasis"><em>an operations' table</em></span>.</li></ul></div><p>52 </p><div class="itemizedlist"><ul type="disc"><li><span class="emphasis"><em>interface version number</em></span>, as constant 53 <code class="literal">SMB_VFS_INTERFACE_VERSION</code>, </li><li><span class="emphasis"><em>module name</em></span>, under which Samba core 54 will know it, and</li><li><span class="emphasis"><em>an operations' table</em></span>.</li></ul></div><p> 55 55 </p><p>The <span class="emphasis"><em>operations' table</em></span> defines which 56 56 functions in the module would correspond to specific VFS operations 57 57 and how those functions would co-operate with the rest of VFS 58 58 subsystem. Each operation could perform in a following ways: 59 </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><span class="emphasis"><em>transparent</em></span>, meaning that while59 </p><div class="itemizedlist"><ul type="disc"><li><span class="emphasis"><em>transparent</em></span>, meaning that while 60 60 operation is overriden, the module will still call a previous 61 61 implementation, before or after its own action. This mode is 62 62 indicated by the constant 63 63 <code class="literal">SMB_VFS_LAYER_TRANSPARENT</code>; 64 </li><li class="listitem"><span class="emphasis"><em>opaque</em></span>, for the implementations that64 </li><li><span class="emphasis"><em>opaque</em></span>, for the implementations that 65 65 are terminating sequence of actions. For example, it is used to 66 66 implement POSIX operation on top of non-POSIX file system or even 67 67 not a file system at all, like a database for a personal audio 68 68 collection. Use constant <code class="literal">SMB_VFS_LAYER_OPAQUE</code> for 69 this mode;</li><li class="listitem"><span class="emphasis"><em>splitter</em></span>, a way when some file system69 this mode;</li><li><span class="emphasis"><em>splitter</em></span>, a way when some file system 70 70 activity is done in addition to the transparently calling previous 71 71 implentation. This usually involves mangling the result of that call 72 72 before returning it back to the caller. This mode is selected by 73 <code class="literal">SMB_VFS_LAYER_SPLITTER</code> constant;</li><li class="listitem"><span class="emphasis"><em>logger</em></span> does not change anything or73 <code class="literal">SMB_VFS_LAYER_SPLITTER</code> constant;</li><li><span class="emphasis"><em>logger</em></span> does not change anything or 74 74 performs any additional VFS operations. When 75 75 <span class="emphasis"><em>logger</em></span> module acts, information about … … 78 78 describe this type of activity use constant 79 79 <code class="literal">SMB_VFS_LAYER_LOGGER</code>; 80 </li><li class="listitem">On contrary, <span class="emphasis"><em>scanner</em></span> module does call80 </li><li>On contrary, <span class="emphasis"><em>scanner</em></span> module does call 81 81 other VFS operations while processing the data that goes through the 82 82 system. This type of operation is indicated by the … … 188 188 189 189 ... 190 </pre></div><div class="sect2" title="Possible VFS operation layers"><div class="titlepage"><div><div><h3 class="title"><a name="id2565500"></a>Possible VFS operation layers</h3></div></div></div><p>190 </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559428"></a>Possible VFS operation layers</h3></div></div></div><p> 191 191 These values are used by the VFS subsystem when building the conn->vfs 192 192 and conn->vfs_opaque structs for a connection with multiple VFS modules. … … 217 217 /* file activity like logging to files _inside_ samba VFS */ 218 218 } vfs_op_layer; 219 </pre></div></div><div class="sect1" title="The Interaction between the Samba VFS subsystem and the modules"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2565561"></a>The Interaction between the Samba VFS subsystem and the modules</h2></div></div></div><div class="sect2" title="Initialization and registration"><div class="titlepage"><div><div><h3 class="title"><a name="id2565568"></a>Initialization and registration</h3></div></div></div><p>219 </pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2559489"></a>The Interaction between the Samba VFS subsystem and the modules</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559495"></a>Initialization and registration</h3></div></div></div><p> 220 220 As each Samba module a VFS module should have a 221 221 </p><pre class="programlisting">NTSTATUS vfs_example_init(void);</pre><p> function if it's staticly linked to samba or … … 257 257 return smb_register_vfs(SMB_VFS_INTERFACE_VERSION, "example", example_op_tuples); 258 258 } 259 </pre></div><div class="sect2" title="How the Modules handle per connection data"><div class="titlepage"><div><div><h3 class="title"><a name="id2565713"></a>How the Modules handle per connection data</h3></div></div></div><p>Each VFS function has as first parameter a pointer to the modules vfs_handle_struct.259 </pre></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559640"></a>How the Modules handle per connection data</h3></div></div></div><p>Each VFS function has as first parameter a pointer to the modules vfs_handle_struct. 260 260 </p><pre class="programlisting"> 261 261 typedef struct vfs_handle_struct { … … 358 358 (tofd), (fsp), (fromfd), (header), (offset), (count))) 359 359 ... 360 </pre></div></div><div class="sect1" title="Upgrading to the New VFS Interface"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2565913"></a>Upgrading to the New VFS Interface</h2></div></div></div><div class="sect2" title="Upgrading from 2.2.* and 3.0alpha modules"><div class="titlepage"><div><div><h3 class="title"><a name="id2565919"></a>Upgrading from 2.2.* and 3.0alpha modules</h3></div></div></div><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>360 </pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2559841"></a>Upgrading to the New VFS Interface</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2559847"></a>Upgrading from 2.2.* and 3.0alpha modules</h3></div></div></div><div class="orderedlist"><ol type="1"><li><p> 361 361 Add "vfs_handle_struct *handle, " as first parameter to all vfs operation functions. 362 362 e.g. example_connect(connection_struct *conn, const char *service, const char *user); 363 363 -> example_connect(vfs_handle_struct *handle, connection_struct *conn, const char *service, const char *user); 364 </p></li><li class="listitem"><p>364 </p></li><li><p> 365 365 Replace "default_vfs_ops." with "smb_vfs_next_". 366 366 e.g. default_vfs_ops.connect(conn, service, user); 367 367 -> smb_vfs_next_connect(conn, service, user); 368 </p></li><li class="listitem"><p>368 </p></li><li><p> 369 369 Uppercase all "smb_vfs_next_*" functions. 370 370 e.g. smb_vfs_next_connect(conn, service, user); 371 371 -> SMB_VFS_NEXT_CONNECT(conn, service, user); 372 </p></li><li class="listitem"><p>372 </p></li><li><p> 373 373 Add "handle, " as first parameter to all SMB_VFS_NEXT_*() calls. 374 374 e.g. SMB_VFS_NEXT_CONNECT(conn, service, user); 375 375 -> SMB_VFS_NEXT_CONNECT(handle, conn, service, user); 376 </p></li><li class="listitem"><p>376 </p></li><li><p> 377 377 (Only for 2.2.* modules) 378 378 Convert the old struct vfs_ops example_ops to … … 463 463 }; 464 464 </pre><p> 465 </p></li><li class="listitem"><p>465 </p></li><li><p> 466 466 Move the example_op_tuples[] array to the end of the file. 467 </p></li><li class="listitem"><p>467 </p></li><li><p> 468 468 Add the init_module() function at the end of the file. 469 469 e.g. … … 474 474 } 475 475 </pre><p> 476 </p></li><li class="listitem"><p>476 </p></li><li><p> 477 477 Check if your vfs_init() function does more then just prepare the vfs_ops structs or 478 478 remember the struct smb_vfs_handle_struct. 479 </p><table border="0" summary="Simple list" class="simplelist"><tr><td>If NOT you can remove the vfs_init() function.</td></tr><tr><td>If YES decide if you want to move the code to the example_connect() operation or to the init_module(). And then remove vfs_init().479 </p><table class="simplelist" border="0" summary="Simple list"><tr><td>If NOT you can remove the vfs_init() function.</td></tr><tr><td>If YES decide if you want to move the code to the example_connect() operation or to the init_module(). And then remove vfs_init(). 480 480 e.g. a debug class registration should go into init_module() and the allocation of private data should go to example_connect().</td></tr></table><p> 481 </p></li><li class="listitem"><p>481 </p></li><li><p> 482 482 (Only for 3.0alpha* modules) 483 483 Check if your vfs_done() function contains needed code. 484 </p><table border="0" summary="Simple list" class="simplelist"><tr><td>If NOT you can remove the vfs_done() function.</td></tr><tr><td>If YES decide if you can move the code to the example_disconnect() operation. Otherwise register a SMB_EXIT_EVENT with smb_register_exit_event(); (Described in the <a class="link" href="modules.html" title="Chapter 8. Modules">modules section</a>) And then remove vfs_done(). e.g. the freeing of private data should go to example_disconnect().484 </p><table class="simplelist" border="0" summary="Simple list"><tr><td>If NOT you can remove the vfs_done() function.</td></tr><tr><td>If YES decide if you can move the code to the example_disconnect() operation. Otherwise register a SMB_EXIT_EVENT with smb_register_exit_event(); (Described in the <a class="link" href="modules.html" title="Chapter 8. Modules">modules section</a>) And then remove vfs_done(). e.g. the freeing of private data should go to example_disconnect(). 485 485 </td></tr></table><p> 486 </p></li><li class="listitem"><p>486 </p></li><li><p> 487 487 Check if you have any global variables left. 488 488 Decide if it wouldn't be better to have this data on a connection basis. 489 </p><table border="0" summary="Simple list" class="simplelist"><tr><td>If NOT leave them as they are. (e.g. this could be the variable for the private debug class.)</td></tr><tr><td>If YES pack all this data into a struct. You can use handle->data to point to such a struct on a per connection basis.</td></tr></table><p>489 </p><table class="simplelist" border="0" summary="Simple list"><tr><td>If NOT leave them as they are. (e.g. this could be the variable for the private debug class.)</td></tr><tr><td>If YES pack all this data into a struct. You can use handle->data to point to such a struct on a per connection basis.</td></tr></table><p> 490 490 491 491 e.g. if you have such a struct: … … 605 605 } 606 606 </pre><p> 607 </p></li><li class="listitem"><p>607 </p></li><li><p> 608 608 To make it easy to build 3rd party modules it would be useful to provide 609 609 configure.in, (configure), install.sh and Makefile.in with the module. … … 618 618 <code class="filename">configure.in</code> and <code class="filename">Makefile.in</code> scripts 619 619 for your module. 620 </p></li><li class="listitem"><p>620 </p></li><li><p> 621 621 Compiling & Testing... 622 </p><table border="0" summary="Simple list" class="simplelist"><tr><td><strong class="userinput"><code>./configure <code class="option">--enable-developer</code></code></strong> ...</td></tr><tr><td><strong class="userinput"><code>make</code></strong></td></tr><tr><td>Try to fix all compiler warnings</td></tr><tr><td><strong class="userinput"><code>make</code></strong></td></tr><tr><td>Testing, Testing, Testing ...</td></tr></table><p>623 </p></li></ol></div></div></div><div class="sect1" title="Some Notes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566324"></a>Some Notes</h2></div></div></div><div class="sect2" title="Implement TRANSPARENT functions"><div class="titlepage"><div><div><h3 class="title"><a name="id2566329"></a>Implement TRANSPARENT functions</h3></div></div></div><p>622 </p><table class="simplelist" border="0" summary="Simple list"><tr><td><strong class="userinput"><code>./configure <code class="option">--enable-developer</code></code></strong> ...</td></tr><tr><td><strong class="userinput"><code>make</code></strong></td></tr><tr><td>Try to fix all compiler warnings</td></tr><tr><td><strong class="userinput"><code>make</code></strong></td></tr><tr><td>Testing, Testing, Testing ...</td></tr></table><p> 623 </p></li></ol></div></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560251"></a>Some Notes</h2></div></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560257"></a>Implement TRANSPARENT functions</h3></div></div></div><p> 624 624 Avoid writing functions like this: 625 625 … … 632 632 633 633 Overload only the functions you really need to! 634 </p></div><div class="sect2" title="Implement OPAQUE functions"><div class="titlepage"><div><div><h3 class="title"><a name="id2566349"></a>Implement OPAQUE functions</h3></div></div></div><p>634 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560276"></a>Implement OPAQUE functions</h3></div></div></div><p> 635 635 If you want to just implement a better version of a 636 636 default samba opaque function -
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/wins.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 12. Samba WINS Internals</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="parsing.html" title="Chapter 11. The smb.conf file"><link rel="next" href="pwencrypt.html" title="Chapter 13. LanMan and NT Password Encryption"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. Samba WINS Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parsing.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="pwencrypt.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 12. Samba WINS Internals"><div class="titlepage"><div><div><h2 class="title"><a name="wins"></a>Chapter 12. Samba WINS Internals</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Gerald</span> <span class="surname">Carter</span></h3></div></div><div><p class="pubdate">October 2002</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="wins.html#id2566747">WINS Failover</a></span></dt></dl></div><div class="sect1" title="WINS Failover"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566747"></a>WINS Failover</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 12. Samba WINS Internals</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="parsing.html" title="Chapter 11. The smb.conf file"><link rel="next" href="pwencrypt.html" title="Chapter 13. LanMan and NT Password Encryption"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 12. Samba WINS Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="parsing.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="pwencrypt.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="wins"></a>Chapter 12. Samba WINS Internals</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Gerald</span> <span class="surname">Carter</span></h3></div></div><div><p class="pubdate">October 2002</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="wins.html#id2560674">WINS Failover</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560674"></a>WINS Failover</h2></div></div></div><p> 2 2 The current Samba codebase possesses the capability to use groups of WINS 3 3 servers that share a common namespace for NetBIOS name registration and
Note:
See TracChangeset
for help on using the changeset viewer.