summaryrefslogtreecommitdiff
path: root/docs/htmldocs/Samba-Developers-Guide.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/htmldocs/Samba-Developers-Guide.html')
-rw-r--r--docs/htmldocs/Samba-Developers-Guide.html1393
1 files changed, 471 insertions, 922 deletions
diff --git a/docs/htmldocs/Samba-Developers-Guide.html b/docs/htmldocs/Samba-Developers-Guide.html
index 142d9dc537..b90d99bf66 100644
--- a/docs/htmldocs/Samba-Developers-Guide.html
+++ b/docs/htmldocs/Samba-Developers-Guide.html
@@ -5,7 +5,7 @@
>SAMBA Developers Guide</TITLE
><META
NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.7"></HEAD
+CONTENT="Modular DocBook HTML Stylesheet Version 1.77"></HEAD
><BODY
CLASS="BOOK"
BGCOLOR="#FFFFFF"
@@ -24,8 +24,8 @@ CLASS="TITLEPAGE"
CLASS="TITLE"
><A
NAME="SAMBA-DEVELOPERS-GUIDE"
->SAMBA Developers Guide</A
-></H1
+></A
+>SAMBA Developers Guide</H1
><H3
CLASS="AUTHOR"
><A
@@ -687,7 +687,7 @@ HREF="#AEN2925"
><DT
>10.4. <A
HREF="#AEN2959"
->ChangeID and Client Caching of Printer Information</A
+>ChangeID &#38; Client Caching of Printer Information</A
></DT
><DT
>10.5. <A
@@ -810,92 +810,7 @@ HREF="#AEN3162"
><A
NAME="SMBPASSWDFILEFORMAT"
></A
->&#62;The smbpasswd file</A
-></DT
-></DL
-></DD
-><DT
->14. <A
-HREF="#MODULES"
->Modules</A
-></DT
-><DD
-><DL
-><DT
->14.1. <A
-HREF="#AEN3225"
->Advantages</A
-></DT
-><DT
->14.2. <A
-HREF="#AEN3234"
->Loading modules</A
-></DT
-><DD
-><DL
-><DT
->14.2.1. <A
-HREF="#AEN3240"
->Static modules</A
-></DT
-><DT
->14.2.2. <A
-HREF="#AEN3247"
->Shared modules</A
-></DT
-></DL
-></DD
-><DT
->14.3. <A
-HREF="#AEN3251"
->Writing modules</A
-></DT
-><DD
-><DL
-><DT
->14.3.1. <A
-HREF="#AEN3262"
->Static/Shared selection in configure.in</A
-></DT
-></DL
-></DD
-></DL
-></DD
-><DT
->15. <A
-HREF="#RPC-PLUGIN"
->RPC Pluggable Modules</A
-></DT
-><DD
-><DL
-><DT
->15.1. <A
-HREF="#AEN3301"
->About</A
-></DT
-><DT
->15.2. <A
-HREF="#AEN3304"
->General Overview</A
-></DT
-></DL
-></DD
-><DT
->16. <A
-HREF="#PACKAGING"
->Notes to packagers</A
-></DT
-><DD
-><DL
-><DT
->16.1. <A
-HREF="#AEN3337"
->Versioning</A
-></DT
-><DT
->16.2. <A
-HREF="#AEN3343"
->Modules</A
+>The smbpasswd file</A
></DT
></DL
></DD
@@ -914,8 +829,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN24"
->1.1. NETBIOS</A
-></H2
+></A
+>1.1. NETBIOS</H2
><P
>NetBIOS runs over the following tranports: TCP/IP; NetBEUI and IPX/SPX.
Samba only uses NetBIOS over TCP/IP. For details on the TCP/IP NetBIOS
@@ -970,8 +885,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN35"
->1.2. BROADCAST NetBIOS</A
-></H2
+></A
+>1.2. BROADCAST NetBIOS</H2
><P
>
Clients can claim names, and therefore offer services on successfully claimed
@@ -993,8 +908,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN39"
->1.3. NBNS NetBIOS</A
-></H2
+></A
+>1.3. NBNS NetBIOS</H2
><P
>rfc1001.txt describes, amongst other things, the implementation and use
of, a 'NetBIOS Name Service'. NT/AS offers 'Windows Internet Name Service'
@@ -1053,8 +968,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN54"
->2.1. Introduction</A
-></H2
+></A
+>2.1. Introduction</H2
><P
>This document gives a general overview of how Samba works
internally. The Samba Team has tried to come up with a model which is
@@ -1088,8 +1003,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN65"
->2.2. Multithreading and Samba</A
-></H2
+></A
+>2.2. Multithreading and Samba</H2
><P
>People sometimes tout threads as a uniformly good thing. They are very
nice in their place but are quite inappropriate for smbd. nmbd is
@@ -1114,8 +1029,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN70"
->2.3. Threading smbd</A
-></H2
+></A
+>2.3. Threading smbd</H2
><P
>A few problems that would arise from a threaded smbd are:</P
><P
@@ -1165,8 +1080,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN86"
->2.4. Threading nmbd</A
-></H2
+></A
+>2.4. Threading nmbd</H2
><P
>This would be ideal, but gets sunk by portability requirements.</P
><P
@@ -1201,8 +1116,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN92"
->2.5. nbmd Design</A
-></H2
+></A
+>2.5. nbmd Design</H2
><P
>Originally Andrew used recursion to simulate a multi-threaded
environment, which use the stack enormously and made for really
@@ -1239,22 +1154,22 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN103"
->3.1. New Output Syntax</A
-></H2
+></A
+>3.1. New Output Syntax</H2
><P
> The syntax of a debugging log file is represented as:</P
><P
><PRE
CLASS="PROGRAMLISTING"
-> &#62;debugfile&#60; :== { &#62;debugmsg&#60; }
+> &gt;debugfile&lt; :== { &gt;debugmsg&lt; }
- &#62;debugmsg&#60; :== &#62;debughdr&#60; '\n' &#62;debugtext&#60;
+ &gt;debugmsg&lt; :== &gt;debughdr&lt; '\n' &gt;debugtext&lt;
- &#62;debughdr&#60; :== '[' TIME ',' LEVEL ']' FILE ':' [FUNCTION] '(' LINE ')'
+ &gt;debughdr&lt; :== '[' TIME ',' LEVEL ']' FILE ':' [FUNCTION] '(' LINE ')'
- &#62;debugtext&#60; :== { &#62;debugline&#60; }
+ &gt;debugtext&lt; :== { &gt;debugline&lt; }
- &#62;debugline&#60; :== TEXT '\n'</PRE
+ &gt;debugline&lt; :== TEXT '\n'</PRE
></P
><P
>TEXT is a string of characters excluding the newline character.</P
@@ -1324,8 +1239,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN128"
->3.2. The DEBUG() Macro</A
-></H2
+></A
+>3.2. The DEBUG() Macro</H2
><P
>Use of the DEBUG() macro is unchanged. DEBUG() takes two parameters.
The first is the message level, the second is the body of a function
@@ -1404,8 +1319,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN151"
->3.3. The DEBUGADD() Macro</A
-></H2
+></A
+>3.3. The DEBUGADD() Macro</H2
><P
>In addition to the kludgey solution to the broken line problem
described above, there is a clean solution. The DEBUGADD() macro never
@@ -1435,8 +1350,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN159"
->3.4. The DEBUGLVL() Macro</A
-></H2
+></A
+>3.4. The DEBUGLVL() Macro</H2
><P
>One of the problems with the DEBUG() macro was that DEBUG() lines
tended to get a bit long. Consider this example from
@@ -1503,16 +1418,16 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN179"
->3.5. New Functions</A
-></H2
+></A
+>3.5. New Functions</H2
><DIV
CLASS="SECT2"
><H3
CLASS="SECT2"
><A
NAME="AEN181"
->3.5.1. dbgtext()</A
-></H3
+></A
+>3.5.1. dbgtext()</H3
><P
>This function prints debug message text to the debug file (and
possibly to syslog) via the format buffer. The function uses a
@@ -1529,8 +1444,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN184"
->3.5.2. dbghdr()</A
-></H3
+></A
+>3.5.2. dbghdr()</H3
><P
>This is the function that writes a debug message header.
Headers are not processed via the format buffer. Also note that
@@ -1546,8 +1461,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN188"
->3.5.3. format_debug_text()</A
-></H3
+></A
+>3.5.3. format_debug_text()</H3
><P
>This is a static function in debug.c. It stores the output text
for the body of the message in a buffer until it encounters a
@@ -1792,8 +1707,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN284"
->5.1. Character Handling</A
-></H2
+></A
+>5.1. Character Handling</H2
><P
>This section describes character set handling in Samba, as implemented in
Samba 3.0 and above</P
@@ -1811,8 +1726,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN288"
->5.2. The new functions</A
-></H2
+></A
+>5.2. The new functions</H2
><P
>The new system works like this:</P
><P
@@ -1922,8 +1837,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN317"
->5.3. Macros in byteorder.h</A
-></H2
+></A
+>5.3. Macros in byteorder.h</H2
><P
>This section describes the macros defined in byteorder.h. These macros
are used extensively in the Samba code.</P
@@ -1933,8 +1848,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN320"
->5.3.1. CVAL(buf,pos)</A
-></H3
+></A
+>5.3.1. CVAL(buf,pos)</H3
><P
>returns the byte at offset pos within buffer buf as an unsigned character.</P
></DIV
@@ -1944,8 +1859,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN323"
->5.3.2. PVAL(buf,pos)</A
-></H3
+></A
+>5.3.2. PVAL(buf,pos)</H3
><P
>returns the value of CVAL(buf,pos) cast to type unsigned integer.</P
></DIV
@@ -1955,8 +1870,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN326"
->5.3.3. SCVAL(buf,pos,val)</A
-></H3
+></A
+>5.3.3. SCVAL(buf,pos,val)</H3
><P
>sets the byte at offset pos within buffer buf to value val.</P
></DIV
@@ -1966,8 +1881,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN329"
->5.3.4. SVAL(buf,pos)</A
-></H3
+></A
+>5.3.4. SVAL(buf,pos)</H3
><P
> returns the value of the unsigned short (16 bit) little-endian integer at
offset pos within buffer buf. An integer of this type is sometimes
@@ -1979,8 +1894,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN332"
->5.3.5. IVAL(buf,pos)</A
-></H3
+></A
+>5.3.5. IVAL(buf,pos)</H3
><P
>returns the value of the unsigned 32 bit little-endian integer at offset
pos within buffer buf.</P
@@ -1991,8 +1906,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN335"
->5.3.6. SVALS(buf,pos)</A
-></H3
+></A
+>5.3.6. SVALS(buf,pos)</H3
><P
>returns the value of the signed short (16 bit) little-endian integer at
offset pos within buffer buf.</P
@@ -2003,8 +1918,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN338"
->5.3.7. IVALS(buf,pos)</A
-></H3
+></A
+>5.3.7. IVALS(buf,pos)</H3
><P
>returns the value of the signed 32 bit little-endian integer at offset pos
within buffer buf.</P
@@ -2015,8 +1930,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN341"
->5.3.8. SSVAL(buf,pos,val)</A
-></H3
+></A
+>5.3.8. SSVAL(buf,pos,val)</H3
><P
>sets the unsigned short (16 bit) little-endian integer at offset pos within
buffer buf to value val.</P
@@ -2027,8 +1942,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN344"
->5.3.9. SIVAL(buf,pos,val)</A
-></H3
+></A
+>5.3.9. SIVAL(buf,pos,val)</H3
><P
>sets the unsigned 32 bit little-endian integer at offset pos within buffer
buf to the value val.</P
@@ -2039,8 +1954,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN347"
->5.3.10. SSVALS(buf,pos,val)</A
-></H3
+></A
+>5.3.10. SSVALS(buf,pos,val)</H3
><P
>sets the short (16 bit) signed little-endian integer at offset pos within
buffer buf to the value val.</P
@@ -2051,8 +1966,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN350"
->5.3.11. SIVALS(buf,pos,val)</A
-></H3
+></A
+>5.3.11. SIVALS(buf,pos,val)</H3
><P
>sets the signed 32 bit little-endian integer at offset pos withing buffer
buf to the value val.</P
@@ -2063,8 +1978,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN353"
->5.3.12. RSVAL(buf,pos)</A
-></H3
+></A
+>5.3.12. RSVAL(buf,pos)</H3
><P
>returns the value of the unsigned short (16 bit) big-endian integer at
offset pos within buffer buf.</P
@@ -2075,8 +1990,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN356"
->5.3.13. RIVAL(buf,pos)</A
-></H3
+></A
+>5.3.13. RIVAL(buf,pos)</H3
><P
>returns the value of the unsigned 32 bit big-endian integer at offset
pos within buffer buf.</P
@@ -2087,8 +2002,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN359"
->5.3.14. RSSVAL(buf,pos,val)</A
-></H3
+></A
+>5.3.14. RSSVAL(buf,pos,val)</H3
><P
>sets the value of the unsigned short (16 bit) big-endian integer at
offset pos within buffer buf to value val.
@@ -2100,8 +2015,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN362"
->5.3.15. RSIVAL(buf,pos,val)</A
-></H3
+></A
+>5.3.15. RSIVAL(buf,pos,val)</H3
><P
>sets the value of the unsigned 32 bit big-endian integer at offset
pos within buffer buf to value val.</P
@@ -2113,8 +2028,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN365"
->5.4. LAN Manager Samba API</A
-></H2
+></A
+>5.4. LAN Manager Samba API</H2
><P
>This section describes the functions need to make a LAN Manager RPC call.
This information had been obtained by examining the Samba code and the LAN
@@ -2135,8 +2050,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN371"
->5.4.1. Parameters</A
-></H3
+></A
+>5.4.1. Parameters</H3
><P
>The parameters are as follows:</P
><P
@@ -2229,8 +2144,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN406"
->5.4.2. Return value</A
-></H3
+></A
+>5.4.2. Return value</H3
><P
>The returned parameters (pointed to by rparam), in their order of appearance
are:</P
@@ -2282,8 +2197,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN420"
->5.5. Code character table</A
-></H2
+></A
+>5.5. Code character table</H2
><P
>Certain data structures are described by means of ASCIIz strings containing
code characters. These are the code characters:</P
@@ -2347,8 +2262,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN451"
->6.1. Lexical Analysis</A
-></H2
+></A
+>6.1. Lexical Analysis</H2
><P
>Basically, the file is processed on a line by line basis. There are
four types of lines that are recognized by the lexical analyzer
@@ -2406,8 +2321,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN472"
->6.1.1. Handling of Whitespace</A
-></H3
+></A
+>6.1.1. Handling of Whitespace</H3
><P
>Whitespace is defined as all characters recognized by the isspace()
function (see ctype(3C)) except for the newline character ('\n')
@@ -2443,8 +2358,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN484"
->6.1.2. Handling of Line Continuation</A
-></H3
+></A
+>6.1.2. Handling of Line Continuation</H3
><P
>Long section header and parameter lines may be extended across
multiple lines by use of the backslash character ('\\'). Line
@@ -2483,8 +2398,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN495"
->6.1.3. Line Continuation Quirks</A
-></H3
+></A
+>6.1.3. Line Continuation Quirks</H3
><P
>Note the following example:</P
><P
@@ -2543,17 +2458,17 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN515"
->6.2. Syntax</A
-></H2
+></A
+>6.2. Syntax</H2
><P
>The syntax of the smb.conf file is as follows:</P
><P
><PRE
CLASS="PROGRAMLISTING"
-> &#60;file&#62; :== { &#60;section&#62; } EOF
- &#60;section&#62; :== &#60;section header&#62; { &#60;parameter line&#62; }
- &#60;section header&#62; :== '[' NAME ']'
- &#60;parameter line&#62; :== NAME '=' VALUE NL</PRE
+> &lt;file&gt; :== { &lt;section&gt; } EOF
+ &lt;section&gt; :== &lt;section header&gt; { &lt;parameter line&gt; }
+ &lt;section header&gt; :== '[' NAME ']'
+ &lt;parameter line&gt; :== NAME '=' VALUE NL</PRE
></P
><P
>Basically, this means that</P
@@ -2590,8 +2505,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN530"
->6.2.1. About params.c</A
-></H3
+></A
+>6.2.1. About params.c</H3
><P
>The parsing of the config file is a bit unusual if you are used to
lex, yacc, bison, etc. Both lexical analysis (scanning) and parsing
@@ -2613,8 +2528,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN540"
->7.1. Introduction</A
-></H2
+></A
+>7.1. Introduction</H2
><P
>This is a short document that describes some of the issues that
confront a SMB implementation on unix, and how Samba copes with
@@ -2630,8 +2545,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN544"
->7.2. Usernames</A
-></H2
+></A
+>7.2. Usernames</H2
><P
>The SMB protocol has only a loose username concept. Early SMB
protocols (such as CORE and COREPLUS) have no username concept at
@@ -2676,8 +2591,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN552"
->7.3. File Ownership</A
-></H2
+></A
+>7.3. File Ownership</H2
><P
>The commonly used SMB protocols have no way of saying "you can't do
that because you don't own the file". They have, in fact, no concept
@@ -2703,8 +2618,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN557"
->7.4. Passwords</A
-></H2
+></A
+>7.4. Passwords</H2
><P
>Many SMB clients uppercase passwords before sending them. I have no
idea why they do this. Interestingly WfWg uppercases the password only
@@ -2734,8 +2649,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN563"
->7.5. Locking</A
-></H2
+></A
+>7.5. Locking</H2
><P
>Since samba 2.2, samba supports other types of locking as well. This
section is outdated.</P
@@ -2774,8 +2689,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN571"
->7.6. Deny Modes</A
-></H2
+></A
+>7.6. Deny Modes</H2
><P
>When a SMB client opens a file it asks for a particular "deny mode" to
be placed on the file. These modes (DENY_NONE, DENY_READ, DENY_WRITE,
@@ -2797,8 +2712,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN575"
->7.7. Trapdoor UIDs</A
-></H2
+></A
+>7.7. Trapdoor UIDs</H2
><P
>A SMB session can run with several uids on the one socket. This
happens when a user connects to two shares with different
@@ -2816,8 +2731,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN579"
->7.8. Port numbers</A
-></H2
+></A
+>7.8. Port numbers</H2
><P
>There is a convention that clients on sockets use high "unprivilaged"
port numbers (&#62;1000) and connect to servers on low "privilaged" port
@@ -2848,8 +2763,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN584"
->7.9. Protocol Complexity</A
-></H2
+></A
+>7.9. Protocol Complexity</H2
><P
>There are many "protocol levels" in the SMB protocol. It seems that
each time new functionality was added to a Microsoft operating system,
@@ -3029,8 +2944,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN652"
->9.1. Introduction</A
-></H2
+></A
+>9.1. Introduction</H2
><P
>This document contains information to provide an NT workstation with login
services, without the need for an NT server. It is the sgml version of <A
@@ -3153,8 +3068,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN688"
->9.1.1. Sources</A
-></H3
+></A
+>9.1.1. Sources</H3
><P
></P
><TABLE
@@ -3187,8 +3102,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN695"
->9.1.2. Credits</A
-></H3
+></A
+>9.1.2. Credits</H3
><P
></P
><TABLE
@@ -3222,16 +3137,16 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN702"
->9.2. Notes and Structures</A
-></H2
+></A
+>9.2. Notes and Structures</H2
><DIV
CLASS="SECT2"
><H3
CLASS="SECT2"
><A
NAME="AEN704"
->9.2.1. Notes</A
-></H3
+></A
+>9.2.1. Notes</H3
><P
></P
><OL
@@ -3282,16 +3197,16 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN717"
->9.2.2. Enumerations</A
-></H3
+></A
+>9.2.2. Enumerations</H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN719"
->9.2.2.1. MSRPC Header type</A
-></H4
+></A
+>9.2.2.1. MSRPC Header type</H4
><P
>command number in the msrpc packet header</P
><P
@@ -3332,8 +3247,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN739"
->9.2.2.2. MSRPC Packet info</A
-></H4
+></A
+>9.2.2.2. MSRPC Packet info</H4
><P
>The meaning of these flags is undocumented</P
><P
@@ -3399,16 +3314,16 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN775"
->9.2.3. Structures</A
-></H3
+></A
+>9.2.3. Structures</H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN777"
->9.2.3.1. VOID *</A
-></H4
+></A
+>9.2.3.1. VOID *</H4
><P
>sizeof VOID* is 32 bits.</P
></DIV
@@ -3418,8 +3333,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN780"
->9.2.3.2. char</A
-></H4
+></A
+>9.2.3.2. char</H4
><P
>sizeof char is 8 bits.</P
></DIV
@@ -3429,8 +3344,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN783"
->9.2.3.3. UTIME</A
-></H4
+></A
+>9.2.3.3. UTIME</H4
><P
>UTIME is 32 bits, indicating time in seconds since 01jan1970. documented in cifs6.txt (section 3.5 page, page 30).</P
></DIV
@@ -3440,8 +3355,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN786"
->9.2.3.4. NTTIME</A
-></H4
+></A
+>9.2.3.4. NTTIME</H4
><P
>NTTIME is 64 bits. documented in cifs6.txt (section 3.5 page, page 30).</P
></DIV
@@ -3451,8 +3366,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN789"
->9.2.3.5. DOM_SID (domain SID structure)</A
-></H4
+></A
+>9.2.3.5. DOM_SID (domain SID structure)</H4
><P
></P
><DIV
@@ -3505,8 +3420,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN814"
->9.2.3.6. STR (string)</A
-></H4
+></A
+>9.2.3.6. STR (string)</H4
><P
>STR (string) is a char[] : a null-terminated string of ascii characters.</P
></DIV
@@ -3516,8 +3431,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN817"
->9.2.3.7. UNIHDR (unicode string header)</A
-></H4
+></A
+>9.2.3.7. UNIHDR (unicode string header)</H4
><P
></P
><DIV
@@ -3550,8 +3465,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN832"
->9.2.3.8. UNIHDR2 (unicode string header plus buffer pointer)</A
-></H4
+></A
+>9.2.3.8. UNIHDR2 (unicode string header plus buffer pointer)</H4
><P
></P
><DIV
@@ -3578,8 +3493,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN843"
->9.2.3.9. UNISTR (unicode string)</A
-></H4
+></A
+>9.2.3.9. UNISTR (unicode string)</H4
><P
></P
><DIV
@@ -3600,8 +3515,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN850"
->9.2.3.10. NAME (length-indicated unicode string)</A
-></H4
+></A
+>9.2.3.10. NAME (length-indicated unicode string)</H4
><P
></P
><DIV
@@ -3628,8 +3543,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN861"
->9.2.3.11. UNISTR2 (aligned unicode string)</A
-></H4
+></A
+>9.2.3.11. UNISTR2 (aligned unicode string)</H4
><P
></P
><DIV
@@ -3674,8 +3589,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN884"
->9.2.3.12. OBJ_ATTR (object attributes)</A
-></H4
+></A
+>9.2.3.12. OBJ_ATTR (object attributes)</H4
><P
></P
><DIV
@@ -3726,8 +3641,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN911"
->9.2.3.13. POL_HND (LSA policy handle)</A
-></H4
+></A
+>9.2.3.13. POL_HND (LSA policy handle)</H4
><P
></P
><DIV
@@ -3748,8 +3663,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN918"
->9.2.3.14. DOM_SID2 (domain SID structure, SIDS stored in unicode)</A
-></H4
+></A
+>9.2.3.14. DOM_SID2 (domain SID structure, SIDS stored in unicode)</H4
><P
></P
><DIV
@@ -3804,8 +3719,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN941"
->9.2.3.15. DOM_RID (domain RID structure)</A
-></H4
+></A
+>9.2.3.15. DOM_RID (domain RID structure)</H4
><P
></P
><DIV
@@ -3844,8 +3759,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN960"
->9.2.3.16. LOG_INFO (server, account, client structure)</A
-></H4
+></A
+>9.2.3.16. LOG_INFO (server, account, client structure)</H4
><P
><SPAN
CLASS="emphasis"
@@ -3906,8 +3821,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN987"
->9.2.3.17. CLNT_SRV (server, client names structure)</A
-></H4
+></A
+>9.2.3.17. CLNT_SRV (server, client names structure)</H4
><P
><SPAN
CLASS="emphasis"
@@ -3954,8 +3869,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1008"
->9.2.3.18. CREDS (credentials + time stamp)</A
-></H4
+></A
+>9.2.3.18. CREDS (credentials + time stamp)</H4
><P
></P
><DIV
@@ -3982,8 +3897,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1019"
->9.2.3.19. CLNT_INFO2 (server, client structure, client credentials)</A
-></H4
+></A
+>9.2.3.19. CLNT_INFO2 (server, client structure, client credentials)</H4
><P
><SPAN
CLASS="emphasis"
@@ -4031,8 +3946,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1040"
->9.2.3.20. CLNT_INFO (server, account, client structure, client credentials)</A
-></H4
+></A
+>9.2.3.20. CLNT_INFO (server, account, client structure, client credentials)</H4
><P
><SPAN
CLASS="emphasis"
@@ -4067,8 +3982,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1053"
->9.2.3.21. ID_INFO_1 (id info structure, auth level 1)</A
-></H4
+></A
+>9.2.3.21. ID_INFO_1 (id info structure, auth level 1)</H4
><P
></P
><DIV
@@ -4149,8 +4064,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1100"
->9.2.3.22. SAM_INFO (sam logon/logoff id info structure)</A
-></H4
+></A
+>9.2.3.22. SAM_INFO (sam logon/logoff id info structure)</H4
><P
><SPAN
CLASS="emphasis"
@@ -4212,8 +4127,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1127"
->9.2.3.23. GID (group id info)</A
-></H4
+></A
+>9.2.3.23. GID (group id info)</H4
><P
></P
><DIV
@@ -4240,8 +4155,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1138"
->9.2.3.24. DOM_REF (domain reference info)</A
-></H4
+></A
+>9.2.3.24. DOM_REF (domain reference info)</H4
><P
></P
><DIV
@@ -4310,8 +4225,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1177"
->9.2.3.25. DOM_INFO (domain info, levels 3 and 5 are the same))</A
-></H4
+></A
+>9.2.3.25. DOM_INFO (domain info, levels 3 and 5 are the same))</H4
><P
></P
><DIV
@@ -4368,8 +4283,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1208"
->9.2.3.26. USER_INFO (user logon info)</A
-></H4
+></A
+>9.2.3.26. USER_INFO (user logon info)</H4
><P
><SPAN
CLASS="emphasis"
@@ -4620,8 +4535,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1365"
->9.2.3.27. SH_INFO_1_PTR (pointers to level 1 share info strings)</A
-></H4
+></A
+>9.2.3.27. SH_INFO_1_PTR (pointers to level 1 share info strings)</H4
><P
><SPAN
CLASS="emphasis"
@@ -4691,8 +4606,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1388"
->9.2.3.28. SH_INFO_1_STR (level 1 share info strings)</A
-></H4
+></A
+>9.2.3.28. SH_INFO_1_STR (level 1 share info strings)</H4
><P
></P
><DIV
@@ -4719,8 +4634,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1399"
->9.2.3.29. SHARE_INFO_1_CTR</A
-></H4
+></A
+>9.2.3.29. SHARE_INFO_1_CTR</H4
><P
>share container with 0 entries:</P
><P
@@ -4806,8 +4721,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1445"
->9.2.3.30. SERVER_INFO_101</A
-></H4
+></A
+>9.2.3.30. SERVER_INFO_101</H4
><P
><SPAN
CLASS="emphasis"
@@ -5019,8 +4934,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN1571"
->9.3. MSRPC over Transact Named Pipe</A
-></H2
+></A
+>9.3. MSRPC over Transact Named Pipe</H2
><P
>For details on the SMB Transact Named Pipe, see cifs6.txt</P
><DIV
@@ -5029,8 +4944,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN1574"
->9.3.1. MSRPC Pipes</A
-></H3
+></A
+>9.3.1. MSRPC Pipes</H3
><P
>The MSRPC is conducted over an SMB Transact Pipe with a name of
<TT
@@ -5089,8 +5004,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN1588"
->9.3.2. Header</A
-></H3
+></A
+>9.3.2. Header</H3
><P
>[section to be rewritten, following receipt of work by Duncan Stansfield]</P
><P
@@ -5260,8 +5175,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1649"
->9.3.2.1. RPC_Packet for request, response, bind and bind acknowledgement</A
-></H4
+></A
+>9.3.2.1. RPC_Packet for request, response, bind and bind acknowledgement</H4
><P
></P
><DIV
@@ -5330,8 +5245,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1688"
->9.3.2.2. Interface identification</A
-></H4
+></A
+>9.3.2.2. Interface identification</H4
><P
>the interfaces are numbered. as yet I haven't seen more than one interface used on the same pipe name srvsvc</P
><P
@@ -5347,8 +5262,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1693"
->9.3.2.3. RPC_Iface RW</A
-></H4
+></A
+>9.3.2.3. RPC_Iface RW</H4
><P
></P
><DIV
@@ -5375,8 +5290,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1704"
->9.3.2.4. RPC_ReqBind RW</A
-></H4
+></A
+>9.3.2.4. RPC_ReqBind RW</H4
><P
>the remainder of the packet after the header if "type" was Bind in the response header, "type" should be BindAck</P
><P
@@ -5447,8 +5362,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1744"
->9.3.2.5. RPC_Address RW</A
-></H4
+></A
+>9.3.2.5. RPC_Address RW</H4
><P
></P
><DIV
@@ -5475,8 +5390,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1755"
->9.3.2.6. RPC_ResBind RW</A
-></H4
+></A
+>9.3.2.6. RPC_ResBind RW</H4
><P
>the response to place after the header in the reply packet</P
><P
@@ -5553,8 +5468,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1799"
->9.3.2.7. RPC_ReqNorm RW</A
-></H4
+></A
+>9.3.2.7. RPC_ReqNorm RW</H4
><P
>the remainder of the packet after the header for every other other request</P
><P
@@ -5595,8 +5510,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1819"
->9.3.2.8. RPC_ResNorm RW</A
-></H4
+></A
+>9.3.2.8. RPC_ResNorm RW</H4
><P
></P
><DIV
@@ -5642,8 +5557,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN1842"
->9.3.3. Tail</A
-></H3
+></A
+>9.3.3. Tail</H3
><P
>The end of each of the NTLSA and NETLOGON named pipes ends with:</P
><P
@@ -5672,8 +5587,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN1854"
->9.3.4. RPC Bind / Bind Ack</A
-></H3
+></A
+>9.3.4. RPC Bind / Bind Ack</H3
><P
>RPC Binds are the process of associating an RPC pipe (e.g \PIPE\lsarpc)
with a "transfer syntax" (see RPC_Iface structure). The purpose for doing
@@ -5802,8 +5717,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN1898"
->9.3.5. NTLSA Transact Named Pipe</A
-></H3
+></A
+>9.3.5. NTLSA Transact Named Pipe</H3
><P
>The sequence of actions taken on this pipe are:</P
><P
@@ -5901,8 +5816,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN1939"
->9.3.6. LSA Open Policy</A
-></H3
+></A
+>9.3.6. LSA Open Policy</H3
><P
><SPAN
CLASS="emphasis"
@@ -5917,8 +5832,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1943"
->9.3.6.1. Request</A
-></H4
+></A
+>9.3.6.1. Request</H4
><P
></P
><DIV
@@ -5957,8 +5872,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1962"
->9.3.6.2. Response</A
-></H4
+></A
+>9.3.6.2. Response</H4
><P
></P
><DIV
@@ -5986,8 +5901,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN1973"
->9.3.7. LSA Query Info Policy</A
-></H3
+></A
+>9.3.7. LSA Query Info Policy</H3
><P
><SPAN
CLASS="emphasis"
@@ -6002,8 +5917,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1977"
->9.3.7.1. Request</A
-></H4
+></A
+>9.3.7.1. Request</H4
><P
></P
><DIV
@@ -6030,8 +5945,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN1988"
->9.3.7.2. Response</A
-></H4
+></A
+>9.3.7.2. Response</H4
><P
></P
><DIV
@@ -6071,16 +5986,16 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2001"
->9.3.8. LSA Enumerate Trusted Domains</A
-></H3
+></A
+>9.3.8. LSA Enumerate Trusted Domains</H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN2003"
->9.3.8.1. Request</A
-></H4
+></A
+>9.3.8.1. Request</H4
><P
>no extra data</P
></DIV
@@ -6090,8 +6005,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2006"
->9.3.8.2. Response</A
-></H4
+></A
+>9.3.8.2. Response</H4
><P
></P
><DIV
@@ -6131,16 +6046,16 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2025"
->9.3.9. LSA Open Secret</A
-></H3
+></A
+>9.3.9. LSA Open Secret</H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN2027"
->9.3.9.1. Request</A
-></H4
+></A
+>9.3.9.1. Request</H4
><P
>no extra data</P
></DIV
@@ -6150,8 +6065,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2030"
->9.3.9.2. Response</A
-></H4
+></A
+>9.3.9.2. Response</H4
><P
></P
><DIV
@@ -6199,16 +6114,16 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2054"
->9.3.10. LSA Close</A
-></H3
+></A
+>9.3.10. LSA Close</H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN2056"
->9.3.10.1. Request</A
-></H4
+></A
+>9.3.10.1. Request</H4
><P
></P
><DIV
@@ -6229,8 +6144,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2063"
->9.3.10.2. Response</A
-></H4
+></A
+>9.3.10.2. Response</H4
><P
></P
><DIV
@@ -6254,8 +6169,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2071"
->9.3.11. LSA Lookup SIDS</A
-></H3
+></A
+>9.3.11. LSA Lookup SIDS</H3
><P
><SPAN
CLASS="emphasis"
@@ -6270,8 +6185,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2075"
->9.3.11.1. Request</A
-></H4
+></A
+>9.3.11.1. Request</H4
><P
></P
><DIV
@@ -6322,8 +6237,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2102"
->9.3.11.2. Response</A
-></H4
+></A
+>9.3.11.2. Response</H4
><P
></P
><DIV
@@ -6377,8 +6292,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2130"
->9.3.12. LSA Lookup Names</A
-></H3
+></A
+>9.3.12. LSA Lookup Names</H3
><P
><SPAN
CLASS="emphasis"
@@ -6393,8 +6308,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2134"
->9.3.12.1. Request</A
-></H4
+></A
+>9.3.12.1. Request</H4
><P
></P
><DIV
@@ -6451,8 +6366,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2165"
->9.3.12.2. Response</A
-></H4
+></A
+>9.3.12.2. Response</H4
><P
></P
><DIV
@@ -6507,8 +6422,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2193"
->9.4. NETLOGON rpc Transact Named Pipe</A
-></H2
+></A
+>9.4. NETLOGON rpc Transact Named Pipe</H2
><P
>The sequence of actions taken on this pipe are:</P
><P
@@ -6607,8 +6522,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2232"
->9.4.1. LSA Request Challenge</A
-></H3
+></A
+>9.4.1. LSA Request Challenge</H3
><P
><SPAN
CLASS="emphasis"
@@ -6639,8 +6554,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2240"
->9.4.1.1. Request</A
-></H4
+></A
+>9.4.1.1. Request</H4
><P
></P
><DIV
@@ -6679,8 +6594,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2259"
->9.4.1.2. Response</A
-></H4
+></A
+>9.4.1.2. Response</H4
><P
></P
><DIV
@@ -6704,8 +6619,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2267"
->9.4.2. LSA Authenticate 2</A
-></H3
+></A
+>9.4.2. LSA Authenticate 2</H3
><P
><SPAN
CLASS="emphasis"
@@ -6736,8 +6651,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2275"
->9.4.2.1. Request</A
-></H4
+></A
+>9.4.2.1. Request</H4
><P
></P
><DIV
@@ -6776,8 +6691,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2294"
->9.4.2.2. Response</A
-></H4
+></A
+>9.4.2.2. Response</H4
><P
></P
><DIV
@@ -6807,8 +6722,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2306"
->9.4.3. LSA Server Password Set</A
-></H3
+></A
+>9.4.3. LSA Server Password Set</H3
><P
><SPAN
CLASS="emphasis"
@@ -6847,8 +6762,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2316"
->9.4.3.1. Request</A
-></H4
+></A
+>9.4.3.1. Request</H4
><P
></P
><DIV
@@ -6875,8 +6790,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2327"
->9.4.3.2. Response</A
-></H4
+></A
+>9.4.3.2. Response</H4
><P
></P
><DIV
@@ -6900,8 +6815,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2335"
->9.4.4. LSA SAM Logon</A
-></H3
+></A
+>9.4.4. LSA SAM Logon</H3
><P
><SPAN
CLASS="emphasis"
@@ -6917,8 +6832,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2339"
->9.4.4.1. Request</A
-></H4
+></A
+>9.4.4.1. Request</H4
><P
></P
><DIV
@@ -6939,8 +6854,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2346"
->9.4.4.2. Response</A
-></H4
+></A
+>9.4.4.2. Response</H4
><P
></P
><DIV
@@ -6991,8 +6906,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2359"
->9.4.5. LSA SAM Logoff</A
-></H3
+></A
+>9.4.5. LSA SAM Logoff</H3
><P
><SPAN
CLASS="emphasis"
@@ -7008,8 +6923,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2363"
->9.4.5.1. Request</A
-></H4
+></A
+>9.4.5.1. Request</H4
><P
></P
><DIV
@@ -7030,8 +6945,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2370"
->9.4.5.2. Response</A
-></H4
+></A
+>9.4.5.2. Response</H4
><P
></P
><DIV
@@ -7062,8 +6977,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2382"
->9.5. \\MAILSLOT\NET\NTLOGON</A
-></H2
+></A
+>9.5. \\MAILSLOT\NET\NTLOGON</H2
><P
><SPAN
CLASS="emphasis"
@@ -7080,8 +6995,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2386"
->9.5.1. Query for PDC</A
-></H3
+></A
+>9.5.1. Query for PDC</H3
><P
><SPAN
CLASS="emphasis"
@@ -7096,8 +7011,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2390"
->9.5.1.1. Request</A
-></H4
+></A
+>9.5.1.1. Request</H4
><P
></P
><DIV
@@ -7160,8 +7075,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2425"
->9.5.1.2. Response</A
-></H4
+></A
+>9.5.1.2. Response</H4
><P
></P
><DIV
@@ -7225,8 +7140,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2460"
->9.5.2. SAM Logon</A
-></H3
+></A
+>9.5.2. SAM Logon</H3
><P
><SPAN
CLASS="emphasis"
@@ -7257,8 +7172,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2468"
->9.5.2.1. Request</A
-></H4
+></A
+>9.5.2.1. Request</H4
><P
></P
><DIV
@@ -7345,8 +7260,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2519"
->9.5.2.2. Response</A
-></H4
+></A
+>9.5.2.2. Response</H4
><P
></P
><DIV
@@ -7405,8 +7320,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2550"
->9.6. SRVSVC Transact Named Pipe</A
-></H2
+></A
+>9.6. SRVSVC Transact Named Pipe</H2
><P
>Defines for this pipe, identifying the query are:</P
><P
@@ -7434,8 +7349,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2562"
->9.6.1. Net Share Enum</A
-></H3
+></A
+>9.6.1. Net Share Enum</H3
><P
><SPAN
CLASS="emphasis"
@@ -7458,8 +7373,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2568"
->9.6.1.1. Request</A
-></H4
+></A
+>9.6.1.1. Request</H4
><P
></P
><DIV
@@ -7522,8 +7437,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2603"
->9.6.1.2. Response</A
-></H4
+></A
+>9.6.1.2. Response</H4
><P
></P
><DIV
@@ -7565,8 +7480,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2623"
->9.6.2. Net Server Get Info</A
-></H3
+></A
+>9.6.2. Net Server Get Info</H3
><P
><SPAN
CLASS="emphasis"
@@ -7581,8 +7496,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2627"
->9.6.2.1. Request</A
-></H4
+></A
+>9.6.2.1. Request</H4
><P
></P
><DIV
@@ -7609,8 +7524,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2638"
->9.6.2.2. Response</A
-></H4
+></A
+>9.6.2.2. Response</H4
><P
></P
><DIV
@@ -7647,16 +7562,16 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2654"
->9.7. Cryptographic side of NT Domain Authentication</A
-></H2
+></A
+>9.7. Cryptographic side of NT Domain Authentication</H2
><DIV
CLASS="SECT2"
><H3
CLASS="SECT2"
><A
NAME="AEN2656"
->9.7.1. Definitions</A
-></H3
+></A
+>9.7.1. Definitions</H3
><P
></P
><DIV
@@ -7732,50 +7647,35 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2699"
->9.7.2. Protocol</A
-></H3
-><PRE
-CLASS="PROGRAMLISTING"
->C-&#62;S ReqChal,Cc
-S-&#62;C Cs</PRE
-><PRE
-CLASS="PROGRAMLISTING"
->C &#38; S compute session key Ks = E(PW[9..15],E(PW[0..6],Add(Cc,Cs)))</PRE
-><PRE
-CLASS="PROGRAMLISTING"
->C: Rc = Cred(Ks,Cc)
-C-&#62;S Authenticate,Rc
-S: Rs = Cred(Ks,Cs), assert(Rc == Cred(Ks,Cc))
-S-&#62;C Rs
-C: assert(Rs == Cred(Ks,Cs))</PRE
+></A
+>9.7.2. Protocol</H3
+><P
+>C-&#62;S ReqChal,Cc S-&#62;C Cs</P
+><P
+>C &#38; S compute session key Ks = E(PW[9..15],E(PW[0..6],Add(Cc,Cs)))</P
+><P
+>C: Rc = Cred(Ks,Cc) C-&#62;S Authenticate,Rc S: Rs = Cred(Ks,Cs),
+assert(Rc == Cred(Ks,Cc)) S-&#62;C Rs C: assert(Rs == Cred(Ks,Cs))</P
><P
>On joining the domain the client will optionally attempt to change its
password and the domain controller may refuse to update it depending
on registry settings. This will also occur weekly afterwards.</P
-><PRE
-CLASS="PROGRAMLISTING"
->C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc)
-C-&#62;S ServerPasswordSet,Rc',Tc,arc4(Ks[0..7,16],lmowf(randompassword())
-C: Rc = Cred(Ks,Rc+Tc+1)
-S: assert(Rc' == Cred(Ks,Rc+Tc)), Ts = Time()
-S: Rs' = Cred(Ks,Rs+Tc+1)
-S-&#62;C Rs',Ts
-C: assert(Rs' == Cred(Ks,Rs+Tc+1))
-S: Rs = Rs'</PRE
+><P
+>C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C-&#62;S ServerPasswordSet,Rc',Tc,
+arc4(Ks[0..7,16],lmowf(randompassword()) C: Rc = Cred(Ks,Rc+Tc+1) S:
+assert(Rc' == Cred(Ks,Rc+Tc)), Ts = Time() S: Rs' = Cred(Ks,Rs+Tc+1)
+S-&#62;C Rs',Ts C: assert(Rs' == Cred(Ks,Rs+Tc+1)) S: Rs = Rs'</P
><P
>User: U with password P wishes to login to the domain (incidental data
such as workstation and domain omitted)</P
-><PRE
-CLASS="PROGRAMLISTING"
->C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc)
-C-&#62;S NetLogonSamLogon,Rc',Tc,U,arc4(Ks[0..7,16],16,ntowf(P),16), arc4(Ks[0..7,16],16,lmowf(P),16)
-S: assert(Rc' == Cred(Ks,Rc+Tc)) assert(passwords match those in SAM)
-S: Ts = Time()</PRE
-><PRE
-CLASS="PROGRAMLISTING"
->S-&#62;C Cred(Ks,Cred(Ks,Rc+Tc+1)),userinfo(logon script,UID,SIDs,etc)
-C: assert(Rs == Cred(Ks,Cred(Rc+Tc+1))
-C: Rc = Cred(Ks,Rc+Tc+1)</PRE
+><P
+>C: Tc = Time(), Rc' = Cred(Ks,Rc+Tc) C-&#62;S NetLogonSamLogon,Rc',Tc,U,
+arc4(Ks[0..7,16],16,ntowf(P),16), arc4(Ks[0..7,16],16,lmowf(P),16) S:
+assert(Rc' == Cred(Ks,Rc+Tc)) assert(passwords match those in SAM) S:
+Ts = Time()</P
+><P
+>S-&#62;C Cred(Ks,Cred(Ks,Rc+Tc+1)),userinfo(logon script,UID,SIDs,etc) C:
+assert(Rs == Cred(Ks,Cred(Rc+Tc+1)) C: Rc = Cred(Ks,Rc+Tc+1)</P
></DIV
><DIV
CLASS="SECT2"
@@ -7783,8 +7683,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2709"
->9.7.3. Comments</A
-></H3
+></A
+>9.7.3. Comments</H3
><P
>On first joining the domain the session key could be computed by
anyone listening in on the network as the machine password has a well
@@ -7814,8 +7714,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2716"
->9.8. SIDs and RIDs</A
-></H2
+></A
+>9.8. SIDs and RIDs</H2
><P
>SIDs and RIDs are well documented elsewhere.</P
><P
@@ -7846,16 +7746,16 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2724"
->9.8.1. Well-known SIDs</A
-></H3
+></A
+>9.8.1. Well-known SIDs</H3
><DIV
CLASS="SECT3"
><H4
CLASS="SECT3"
><A
NAME="AEN2726"
->9.8.1.1. Universal well-known SIDs</A
-></H4
+></A
+>9.8.1.1. Universal well-known SIDs</H4
><P
></P
><DIV
@@ -7918,8 +7818,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2761"
->9.8.1.2. NT well-known SIDs</A
-></H4
+></A
+>9.8.1.2. NT well-known SIDs</H4
><P
></P
><DIV
@@ -8007,8 +7907,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN2812"
->9.8.2. Well-known RIDS</A
-></H3
+></A
+>9.8.2. Well-known RIDS</H3
><P
>A RID is a sub-authority value, as part of either a SID, or in the case
of Group RIDs, part of the DOM_GID structure, in the USER_INFO_1
@@ -8019,8 +7919,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2815"
->9.8.2.1. Well-known RID users</A
-></H4
+></A
+>9.8.2.1. Well-known RID users</H4
><P
><B
>Groupname: </B
@@ -8052,8 +7952,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2829"
->9.8.2.2. Well-known RID groups</A
-></H4
+></A
+>9.8.2.2. Well-known RID groups</H4
><P
><B
>Groupname: </B
@@ -8097,8 +7997,8 @@ CLASS="SECT3"
CLASS="SECT3"
><A
NAME="AEN2847"
->9.8.2.3. Well-known RID aliases</A
-></H4
+></A
+>9.8.2.3. Well-known RID aliases</H4
><P
><B
>Groupname: </B
@@ -8224,8 +8124,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2896"
->10.1. Abstract</A
-></H2
+></A
+>10.1. Abstract</H2
><P
>The purpose of this document is to provide some insight into
Samba's printing functionality and also to describe the semantics
@@ -8237,13 +8137,13 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2899"
->10.2. Printing Interface to Various Back ends</A
-></H2
+></A
+>10.2. Printing Interface to Various Back ends</H2
><P
>Samba uses a table of function pointers to seven functions. The
-function prototypes are defined in the <VAR
+function prototypes are defined in the <TT
CLASS="VARNAME"
->printif</VAR
+>printif</TT
> structure declared
in <TT
CLASS="FILENAME"
@@ -8305,8 +8205,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2925"
->10.3. Print Queue TDB's</A
-></H2
+></A
+>10.3. Print Queue TDB's</H2
><P
>Samba provides periodic caching of the output from the "lpq command"
for performance reasons. This cache time is configurable in seconds.
@@ -8355,7 +8255,7 @@ struct printjob {
for the UNIX job id returned from the "lpq command" and a Windows job
ID (32-bit bounded by PRINT_MAX_JOBID). When a print job is returned
by the "lpq command" that does not match an existing job in the queue's
-TDB, a 32-bit job ID above the &#60;*vance doesn't know what word is missing here*&#62; is generating by adding UNIX_JOB_START to
+TDB, a 32-bit job ID above the &lt;*vance doesn't know what word is missing here*&gt; is generating by adding UNIX_JOB_START to
the id reported by lpq.</P
><P
>In order to match a 32-bit Windows jobid onto a 16-bit lanman print job
@@ -8375,12 +8275,14 @@ TYPE="1"
><P
>Check to see if another smbd is currently in
the process of updating the queue contents by checking the pid
- stored in <CODE
+ stored in <TT
CLASS="CONSTANT"
->LOCK/<VAR
+>LOCK/<TT
CLASS="REPLACEABLE"
->printer_name</VAR
-></CODE
+><I
+>printer_name</I
+></TT
+></TT
>.
If so, then do not update the TDB.</P
></LI
@@ -8452,8 +8354,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2959"
->10.4. ChangeID and Client Caching of Printer Information</A
-></H2
+></A
+>10.4. ChangeID &#38; Client Caching of Printer Information</H2
><P
>[To be filled in later]</P
></DIV
@@ -8463,8 +8365,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN2962"
->10.5. Windows NT/2K Printer Change Notify</A
-></H2
+></A
+>10.5. Windows NT/2K Printer Change Notify</H2
><P
>When working with Windows NT+ clients, it is possible for a
print server to use RPC to send asynchronous change notification
@@ -8534,7 +8436,7 @@ C: Send a RFFPCN request with the previously obtained
to monitor, or (b) a PRINTER_NOTIFY_OPTIONS structure
containing the event information to monitor. The windows
spooler has only been observed to use (b).
-S: The &#60;* another missing word*&#62; opens a new TCP session to the client (thus requiring
+S: The &lt;* another missing word*&gt; opens a new TCP session to the client (thus requiring
all print clients to be CIFS servers as well) and sends
a ReplyOpenPrinter() request to the client.
C: The client responds with a printer handle that can be used to
@@ -8612,9 +8514,9 @@ information</P
></LI
></UL
><P
->A <VAR
+>A <TT
CLASS="VARNAME"
->SPOOL_NOTIFY_INFO</VAR
+>SPOOL_NOTIFY_INFO</TT
> contains:</P
><P
></P
@@ -8631,9 +8533,9 @@ in the SPOOL_NOTIFY_INFO_DATA array</P
></LI
></UL
><P
->The <VAR
+>The <TT
CLASS="VARNAME"
->SPOOL_NOTIFY_INFO_DATA</VAR
+>SPOOL_NOTIFY_INFO_DATA</TT
> entries contain:</P
><P
></P
@@ -8689,8 +8591,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3033"
->11.1. WINS Failover</A
-></H2
+></A
+>11.1. WINS Failover</H2
><P
>The current Samba codebase possesses the capability to use groups of WINS
servers that share a common namespace for NetBIOS name registration and
@@ -8699,7 +8601,7 @@ resolution. The formal parameter syntax is</P
><PRE
CLASS="PROGRAMLISTING"
> WINS_SERVER_PARAM = SERVER [ SEPARATOR SERVER_LIST ]
- WINS_SERVER_PARAM = "wins server"
+ WINS_SERVER_PARAM = &quot;wins server&quot;
SERVER = ADDR[:TAG]
ADDR = ip_addr | fqdn
TAG = string
@@ -8716,7 +8618,7 @@ CLASS="PROGRAMLISTING"
></P
><P
>In the event that no TAG is defined in for a SERVER in the list, smbd assigns a default
-TAG of "*". A TAG is used to group servers of a shared NetBIOS namespace together. Upon
+TAG of &quot;*&quot;. A TAG is used to group servers of a shared NetBIOS namespace together. Upon
startup, nmbd will attempt to register the netbios name value with one server in each
tagged group.</P
><P
@@ -8730,7 +8632,7 @@ CLASS="PROGRAMLISTING"
></P
><P
>Using this configuration, nmbd would attempt to register the server's NetBIOS name
-with one WINS server in each group. Because the "eth0" group has two servers, the
+with one WINS server in each group. Because the &quot;eth0&quot; group has two servers, the
second server would only be used when a registration (or resolution) request to
the first server in that group timed out.</P
><P
@@ -8757,8 +8659,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3054"
->12.1. Security in the 'new SAM'</A
-></H2
+></A
+>12.1. Security in the 'new SAM'</H2
><P
>One of the biggest problems with passdb is it's implementation of
'security'. Access control is on a 'are you root at the moment' basis,
@@ -8774,7 +8676,8 @@ accessed.</P
>For example, when you call </P
><PRE
CLASS="PROGRAMLISTING"
->NTSTATUS sam_get_account_by_name(const SAM_CONTEXT *context, const
+>&#60;
+NTSTATUS sam_get_account_by_name(const SAM_CONTEXT *context, const
NT_USER_TOKEN *access_token, uint32 access_desired, const char *domain,
const char *name, SAM_ACCOUNT_HANDLE **account)</PRE
><P
@@ -8831,8 +8734,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3071"
->12.2. Standalone from UNIX</A
-></H2
+></A
+>12.2. Standalone from UNIX</H2
><P
>One of the primary tenants of the 'new SAM' is that it would not attempt
to deal with 'what unix id for that'. This would be left to the 'SMS'
@@ -8850,8 +8753,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3075"
->12.3. Handles and Races in the new SAM</A
-></H2
+></A
+>12.3. Handles and Races in the new SAM</H2
><P
>One of the things that the 'new SAM' work has tried to face is both
compatibility with existing code, and a closer alignment to the SAMR
@@ -8893,16 +8796,16 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3086"
->12.4. Layers</A
-></H2
+></A
+>12.4. Layers</H2
><DIV
CLASS="SECT2"
><H3
CLASS="SECT2"
><A
NAME="AEN3088"
->12.4.1. Application</A
-></H3
+></A
+>12.4.1. Application</H3
><P
>This is where smbd, samtest and whatever end-user replacement we have
for pdbedit sits. They use only the SAM interface, and do not get
@@ -8914,8 +8817,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN3091"
->12.4.2. SAM Interface</A
-></H3
+></A
+>12.4.2. SAM Interface</H3
><P
>This level 'owns' the various handle structures, the get/set routines on
those structures and provides the public interface. The application
@@ -8934,8 +8837,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN3095"
->12.4.3. SAM Modules</A
-></H3
+></A
+>12.4.3. SAM Modules</H3
><P
>These do not communicate with the application directly, only by setting
values in the handles, and receiving requests from the interface. These
@@ -8952,16 +8855,16 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3098"
->12.5. SAM Modules</A
-></H2
+></A
+>12.5. SAM Modules</H2
><DIV
CLASS="SECT2"
><H3
CLASS="SECT2"
><A
NAME="AEN3100"
->12.5.1. Special Module: sam_passdb</A
-></H3
+></A
+>12.5.1. Special Module: sam_passdb</H3
><P
>In order for there to be a smooth transition, kai is writing a module
that reads existing passdb backends, and translates them into SAM
@@ -8975,8 +8878,8 @@ CLASS="SECT2"
CLASS="SECT2"
><A
NAME="AEN3103"
->12.5.2. sam_ads</A
-></H3
+></A
+>12.5.2. sam_ads</H3
><P
>This is the first of the SAM modules to be committed to the tree -
mainly because I needed to coordinate work with metze (who authored most
@@ -8997,8 +8900,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3107"
->12.6. Memory Management</A
-></H2
+></A
+>12.6. Memory Management</H2
><P
>
The 'new SAM' development effort also concerned itself with getting a
@@ -9053,8 +8956,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3121"
->12.7. Testing</A
-></H2
+></A
+>12.7. Testing</H2
><P
>Testing is vital in any piece of software, and Samba is certainly no
exception. In designing this new subsystem, we have taken care to ensure
@@ -9073,9 +8976,9 @@ it particularly valuable.</P
><P
>Example useage:</P
><P
-><SAMP
+><TT
CLASS="PROMPT"
->$</SAMP
+>$</TT
> <B
CLASS="COMMAND"
>bin/samtest</B
@@ -9111,8 +9014,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3147"
->13.1. Introduction</A
-></H2
+></A
+>13.1. Introduction</H2
><P
>With the development of LanManager and Windows NT
compatible password encryption for Samba, it is now able
@@ -9130,8 +9033,8 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3151"
->13.2. How does it work?</A
-></H2
+></A
+>13.2. How does it work?</H2
><P
>LanManager encryption is somewhat similar to UNIX
password encryption. The server uses a file containing a
@@ -9195,11 +9098,11 @@ CLASS="SECT1"
CLASS="SECT1"
><A
NAME="AEN3162"
+></A
>13.3. <A
NAME="SMBPASSWDFILEFORMAT"
></A
->&#62;The smbpasswd file</A
-></H2
+>The smbpasswd file</H2
><P
>In order for Samba to participate in the above protocol
it must be able to look up the 16 byte hashed values given a user name.
@@ -9228,26 +9131,30 @@ CLASS="FILENAME"
CLASS="FILENAME"
>/etc/passwd
</TT
-> file use the following command:</P
+> file use the following command :</P
><P
-><SAMP
+><TT
CLASS="PROMPT"
->$ </SAMP
-><KBD
+>$ </TT
+><TT
CLASS="USERINPUT"
+><B
>cat /etc/passwd | mksmbpasswd.sh
- &#62; /usr/local/samba/private/smbpasswd</KBD
+ &gt; /usr/local/samba/private/smbpasswd</B
+></TT
></P
><P
>If you are running on a system that uses NIS, use</P
><P
-><SAMP
+><TT
CLASS="PROMPT"
->$ </SAMP
-><KBD
+>$ </TT
+><TT
CLASS="USERINPUT"
+><B
>ypcat passwd | mksmbpasswd.sh
- &#62; /usr/local/samba/private/smbpasswd</KBD
+ &gt; /usr/local/samba/private/smbpasswd</B
+></TT
></P
><P
>The <B
@@ -9287,27 +9194,37 @@ CLASS="COMMAND"
><PRE
CLASS="PROGRAMLISTING"
>username:uid:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:
- [Account type]:LCT-&#60;last-change-time&#62;:Long name
+ [Account type]:LCT-&lt;last-change-time&gt;:Long name
</PRE
></P
><P
->Although only the <VAR
+>Although only the <TT
CLASS="REPLACEABLE"
->username</VAR
+><I
+>username</I
+></TT
>,
- <VAR
+ <TT
CLASS="REPLACEABLE"
->uid</VAR
->, <VAR
+><I
+>uid</I
+></TT
+>, <TT
CLASS="REPLACEABLE"
-> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</VAR
+><I
+> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</I
+></TT
>,
- [<VAR
+ [<TT
CLASS="REPLACEABLE"
->Account type</VAR
->] and <VAR
+><I
+>Account type</I
+></TT
+>] and <TT
CLASS="REPLACEABLE"
-> last-change-time</VAR
+><I
+> last-change-time</I
+></TT
> sections are significant
and are looked at in the Samba code.</P
><P
@@ -9332,9 +9249,9 @@ CLASS="EMPHASIS"
><P
>To set a user to have no password (not recommended), edit the file
using vi, and replace the first 11 characters with the ascii text
- <CODE
+ <TT
CLASS="CONSTANT"
->"NO PASSWORD"</CODE
+>"NO PASSWORD"</TT
> (minus the quotes).</P
><P
>For example, to clear the password for user bob, his smbpasswd file
@@ -9385,374 +9302,6 @@ CLASS="FILENAME"
> file.</P
></DIV
></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="MODULES"
-></A
->Chapter 14. Modules</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3225"
->14.1. Advantages</A
-></H2
-><P
->The new modules system has the following advantages:</P
-><P
-></P
-><TABLE
-BORDER="0"
-><TBODY
-><TR
-><TD
->Transparent loading of static and shared modules (no need
-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
-></TBODY
-></TABLE
-><P
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3234"
->14.2. Loading modules</A
-></H2
-><P
->Some subsystems in samba use different backends. These backends can be
-either statically linked in to samba or available as a plugin. A subsystem
-should have a function that allows a module to register itself. For example,
-the passdb subsystem has: </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->BOOL smb_register_passdb(const char *name, pdb_init_function init, int version);</PRE
-></P
-><P
->This function will be called by the initialisation function of the module to
-register itself. </P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3240"
->14.2.1. Static modules</A
-></H3
-><P
->The modules system compiles a list of initialisation functions for the
-static modules of each subsystem. This is a define. For example,
-it is here currently (from <TT
-CLASS="FILENAME"
->include/config.h</TT
->): </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->/* Static init functions */
-#define static_init_pdb { pdb_mysql_init(); pdb_ldap_init(); pdb_smbpasswd_init(); pdb_tdbsam_init(); pdb_guest_init();}</PRE
-></P
-><P
->These functions should be called before the subsystem is used. That
-should be done when the subsystem is initialised or first used. </P
-></DIV
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3247"
->14.2.2. Shared modules</A
-></H3
-><P
->If a subsystem needs a certain backend, it should check if it has
-already been registered. If the backend hasn't been registered already,
-the subsystem should call smb_probe_module(char *subsystem, char *backend).
-This function tries to load the correct module from a certain path
-($LIBDIR/subsystem/backend.so). If the first character in 'backend'
-is a slash, smb_probe_module() tries to load the module from the
-absolute path specified in 'backend'.</P
-><P
->After smb_probe_module() has been executed, the subsystem
-should check again if the module has been registered. </P
-></DIV
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3251"
->14.3. Writing modules</A
-></H2
-><P
->Each module has an initialisation function. For modules that are
-included with samba this name is '<VAR
-CLASS="REPLACEABLE"
->subsystem</VAR
->_<VAR
-CLASS="REPLACEABLE"
->backend</VAR
->_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()).
-The prototype for these functions is:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->int init_module(void);</PRE
-></P
-><P
->This function should call one or more
-registration functions. The function should return non-zero on success and zero on
-failure.</P
-><P
->For example, pdb_ldap_init() contains: </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->int pdb_ldap_init(void)
-{
- smb_register_passdb("ldapsam", pdb_init_ldapsam, PASSDB_INTERFACE_VERSION);
- smb_register_passdb("ldapsam_nua", pdb_init_ldapsam_nua, PASSDB_INTERFACE_VERSION);
- return TRUE;
-}</PRE
-></P
-><DIV
-CLASS="SECT2"
-><HR><H3
-CLASS="SECT2"
-><A
-NAME="AEN3262"
->14.3.1. Static/Shared selection in configure.in</A
-></H3
-><P
->Some macros in configure.in generate the various defines and substs that
-are necessary for the system to work correct. All modules that should
-be built by default have to be added to the variable 'default_modules'.
-For example, if ldap is found, pdb_ldap is added to this variable.</P
-><P
->On the bottom of configure.in, SMB_MODULE() should be called
-for each module and SMB_SUBSYSTEM() for each subsystem.</P
-><P
->Syntax:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->SMB_MODULE(<VAR
-CLASS="REPLACEABLE"
->subsystem</VAR
->_<VAR
-CLASS="REPLACEABLE"
->backend</VAR
->, <VAR
-CLASS="REPLACEABLE"
->object files</VAR
->, <VAR
-CLASS="REPLACEABLE"
->plugin name</VAR
->, <VAR
-CLASS="REPLACEABLE"
->subsystem name</VAR
->, <VAR
-CLASS="REPLACEABLE"
->static_action</VAR
->, <VAR
-CLASS="REPLACEABLE"
->shared_action</VAR
->)
-SMB_SUBSYSTEM(<VAR
-CLASS="REPLACEABLE"
->subsystem</VAR
->)</PRE
-></P
-><P
->Also, make sure to add the correct directives to
-<TT
-CLASS="FILENAME"
->Makefile.in</TT
->. <VAR
-CLASS="REPLACEABLE"
->@SUBSYSTEM_STATIC@</VAR
->
-will be replaced with a list of objects files of the modules that need to
-be linked in statically. <VAR
-CLASS="REPLACEABLE"
->@SUBSYSTEM_MODULES@</VAR
-> will
-be replaced with the names of the plugins to build.</P
-><P
->You must make sure all .c files that contain defines that can
-be changed by ./configure are rebuilded in the 'modules_clean' make target.
-Practically, this means all c files that contain <B
-CLASS="COMMAND"
->static_init_subsystem;</B
-> calls need to be rebuilded.</P
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="RPC-PLUGIN"
-></A
->Chapter 15. RPC Pluggable Modules</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3301"
->15.1. About</A
-></H2
-><P
->This document describes how to make use the new RPC Pluggable Modules features
-of Samba 3.0. This architecture was added to increase the maintainability of
-Samba allowing RPC Pipes to be worked on separately from the main CVS branch.
-The RPM architecture will also allow third-party vendors to add functionality
-to Samba through plug-ins.</P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3304"
->15.2. General Overview</A
-></H2
-><P
->When an RPC call is sent to smbd, smbd tries to load a shared library by the
-name <TT
-CLASS="FILENAME"
->librpc_&#60;pipename&#62;.so</TT
-> to handle the call if
-it doesn't know how to handle the call internally. For instance, LSA calls
-are handled by <TT
-CLASS="FILENAME"
->librpc_lsass.so</TT
->..
-These shared libraries should be located in the <TT
-CLASS="FILENAME"
->&#60;sambaroot&#62;/lib/rpc</TT
->. smbd then attempts to call the init_module function within
-the shared library. Check the chapter on modules for more information.</P
-><P
->In the init_module function, the library should call
-rpc_pipe_register_commands(). This function takes the following arguments:</P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->int rpc_pipe_register_commands(const char *clnt, const char *srv,
- const struct api_struct *cmds, int size);</PRE
-></P
-><P
-></P
-><DIV
-CLASS="VARIABLELIST"
-><DL
-><DT
->clnt</DT
-><DD
-><P
->the Client name of the named pipe</P
-></DD
-><DT
->srv</DT
-><DD
-><P
->the Server name of the named pipe</P
-></DD
-><DT
->cmds</DT
-><DD
-><P
->a list of api_structs that map RPC ordinal numbers to function calls</P
-></DD
-><DT
->size</DT
-><DD
-><P
->the number of api_structs contained in cmds</P
-></DD
-></DL
-></DIV
-><P
->See rpc_server/srv_reg.c and rpc_server/srv_reg_nt.c for a small example of
-how to use this library.</P
-></DIV
-></DIV
-><DIV
-CLASS="CHAPTER"
-><HR><H1
-><A
-NAME="PACKAGING"
-></A
->Chapter 16. Notes to packagers</H1
-><DIV
-CLASS="SECT1"
-><H2
-CLASS="SECT1"
-><A
-NAME="AEN3337"
->16.1. Versioning</A
-></H2
-><P
->Please, please update the version number in
-<TT
-CLASS="FILENAME"
->source/include/version.h</TT
-> to include the versioning of your package. This makes it easier to distinguish standard samba builds
-from custom-build samba builds (distributions often patch packages). For
-example, a good version would be: </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->Version 2.999+3.0.alpha21-5 for Debian</PRE
-></P
-></DIV
-><DIV
-CLASS="SECT1"
-><HR><H2
-CLASS="SECT1"
-><A
-NAME="AEN3343"
->16.2. Modules</A
-></H2
-><P
->Samba now has support for building parts of samba as plugins. This
-makes it possible to, for example, put ldap or mysql support in a seperate
-package, thus making it possible to have a normal samba package not
-depending on ldap or mysql. To build as much parts of samba
-as a plugin, run: </P
-><P
-><PRE
-CLASS="PROGRAMLISTING"
->./configure --with-shared-modules=rpc,vfs,auth,pdb,charset</PRE
-></P
-></DIV
-></DIV
></DIV
></BODY
></HTML