summaryrefslogtreecommitdiffstats
path: root/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2020-09-11 14:38:47 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2020-09-11 14:38:47 +0900
commit884c8093d63402a1ad0b502244b791e3c6782be3 (patch)
treea600d4ab0d431a2bdfe4c15b70df43c14fbd8dd0 /debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide
parent14e1aa2006796f147f3f4811fb908a6b01e79253 (diff)
downloadextra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.tar.gz
extra-dependencies-884c8093d63402a1ad0b502244b791e3c6782be3.zip
Added debian extra dependency packages.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide')
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Callbacks.html114
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Divergence.html180
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Examples.html18
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPAttrCallback.html106
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPClose.html66
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDelAttrs.html102
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDereg.html183
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPError.html223
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPEscape.html100
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindAttrs.html255
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindScopes.html110
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvTypes.html192
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvs.html282
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFree.html57
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetProperty.html66
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetRefreshInterval.html56
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPOpen.html142
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPParseSrvURL.html103
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPReg.html313
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPRegReport.html75
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSetProperty.html78
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvTypeCallback.html93
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvURLCallback.html101
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPTypes.html62
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPUnescape.html99
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Security.html87
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Syntax.html104
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/index.html96
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/openslp_security_whitepaper.html338
-rw-r--r--debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/smalllogo.jpgbin0 -> 5403 bytes
30 files changed, 3801 insertions, 0 deletions
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Callbacks.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Callbacks.html
new file mode 100644
index 00000000..ba3e0a66
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Callbacks.html
@@ -0,0 +1,114 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - Callbacks</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+Callbacks</h2>
+
+<hr WIDTH="100%">
+<h3>
+What's a callback function?</h3>
+If you are new to asynchronous programming, or have never used callback
+functions before, just think of the SLP callback functions as a pieces
+of code the you must write but never call directly.&nbsp; Yep, that's right,
+you will probably never call your callback function directly, instead,
+it will be called by the library when it is ready to report the status
+or results of an operation.&nbsp; This allows your program to do other
+things while data is being collected by the callback function.&nbsp; Callback
+functions are required for all of the major SLP APIs for more information
+see <a href="SLPReg.html">SLPReg()</a>,
+<a href="SLPDereg.html">SLPDeReg()</a>,
+<a href="SLPDelAttrs.html">SLPDelAttrs()</a>,
+<a href="SLPFindSrvs.html">SLPFindSrvs()</a>,
+<a href="SLPFindAttrs.html">SLPFindAttrs()</a>,
+and <a href="SLPFindSrvTypes.html">SLPFindSrvTypes()</a>,
+<p>Callback functions must accept the parameters that the caller (the SLP
+library) expects to pass to them.&nbsp; This is why callback function types
+are defined.&nbsp; See <a href="SLPRegReport.html">SLPRegReport()</a>,
+<a href="SLPSrvURLCallback.html">SLPSrvURLCallback()</a>,
+<a href="SLPAttrCallback.html">SLPAttrCallback()</a>.
+<h3>
+What's different about SLP callback functions?</h3>
+Callbacks are an integral part of the SLP API.&nbsp; Developers usually
+associate callbacks with asynchronous APIs, but the SLP API uses callbacks
+for both synchronous and asynchronous operations.&nbsp; Whether the callback
+is called synchronously or asynchronously, depends on the <tt><a href="SLPOpen.html#isasync">isasync</a>
+</tt>parameter in the call to <tt><a href="SLPOpen.html">SLPOpen()</a></tt>.&nbsp;
+Remember the following rules and you should not have any problems with
+your callback functions.
+<ul>
+<li>
+Callback functions are called in both synchronous and asynchronous cases.&nbsp;
+The only difference is that in a synchronous case, the initiating function
+(SLPReg(), SLPFindSrvs(), etc) will block until all results are reported
+to the callback function.</li>
+
+<li>
+The memory passed in to callback functions is owned by the library.&nbsp;
+i.e. the callback must <tt>strdup()</tt> strings before using them permanently
+because the memory passed in will be <tt>free()</tt>d by the library when
+the callback returns.</li>
+
+<li>
+<blink>Make your callback functions as efficient as possible.</blink>&nbsp;
+This is especially important when a call is made with an async <tt><a href="SLPTypes.html#SLPHandle">SLPHandle</a></tt>
+because results are not collected or collated by the library before the
+callback function is called.&nbsp; In other words,&nbsp; in async mode,
+the library will call the callback each time a reply message is received
+until the request times out.</li>
+
+<li>
+If the <tt>errcode</tt> upon entry to the callback is set to anything but
+<tt>SLP_OK</tt>,
+the rest of the parameters may be invalid.&nbsp; Check the error code first.</li>
+
+<li>
+Use the <tt>cookie</tt> parameter.&nbsp; It is the best way to get information
+to and from your callback.</li>
+</ul>
+
+<h3>
+How does OpenSLP library handle asynchronous operation?</h3>
+When an SLP library call is made with an SLPHandle that was opened in async
+mode, the library does everything it can with out blocking.&nbsp; It then
+creates a thread (hopefully a user level thread) and returns SLP_OK.&nbsp;
+The newly created thread processes the request (possibly blocking to wait
+for data to arrive from the network) and calls the callback function as
+data is received.
+<p>An important thing to remember is that <i>no collection or collation
+of results is performed by the library when a call is initiated in async
+mode. </i>This means that the callback may be called multiple times with
+the same result.&nbsp; This would happen for example if two SAs or DAs
+maintained the same registration.
+<p>Currently all the code is in libslp to allow for asynchronous operation
+except for the calls to pthread_create().&nbsp; The reason for this is
+mainly that no one has really needed asynchronous operation.&nbsp; If you
+feel like you have a good reason to use asynchronous operation then please
+send email to openslp-devel@lists.sourceforge.net.
+<h3>
+How does OpenSLP library handle synchronous operation?</h3>
+When an SLP library call is made with an SLPHandle that was opened in sync
+mode, the library will not create a thread.&nbsp; Instead, the calling
+thread will perform all processing (which may block) and report results
+to the callback function.&nbsp; When in sync mode, all of the results are
+collated to ensure no duplicates are returned.&nbsp; The API function call
+will not return until all results are finished being reported through the
+callback.
+<h3>
+Why not just have separate synchronous and asynchronous APIs?</h3>
+That would have been good choice, but for some reason, the SLP designers
+thought their way would be better.&nbsp; OpenSLP API is just an implementation
+of a standardized specification described in RFC 2614
+<h3>
+Can I see some example code?</h3>
+Yes, example code can be found in the documentation for the <a href="SLPReg.html">SLPReg()</a>,
+<a href="SLPFindSrvs.html">SLPFindSrv()</a>,
+<a href="SLPFindAttrs.html">SLPFindAttrs()</a> and <a href="SLPFindSrvTypes.html">SLPFindSrvTypes()</a>
+functions.
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Divergence.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Divergence.html
new file mode 100644
index 00000000..4cfa98d9
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Divergence.html
@@ -0,0 +1,180 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - Divergence from RFC 2614</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<h2>
+Divergence from RFC 2614</h2>
+
+<hr WIDTH="100%">
+<h3>
+SLP Service URLs are required</h3>
+SLP Service URL syntax is required for all functions that accept url strings.&nbsp;
+The following is a list of affected functions:
+<ul>
+<li>
+<tt>SLPReg()</tt></li>
+
+<li>
+<tt>SLPDeReg()</tt></li>
+
+<li>
+<tt>SLPDelAttrs()</tt></li>
+
+<li>
+<tt>SLPFindAttrs()</tt></li>
+
+<li>
+<tt>SLPParseSrvURL()</tt></li>
+
+<li>
+<tt>SLPSrvURLCallback()</tt></li>
+</ul>
+The decision to require SLP Service URL syntax was made based on in part
+the following scenario:
+<blockquote>Suppose that two calls were made to SLPReg() with&nbsp; <tt>srvurl</tt>s
+and <tt>srvtype</tt>s of "192.168.100.2","http" and "192.168.100.2","ftp".&nbsp;
+Now the developer wants to deregister one service with out deregistering
+the other.&nbsp; How can it be done?&nbsp; The SLPDeReg() call does not
+have a service type parameter so it would be impossible for the underlying
+implementation to distinguish between the two registrations.&nbsp; In attempt
+to standardize, OpenSLP expects valid Service URLS.</blockquote>
+OpenSLP requires strict Service URL syntax because a Service URL can be
+treated as a unique "database key" that identifies a registered service.&nbsp;&nbsp;
+Not requiring Service URL syntax allows for several ambiguities like the
+one mentioned above.
+<br>&nbsp;
+<h3>
+Scopelist may be the empty string ("")</h3>
+In the calls where a scope list is accepted as a parameters, RFC 2614 says
+that this parameter may not be the empty string or&nbsp; NULL.&nbsp;&nbsp;
+OpenSLP allows scope list to be NULL or the empty string.&nbsp; If the
+empty string is passed in as a scopelist, then OpenSLP will use the scopelist
+the system administrator has configured for the machine.&nbsp; This saves
+99% of all developers the time of calling SLPFindScopes() and parsing the
+result.
+<p>Scoping is almost entirely an administrative task that is only required
+for scalebility of the SLP wire protocol.&nbsp; Having to deal with and
+understand scopes will be a burdon to the large majority of programmers.&nbsp;
+Unless they are writing some sort of SLP browser, they will be very content
+to use the scope that the machine is configured to use.
+<br>&nbsp;
+<h3>
+The SLPSetProperty() is ignored</h3>
+The SLPSetProperty() and SLPGetProperty() calls are impossible implement
+in a way that would be both scalable and thread safe.&nbsp; The SLPGetProperty()
+call could never be made thread safe unless return value was a pointer
+to a buffer dynamically allocated the library and freed by the caller.
+The SLPSetProperty() call would still access with the data store in such
+a way that mutexes would be required to ensure that SLPSetProperty() and
+SLPGetProperty() were never used the same buffers at the same time.&nbsp;
+Even if a thread safe data store were devised, the SLPGetProperty() call
+would be used so frequently during internal operations of the library that
+performance might be adversely affected due to mutex bottlenecking or the
+amount of processing required to resolve the attribute name to a value.
+<br>&nbsp;
+<h3>
+NULL and empty string are acceptable parameters</h3>
+According to RFC 2614, NULL is not exceptable value for any parameter.&nbsp;
+Instead programmers are instructed to passed the empty string "".&nbsp;
+OpenSLP allows programmers to use either NULL or the empty string.&nbsp;&nbsp;
+It is very easy to deal with both NULL or empty string in the implementation,
+and allows developers to write more familiar and slightly more efficient
+code.&nbsp; There should not be any reason why the compiler should be required
+to pass a pointer to a static constant empty string when NULL will do just
+a well.&nbsp;&nbsp; This is why the vast majority of C APIs use NULL to
+indicate an ignored parameter or default value -- not the empty string
+("").
+<br>&nbsp;
+<h3>
+Incremental registrations an de-registrations</h3>
+The only reason I can think of ever wanting to expose the functionality
+of incremental registration and deregistration is to represent dynamic
+data via SLP attributes.&nbsp; I can think of a long list of reasons why
+this is a very very bad idea.&nbsp; With out doubt, it is best to instruct
+SLP developers to minimize when ever possible, the number of calls that
+ultimately generate SrvReg and SrvDereg messages.&nbsp; If dynamic data
+is to be represented, it is best do do it via a specialized protocol optimized
+for the given service.&nbsp; OpenSLP does not support incremental registrations
+and de-registrations via SLPReg() and SLPDelAttrs() because we have found
+that when developers really learn what happens "under the SLP covers" they
+are very careful *not* to call then very often.
+<p>In addition to poor usage of network resources, incremental registrations
+and de-registrations require additional code that decreases the efficiency
+of and increases the size, and complexity of API and agent implementations.
+<p>The work around for this behavior involves the following:
+<ul>
+<li>
+Design application usage of SLP such that SLP is not used to store great
+quantities of data</li>
+
+<li>
+Design application usage of SLP such that SLP is not used to store dynamic
+data</li>
+
+<li>
+If the need does arise to add or remove an attribute from an existing registration
+simply re-register the service with new attributes as "fresh" registration.</li>
+</ul>
+
+<h3>
+Addition of a very simple attribute parsing function</h3>
+The following function is secretly included with OpenSLP and has proven
+to be very useful.
+<p><tt>/*=========================================================================*/</tt>
+<br><tt>SLPError SLPParseAttrs(const char* pcAttrList,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char *pcAttrId,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+char** ppcAttrVal);</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/* Used to get individual attribute values from an attribute string
+that&nbsp;&nbsp; */</tt>
+<br><tt>/* is passed to the SLPAttrCallback&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/* pcAttrList (IN) A character buffer containing a comma separated,
+null&nbsp;&nbsp; */</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+terminated list of attribute id/value assignments, in&nbsp;&nbsp; */</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+SLP wire format; i.e.&nbsp; "(attr-id=attr-value-list)"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/* pcAttrId (IN)&nbsp;&nbsp; The string indicating which attribute
+value to return.&nbsp; */</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+MUST not be null.&nbsp; MUST not be the empty string ("").&nbsp;&nbsp;
+*/</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/* ppcAttrVal (OUT) A pointer to a pointer to the buffer to receive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+attribute value.&nbsp; The memory should be freed by a call&nbsp; */</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+to SLPFree() when no longer needed.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/* Returns: Returns SLP_PARSE_ERROR if an attribute of the specified
+id&nbsp;&nbsp;&nbsp; */</tt>
+<br><tt>/*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; was not
+found otherwise SLP_OK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>/*=========================================================================*/</tt>
+<br>&nbsp;
+<h3>
+Some .conf properties are ignored</h3>
+See the <a href="../UsersGuide/SlpConf.html">OpenSLP Users Guide</a> for
+more details
+<br>&nbsp;
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Examples.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Examples.html
new file mode 100644
index 00000000..81baa46c
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Examples.html
@@ -0,0 +1,18 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - Examples</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<h2>
+OpenSLP Example Code</h2>
+
+<h2>
+
+<hr WIDTH="100%"></h2>
+&lt; put example code here >
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPAttrCallback.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPAttrCallback.html
new file mode 100644
index 00000000..026b0a45
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPAttrCallback.html
@@ -0,0 +1,106 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPAttrCallback</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPAttrCallback</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>typedef <a href="SLPTypes.html#SLPBoolean">SLPBoolean</a> SLPAttrCallback(
+<a href="SLPTypes.html#SLPHandle">SLPHandle</a>
+<a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* attrlist,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+ <a href="SLPTypes.html#SLPError">SLPError</a> <a href="#errcode">errcode</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a> )</tt>
+<h3>
+Description</h3>
+The <tt>SLPAttrCallback</tt> type is the type of the callback function
+passed as a parameter to the <tt><a href="SLPFindAttrs.html">SLPFindAttrs()</a></tt>
+function.&nbsp; The behavior of the library is differs depending on whether
+the attribute request was by Service URL or by service type.
+<p>If the <tt><a href="SLPFindAttrs.html">SLPFindAttrs()</a></tt> function
+was called with a Service URL, then the callback is called once regardless
+of whether the handle was opened asynchronously or synchronously.&nbsp;
+The <tt>attrlist</tt> parameter will contain a comma separated list of
+attributes.
+<p>If the <tt><a href="SLPFindAttrs.html">SLPFindAttrs()</a></tt> function
+was called with a service type, then the callback called is until no more
+results are available.&nbsp; The <tt>attrlist</tt> parameter will contain
+a comma separated list of attributes. Returns will be collated to remove
+duplicates if <tt><a href="SLPFindAttrs.html">SLPFindAttrs()</a></tt> was
+called synchronously.&nbsp; If it was called asynchronously the <tt>attrlist</tt>
+may return duplicates.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> that was passed into
+the <tt>SLPFindAttrs()</tt> function.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="attrlist"></a><tt>attrlist</tt></td>
+
+<td NOSAVE>Pointer to a buffer containing a comma separated null terminated
+list of attribute id/value assignments in SLP wire format "(attr-id=attr-value-list)".&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="errcode"></a><tt>errcode</tt></td>
+
+<td NOSAVE>An error code indicating if an error occurred during the operation.&nbsp;
+The callback should check this error code before processing the parameters.&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>The same cookie that was passed as a parameter to the <tt>SLPFindAttrs()</tt>
+call</td>
+</tr>
+
+<caption ALIGN=BOTTOM>&nbsp;</caption>
+</table>
+
+<h3>
+Returns</h3>
+The callback should return <tt>SLP_TRUE</tt> if more data is desired.&nbsp;
+The callback may continue to return <tt>SLP_TRUE</tt> until it is called
+with an <tt>errcode</tt> of <tt><a href="SLPError.html#SLP_LAST_CALL">SLP_LAST_CALL</a></tt>.&nbsp;
+If no more data is requested the callback should return <tt>SLP_FALSE</tt>..&nbsp;
+Since discovery of attributes by service-type is not supported, there is
+really no reason to return anything but <tt>SLP_FALSE</tt>&nbsp;from the
+SLPAttrCallback().
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 1.0.0</td>
+
+<td NOSAVE><tt>SLPAttrCallback</tt> function is implemented as specified
+by RFC 2614</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="/Syntax.html">Syntax</a>,
+<a href="/Callbacks.html">Callbacks</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPClose.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPClose.html
new file mode 100644
index 00000000..95cfd24e
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPClose.html
@@ -0,0 +1,66 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPClose</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPClose</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt>void SLPClose(<a href="SLPTypes.html#SLPHandle">SLPHandle</a> <a href="#hslp">hslp</a>)</tt>
+<br>&nbsp;
+<h3>
+Description</h3>
+Frees all resources associated with the handle.&nbsp; If the handle was
+invalid, the functions returns silently.&nbsp; Any outstanding synchronous
+or asynchronous operations are canceled so their callback functions will
+not be called any longer.
+<p>In the OpenSLP implementation, SLPHandles are used to cache information
+that is costly to obtain (in terms of network usage and time).&nbsp;&nbsp;
+Since the RFC 2614 API does not provide function calls to for library initialization,&nbsp;
+OpenSLP keeps track of the number of SLPHandles that are open.&nbsp;&nbsp;
+Several global library data structures are initialized when the first SLPHandle
+is opened and maintained until the last SLPHandle is closed.&nbsp; Therefore,
+it is most efficient to leave SLPHandles open for as long as you will need
+them (often for the entire life of a process).&nbsp;&nbsp;&nbsp; If you
+can help it, DO NOT make a habit of opening and closing SLPHandles frequently.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a>hslp</td>
+
+<td NOSAVE>An open <tt>SLPHandle</tt> that was returned by <tt><a href="SLPOpen.html">SLPOpen()</a></tt></td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+None
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<tt><a href="SLPOpen.html">SLPOpen()</a></tt>
+<br>&nbsp;
+<br>&nbsp;
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDelAttrs.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDelAttrs.html
new file mode 100644
index 00000000..77ea46b7
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDelAttrs.html
@@ -0,0 +1,102 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPDelAttrs()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<h2>
+SLPDelAttrs</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="SLPError.html">SLPError</a> SLPDelAttrs( SLPHandle <a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#srvurl">srvurl</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* attrs,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="SLPRegReport.html">SLPRegReport</a> <a href="#callback">callback</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a> )</tt>
+<h3>
+Description</h3>
+Deletes specified attributes from a registered service.&nbsp;&nbsp; OpenSLP
+will not implement this function in the 1.0 development cycle because of
+a lack of interest and the existance of an obvious work-around replacement.&nbsp;&nbsp;&nbsp;
+Instead of calling <tt>SLPDelAttrs() </tt>developers writing to OpenSLP
+should use simply <tt><a href="SLPDereg.html">SLPDeReg()</a></tt> to de-register
+the entire service then call <tt><a href="SLPReg.html">SLPReg()</a></tt>
+to re-register the service with out the undesired attributes.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> to use for deleting
+attributes.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="srvurl"></a><tt>srvurl</tt></td>
+
+<td>The SLP Service URL of the registered service to delete attributes
+from.&nbsp; May not be the empty string.&nbsp; May not be NULL.&nbsp; Must
+conform to SLP Service URL syntax or <tt><a href="SLPError.html#INVALID_REGISTRATION">SLP_INVALID_REGISTRATION</a></tt>
+will be returned.&nbsp; See <a href="/Syntax.html">Syntax</a> for more
+information on SLP Service URL syntax.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="attrs"></a><tt>attrs</tt></td>
+
+<td>A comma separated list of attribute ids to be deleted from the registration.&nbsp;
+May not be the empty string.&nbsp; May not be NULL.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="callback"></a><tt>callback</tt></td>
+
+<td NOSAVE>The address of an <tt><a href="/SLPRegReport.html">SLPRegReport</a></tt>
+function that will be called to report the operation completion status.&nbsp;
+May not be NULL. See <a href="/Callbacks.html">Callbacks</a> for more information
+on how callbacks are used by the SLPAPI.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>Pointer to memory that gets passed to the callback code.&nbsp;
+May be NULL.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+Always returns <tt><a href="SLPError.html#SLP_NOT_IMPLEMENTED">SLP_NOT_IMPLEMENTED</a></tt>
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 1.0&nbsp;</td>
+
+<td NOSAVE>Will not be implemented in the OpenSLP 1.0 development cycle.&nbsp;
+Always returns <tt><a href="SLPError.html#SLP_NOT_IMPLEMENTED">SLP_NOT_IMPLEMENTED</a></tt></td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="/SLPReg.html">SLPReg()</a>, <a href="SLPDereg.html">SLPDeReg()</a>,
+<a href="/Syntax.html">Syntax</a>,
+<a href="/Callback.html">Callbacks</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDereg.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDereg.html
new file mode 100644
index 00000000..96084f4a
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPDereg.html
@@ -0,0 +1,183 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPDereg()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPDereg</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="/SLPError.html">SLPError</a> SLPDereg( <a href="SLPTypes.html#SLPHandle">SLPHandle</a><a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#srvurl">srvurl</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="SLPRegReport.html">SLPRegReport</a> <a href="#callback">callback</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a> )</tt>
+<h3>
+Description</h3>
+Deregisters the advertisement for URL <tt>srvurl</tt> in all scopes where
+the service is registered and all language locales. The deregistration
+is not just confined to the locale of the <tt>SLPHandle</tt>,.&nbsp; The
+API library is required to perform the operation in all scopes obtained
+through configuration.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> on which to de-register
+the service.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="srvurl"></a><tt>srvurl</tt></td>
+
+<td>The SLP Service URL to de-register.&nbsp; May not be the empty string.&nbsp;
+May not be NULL.&nbsp; Must conform to SLP Service URL syntax..&nbsp; See
+<a href="Syntax.html">Syntax</a>
+for more information on SLP Service URL syntax.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="callback"></a><tt>callback</tt></td>
+
+<td NOSAVE>The address of an <tt><a href="SLPRegReport.html">SLPRegReport</a></tt>
+function that will be called to report the operation completion status.&nbsp;
+May not be NULL. See <a href="Callbacks.html">Callbacks</a> for more information
+on how callbacks are used by the SLPAPI.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>Pointer to memory that gets passed to the callback code.&nbsp;
+May be NULL.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr NOSAVE>
+<td NOSAVE>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_INVALID_REGISTRATION</td>
+
+<td>The deregistered service url does not conform to valid service url
+syntax.&nbsp; The service url being deregistered is not registered this
+means that either it was never registered via a call to SLPReg() or that
+the registration lifetime has expired.&nbsp;&nbsp; SLP_INVALID_REGISTRATION
+is commonly returned when an attempt is made to deregister a service that
+was registered by a call to SLPReg() on a different host.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The SLP message was rejected by a remote SLP agent. The API returns
+this error only when no information was retrieved, and at least one SA
+or DA indicated a protocol error. The data supplied through the API may
+be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_ABSENT</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+the UA or SA failed to send an authenticator for requests or registrations.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_FAILED</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+a authentication on an SLP message failed.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_TIMED_OUT</td>
+
+<td>When no reply can be obtained in the time specified by the configured
+timeout interval for a unicast request, this error is returned.&nbsp; In
+other words, slpd is running, but something is wrong with it</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_INIT_FAILED</td>
+
+<td>If the network cannot initialize properly, this error is returned.
+Will also be returned if an SA or DA agent (slpd) can not be contacted.&nbsp;
+slpd must be running in order to call SLPReg() or SLPDereg().</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_ERROR</td>
+
+<td>The failure of networking during normal operations causes this error
+to be returned.&nbsp; In OpenSLP, this is the error you'll get if an underlying
+socket() call failed.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+
+<tr>
+<td>SLP_HANDLE_IN_USE</td>
+
+<td>Callback functions are not permitted to recursively call into the API
+on the same SLPHandle, either directly or indirectly. If an attempt is
+made to do so, this error is returned from the called API function.</td>
+</tr>
+</table>
+
+<p>Be aware, especially if the call is async, of error codes that may be
+passed to the SLPRegReport() callback function.
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614&nbsp;</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPReg.html">SLPReg()</a>, <a href="Syntax.html">Syntax</a>, <a href="Callbacks.html">Callbacks</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPError.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPError.html
new file mode 100644
index 00000000..736c7205
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPError.html
@@ -0,0 +1,223 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPError Codes</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPError Codes</h2>
+
+<hr WIDTH="100%">
+<p>The following is an explanation of the SLP error codes are returned
+by SLP functions:
+<br>&nbsp;
+<table BORDER WIDTH="100%" NOSAVE >
+<tr NOSAVE>
+<td NOSAVE><a NAME="SLP_LAST_CALL"></a>SLP_LAST_CALL</td>
+
+<td>1</td>
+
+<td>Passed to callback functions when the API library has no more data
+for them and therefore no further calls will
+<br>be made to the callback on the currently outstanding operation. The
+callback can use this to signal the main body of the client code that no
+more data will be forthcoming on the operation, so that the main body of
+the client code can break out of data collection loops. On the last call
+of a callback during both a synchronous and synchronous call, the error
+code parameter has value SLP_LAST_CALL, and the other parameters are all
+NULL. If no results are returned by an API operation, then only one call
+is made, with the error parameter set to SLP_LAST_CALL.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_OK"></a>SLP_OK</td>
+
+<td>0</td>
+
+<td>indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td><a NAME="LANGUAGE_NOT_SUPPORTED"></a>SLP_LANGUAGE_NOT_SUPPORTED</td>
+
+<td>-1</td>
+
+<td>No DA or SA has service advertisement or attribute information in the
+language requested, but at least one DA or SA indicated, via the LANGUAGE_NOT_SUPPORTED
+error code, that it might have information for that service in another
+language</td>
+</tr>
+
+<tr>
+<td><a NAME="PARSE_ERROR"></a>SLP_PARSE_ERROR</td>
+
+<td>-2</td>
+
+<td>The SLP message was rejected by a remote SLP agent. The API returns
+this error only when no information was retrieved, and at least one SA
+or DA indicated a protocol error. The data supplied through the API may
+be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td><a NAME="INVALID_REGISTRATION"></a>SLP_INVALID_REGISTRATION</td>
+
+<td>-3</td>
+
+<td>The API may return this error if an attempt to register a service was
+rejected by all DAs because of a malformed URL or attributes. SLP does
+not return the error if at least one DA accepted the registration.&nbsp;
+The deregistered service url does not conform to valid service url syntax.&nbsp;
+The service url being deregistered is not registered this means that either
+it was never registered via a call to SLPReg() or that the registration
+lifetime has expired.&nbsp;&nbsp; SLP_INVALID_REGISTRATION is commonly
+returned when an attempt is made to deregister a service that was registered
+by a call to SLPReg() on a different host.</td>
+</tr>
+
+<tr>
+<td><a NAME="SCOPE_NOT_SUPPORTED"></a>SLP_SCOPE_NOT_SUPPORTED</td>
+
+<td>-4</td>
+
+<td>The API returns this error if the SA has been configured with net.slp.useScopes
+value-list of scopes and the SA request did not specify one or more of
+these allowable scopes, and no others. It may be returned by a DA or SA
+if the scope included in a request is not supported by the DA or SA.&nbsp;</td>
+</tr>
+
+<tr>
+<td><a NAME="AUTHENTICATION_ABSENT"></a>SLP_AUTHENTICATION_ABSENT</td>
+
+<td>-6</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+the UA or SA failed to send an authenticator for requests or registrations
+in a protected scope.</td>
+</tr>
+
+<tr>
+<td><a NAME="AUTHENTICATION_FAILED"></a>SLP_AUTHENTICATION_FAILED</td>
+
+<td>-7</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+a authentication on an SLP message failed</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_INVALID_UPDATE"></a>SLP_INVALID_UPDATE</td>
+
+<td>-13</td>
+
+<td>An update for a non-existing registration was issued, or the update
+includes a service type or scope different than that in the initial registration,
+etc.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_REFRESH_REJECTED"></a>SLP_REFRESH_REJECTED</td>
+
+<td>-15</td>
+
+<td>The SA attempted to refresh a registration more frequently than the
+minimum refresh interval. The SA should call the appropriate API function
+to obtain the minimum refresh interval to use.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_NOT_IMPLEMENTED"></a>SLP_NOT_IMPLEMENTED</td>
+
+<td>-17</td>
+
+<td>If an unimplemented feature is used, this error is returned.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_BUFFER_OVERFLOW"></a>SLP_BUFFER_OVERFLOW</td>
+
+<td>-18</td>
+
+<td>An outgoing request overflowed the maximum network MTU size. The request
+should be reduced in size or broken into pieces and tried again.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_NETWORK_TIMED_OUT"></a>SLP_NETWORK_TIMED_OUT</td>
+
+<td>-19</td>
+
+<td>When no reply can be obtained in the time specified by the configured
+timeout interval for a unicast request, this error is returned.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_NETWORK_INIT_FAILED"></a>SLP_NETWORK_INIT_FAILED</td>
+
+<td>-20</td>
+
+<td>If the network cannot initialize properly, this error is returned.
+Will also be returned if an SA or DA agent (slpd) can not be contacted.
+See SLPReg() and SLPDeReg() for more information.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_MEMORY_ALLOC_FAILED"></a>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>-21</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_PARAMETER_BAD"></a>SLP_PARAMETER_BAD</td>
+
+<td>-22</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_NETWORK_ERROR"></a>SLP_NETWORK_ERROR</td>
+
+<td>-23</td>
+
+<td>The failure of networking during normal operations causes this error
+to be returned.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_INTERNAL_SYSTEM_ERROR"></a>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>-24</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_HANDLE_IN_USE"></a>SLP_HANDLE_IN_USE</td>
+
+<td>-25</td>
+
+<td>In the C API, callback functions are not permitted to recursively call
+into the API on the same SLPHandle, either directly or indirectly. If an
+attempt is made to do so, this error is returned from the called API function.</td>
+</tr>
+
+<tr>
+<td><a NAME="SLP_TYPE_ERROR"></a>SLP_TYPE_ERROR&nbsp;</td>
+
+<td>-26</td>
+
+<td>If the API supports type checking of registrations against service
+type templates, this error can arise if the attributes in a registration
+do not match the service type template for the service.</td>
+</tr>
+</table>
+
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPEscape.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPEscape.html
new file mode 100644
index 00000000..05f0e711
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPEscape.html
@@ -0,0 +1,100 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPEscape()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPEscape</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="/SLPError.html">SLPError</a> SLPEscape( const char* <a href="#unescaped">unescaped</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+char** <a href="#escaped">escaped</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+<a href="SLPTypes.html#SLPBoolean">SLPBoolean</a> <a href="#ist">istag</a>
+)</tt>
+<h3>
+Description</h3>
+Process the input string to escape any SLP reserved characters.&nbsp; If
+the <tt>istag</tt> parameter is SLP_TRUE then SLPEscape() will look for
+bad tag characters.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="unescaped"></a><tt>unescaped</tt></td>
+
+<td NOSAVE>Pointer to the string to be escaped</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="escaped"></a>escaped</td>
+
+<td NOSAVE>Pointer to a pointer for the dynamically allocated output string.
+The memory should be freed by a call to <a href="SLPFree.html">SLPFree()</a>
+when no longer needed.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="ist"></a>istag</td>
+
+<td NOSAVE>When SLP_TRUE the input buffer is checked for bad characters</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr>
+<td>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The API returns this error only when no information was retrieved,
+and at least one SA or DA indicated a protocol error. The data supplied
+through the API may be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+</table>
+
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.7</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614.</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPUnescape.html">SLPUnescape()</a>, <a href="SLPFree.html">SLPFree()</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindAttrs.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindAttrs.html
new file mode 100644
index 00000000..3e1d8950
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindAttrs.html
@@ -0,0 +1,255 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPFindAttrs</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPFindAttrs</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="/SLPError.html">SLPError</a> SLPFindAttrs( <a href="SLPTypes.html#SLPHandle">SLPHandle</a>
+<a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* srvurl,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#scopelist">scopelist</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* attrids,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="SLPAttrCallback.html">SLPAttrCallback</a> <a href="#callback">callback</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a>)</tt>
+<h3>
+Description</h3>
+This function returns service attributes matching the <tt>attrids</tt>
+for the indicated Service URL or service type.&nbsp;&nbsp; OpenSLP does
+not support location of attributes by service type with <tt>attrids</tt>
+containing wildcards (see status below).
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> on which to search
+for attributes the service.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="srvurlorsrvtype"></a><tt>srvurl</tt></td>
+
+<td NOSAVE>The service URL of the service to the attributes of.&nbsp; See
+<a href="Syntax.html#Service Type">Syntax</a>
+for more information SLP Service URLs.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="attrids"></a><tt>attrids</tt></td>
+
+<td>A comma separated list of attribute ids to return. Use the empty string
+("") for all attributes.&nbsp; Wildcards are not supported.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="scopelist"></a><tt>scopelist</tt></td>
+
+<td NOSAVE>A pointer to a comma separated list of scope names.&nbsp; <i>May
+be the empty string</i> if you wish to use scopes this machine is configured
+for..&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="callback"></a><tt>callback</tt></td>
+
+<td NOSAVE>The address of an <a href="SLPAttrCallback.html">SLPAttrCallback</a>
+function that will be called to report the results of the operation.&nbsp;
+May not be NULL. See <a href="Callbacks.html">Callbacks</a> for more information
+on how callbacks are used by the SLPAPI.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>Pointer to memory that gets passed to the callback code.&nbsp;
+May be NULL.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr NOSAVE>
+<td NOSAVE>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The SLP message was rejected by a remote SLP agent. The API returns
+this error only when no information was retrieved, and at least one SA
+or DA indicated a protocol error. The data supplied through the API may
+be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_ABSENT</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+the UA or SA failed to send an authenticator for requests or registrations.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_FAILED</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+a authentication on an SLP message failed.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_TIMED_OUT</td>
+
+<td>When no reply can be obtained in the time specified by the configured
+timeout interval for a unicast request, this error is returned.&nbsp; In
+other words, slpd is running, but something is wrong with it</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_INIT_FAILED</td>
+
+<td>If the network cannot initialize properly, this error is returned.
+Will also be returned if an SA or DA agent (slpd) can not be contacted.&nbsp;
+slpd must be running in order to call SLPReg() or SLPDereg().</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_ERROR</td>
+
+<td>The failure of networking during normal operations causes this error
+to be returned.&nbsp; In OpenSLP, this is the error you'll get if an underlying
+socket() call failed.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+
+<tr>
+<td>SLP_HANDLE_IN_USE</td>
+
+<td>Callback functions are not permitted to recursively call into the API
+on the same SLPHandle, either directly or indirectly. If an attempt is
+made to do so, this error is returned from the called API function.</td>
+</tr>
+</table>
+
+<p>If no service types can be found, no error is returned.&nbsp; However,
+no calls (other than the SLP_LAST_CALL) will be made to the SLPSrvTypesCallback.&nbsp;
+Be aware, especially if the call is async, of error codes that may be passed
+to the <tt>SLPAttrCallback</tt> callback function.
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.9.1</td>
+
+<td NOSAVE>Fully implemented as specified by RFC2614 except for finding
+attributes by service type or with attrids containing wildcards.&nbsp;
+These behaviors are expected to be depreciated in the next RFC 2614 revision.</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPSrvTypeCallback.html">SLPSrvTypeCallback</a>, <a href="Syntax.html">Syntax</a>,
+<a href="Callbacks.html">Callbacks</a>
+<br>&nbsp;
+<h3>
+Example Code</h3>
+
+<blockquote><tt>SLPBoolean myAttrCallback(SLPHandle hslp,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* attrlist,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+SLPError errcode,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* cookie )</tt>
+<br><tt>{</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if(errcode == SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%s\n",attrlist);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; return SLP_FALSE;</tt>
+<br><tt>}</tt>
+<br>&nbsp;
+<p><tt>int main(int argc, char* argv[])</tt>
+<br><tt>{</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPError&nbsp;&nbsp;&nbsp; result;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPHandle&nbsp;&nbsp; hslp;</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; if(SLPOpen("en",SLP_FALSE,&amp;hslp) == SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = SLPFindAttrs(hslp,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"service:myservice.x://myhost.mydomain.org"</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"", /* return all attributes */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"", /* use configured scopes */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+myAttrCallback,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+NULL);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(result != SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+printf("errorcode: %i\n",result);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result = SLPFindAttrs(hslp,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"service:myservice.x://myhost.mydomain.org"</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"attr1,attr2", /* return attr1 and attr1 only */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"", /* use configured scopes */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+myAttrCallback,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+NULL);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(result != SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+printf("errorcode: %i\n",result);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SLPClose(hslp);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<br><tt>}</tt></blockquote>
+
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindScopes.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindScopes.html
new file mode 100644
index 00000000..c5781eb6
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindScopes.html
@@ -0,0 +1,110 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPFindScopes()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPFindScopes</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="/SLPError.html">SLPError</a> SLPFindScopes( SLPHandle <a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+char** <a href="#scopelist">scopelist</a> )</tt>
+<br>&nbsp;
+<h3>
+Description</h3>
+Sets the scopelist parameter to a pointer to a comma separated list of
+all available scope values.&nbsp; The most desirable values are always
+placed first in the list.&nbsp; There is always one value, "DEFAULT", in
+the list.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>Pointer to the string to be un-escaped</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="scopelist"></a><tt>scopelist</tt></td>
+
+<td NOSAVE>Pointer to a pointer for the dynamically allocated list of scopes.&nbsp;
+The memory should be freed by a call to <tt><a href="SLPFree.html">SLPFree()</a></tt>
+when no longer needed.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr NOSAVE>
+<td NOSAVE>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_TIMED_OUT</td>
+
+<td>When no reply can be obtained in the time specified by the configured
+timeout interval for a unicast request, this error is returned.&nbsp; In
+other words, slpd is running, but something is wrong with it</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_INIT_FAILED</td>
+
+<td>If the network cannot initialize properly, this error is returned.
+Will also be returned if an SA or DA agent (slpd) can not be contacted.&nbsp;
+slpd must be running in order to call SLPReg() or SLPDereg().</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_ERROR</td>
+
+<td>The failure of networking during normal operations causes this error
+to be returned.&nbsp; In OpenSLP, this is the error you'll get if an underlying
+socket() call failed.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+</table>
+
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.8.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2608.</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="doc/html/UsersGuide/index.html">Open SLP Users Guide</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvTypes.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvTypes.html
new file mode 100644
index 00000000..9a0f8a40
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvTypes.html
@@ -0,0 +1,192 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPFindSrvTypes()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPFindSrvTypes</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="SLPError.html">SLPError</a> SLPFindSrvTypes( <a href="SLPTypes.html#SLPHandle">SLPHandle</a>
+<a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#namingauthority">namingauthority</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#scopelist">scopelist</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="SLPSrvTypeCallback.html">SLPSrvTypeCallback</a> <a href="#callback">callback</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a>)</tt>
+<h3>
+Description</h3>
+The <tt>SLPFindSrvType()</tt> function issues an SLP service type request
+for service types in the scopes indicated by the <tt>scopelist</tt>. The
+results are returned through the <tt>callback</tt> parameter. The service
+types are independent of language locale, but only for services registered
+in one of scopes and for the indicated naming authority.
+<p>If the <tt>namingauthority</tt> is "*", then results are returned for
+all naming authorities. If the naming authority is the empty string, i.e.
+"", then the default naming authority, "IANA", is used. "IANA" is not a
+valid naming authority name, and it is a <tt><a href="SLPError.html#SLP_PARAMETER_BAD">SLP_PARAMETER_BAD</a></tt>
+error to include it explicitly.
+<p>The service type names are returned with the naming authority intact.
+If the naming authority is the default (i.e. empty string) then it is omitted,
+as is the separating ".". Service type names from URLs of the service:
+scheme are returned with the "service:" prefix intact.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> on which to register
+the service.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="namingauthority"></a><tt>namingauthority</tt></td>
+
+<td NOSAVE>The naming authorities to search.&nbsp; Use "*" for all naming
+authorities and the empty string, "", for the default naming authority
+(IANA).&nbsp; See <a href="Syntax.html#Service Type">Syntax</a> for more
+information on naming authorities.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="scopelist"></a><tt>scopelist</tt></td>
+
+<td NOSAVE>A pointer to a comma separated list of scope names.&nbsp; <i>May
+be the empty string</i> if you wish to use scopes this machine is configured
+for.&nbsp; May not be NULL.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="callback"></a><tt>callback</tt></td>
+
+<td NOSAVE>The address of an <tt><a href="SLPSrvTypeCallback.html">SLPSrvTypeCallback</a></tt>
+function that will be called to report the operation completion status.&nbsp;
+May not be NULL. See <a href="Callbacks.html">Callbacks</a> for more information
+on how callbacks are used by the SLPAPI.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>Pointer to memory that gets passed to the callback code.&nbsp;
+May be NULL.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr NOSAVE>
+<td NOSAVE>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The SLP message was rejected by a remote SLP agent. The API returns
+this error only when no information was retrieved, and at least one SA
+or DA indicated a protocol error. The data supplied through the API may
+be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_ABSENT</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+the UA or SA failed to send an authenticator for requests or registrations.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_FAILED</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+a authentication on an SLP message failed.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_TIMED_OUT</td>
+
+<td>When no reply can be obtained in the time specified by the configured
+timeout interval for a unicast request, this error is returned.&nbsp; In
+other words, slpd is running, but something is wrong with it</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_INIT_FAILED</td>
+
+<td>If the network cannot initialize properly, this error is returned.&nbsp;</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_ERROR</td>
+
+<td>The failure of networking during normal operations causes this error
+to be returned.&nbsp; In OpenSLP, this is the error you'll get if an underlying
+socket() call failed.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+
+<tr>
+<td>SLP_HANDLE_IN_USE</td>
+
+<td>Callback functions are not permitted to recursively call into the API
+on the same SLPHandle, either directly or indirectly. If an attempt is
+made to do so, this error is returned from the called API function.</td>
+</tr>
+</table>
+
+<p>If no service types can be found, no error is returned.&nbsp; However,
+no calls (other than the SLP_LAST_CALL) will be made to the SLPSrvTypesCallback.&nbsp;
+Be aware, especially if the call is async, of error codes that may be passed
+to the <tt>SLPSrvTypeCallback</tt> callback function.
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.7.4</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPSrvTypeCallback.html">SLPSrvTypeCallback</a>, <a href="Syntax.html">Syntax</a>,
+<a href="Callbacks.html">Callbacks</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvs.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvs.html
new file mode 100644
index 00000000..a6f8052d
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFindSrvs.html
@@ -0,0 +1,282 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPFindSrvs()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPFindSrvs</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="SLPError.html">SLPError</a> SLPFindSrvs( <a href="SLPTypes.html#SLPHandle">SLPHandle</a>
+<a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#srvtype">srvtype</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#scopelist">scopelist</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#filter">filter</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+<a href="SLPSrvURLCallback.html">SLPSrvURLCallback</a> callback,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a>)</tt>
+<h3>
+Description</h3>
+Issue a query for services.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> on which to register
+the service.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="srvtype"></a><tt>srvtype</tt></td>
+
+<td NOSAVE>The service type string, including the authority string (if
+any) for the request.&nbsp; May not be the empty string, "". May not be
+NULL.&nbsp; See <a href="Syntax.html">Syntax</a> more information on Service
+Type syntax.&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="scopelist"></a><tt>scopelist</tt></td>
+
+<td NOSAVE>A pointer to a comma separated list of scope names.&nbsp; <i>May
+be the empty string </i>if you wish to use scopes this machine is configured
+for..&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="filter"></a><tt>filter</tt></td>
+
+<td>A query formulated of attribute pattern matching expressions in the
+form of an LDAPv3 search filter.&nbsp; Pass in&nbsp; the empty string,
+"" for all services of the requested type.&nbsp; See <a href="Syntax.html">Syntax</a>
+for more information on LDAP3 search filter syntax.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="callback"></a><tt>callback</tt></td>
+
+<td NOSAVE>The address of an <a href="SLPSrvURLCallback.html">SLPSrvURLCallback</a>
+function that will be called to report the results of the query.&nbsp;
+May not be NULL. See <a href="Callbacks.html">Callbacks</a> for more information
+on how callbacks are used by the SLPAPI.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>Pointer to memory that gets passed to the callback code.&nbsp;
+May be NULL.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr NOSAVE>
+<td NOSAVE>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The SLP message was rejected by a remote SLP agent. The API returns
+this error only when no information was retrieved, and at least one SA
+or DA indicated a protocol error. The data supplied through the API may
+be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_ABSENT</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+the UA or SA failed to send an authenticator for requests or registrations.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_FAILED</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+a authentication on an SLP message failed.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_TIMED_OUT</td>
+
+<td>When no reply can be obtained in the time specified by the configured
+timeout interval for a unicast request, this error is returned.&nbsp; In
+other words, slpd is running, but something is wrong with it</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_INIT_FAILED</td>
+
+<td>If the network cannot initialize properly, this error is returned.
+Will also be returned if an SA or DA agent (slpd) can not be contacted.&nbsp;
+slpd must be running in order to call SLPReg() or SLPDereg().</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_ERROR</td>
+
+<td>The failure of networking during normal operations causes this error
+to be returned.&nbsp; In OpenSLP, this is the error you'll get if an underlying
+socket() call failed.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+
+<tr>
+<td>SLP_HANDLE_IN_USE</td>
+
+<td>Callback functions are not permitted to recursively call into the API
+on the same SLPHandle, either directly or indirectly. If an attempt is
+made to do so, this error is returned from the called API function.</td>
+</tr>
+</table>
+
+<p>If no services can be found, no error is returned.&nbsp; However, no
+calls (other than the SLP_LAST_CALL) will be made to the SLPSrvURLCallback.&nbsp;
+Be aware, especially if the call is async, of error codes that may be passed
+to the <tt>SLPSrvURLCallback</tt> callback function.
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.9.1</td>
+
+<td NOSAVE>Implemented as specified by RFC 2614.</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="Syntax.html">Syntax</a>, <a href="Callbacks.html">Callbacks</a>
+<br>&nbsp;
+<h3>
+Example Code</h3>
+
+<blockquote><tt>#include &lt;slp.h></tt>
+<p><tt>SLPBoolean MySLPSrvURLCallback( SLPHandle hslp,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* srvurl,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned short lifetime,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+SLPError errcode,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* cookie )</tt>
+<br><tt>{</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if(errcode == SLP_OK || errcode == SLP_LAST_CALL)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Service URL&nbsp;&nbsp;&nbsp;&nbsp;
+= %s\n",srvurl);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Service Timeout
+= %i\n",lifetime);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(SLPError*)cookie =
+SLP_OK;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; else</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *(SLPError*)cookie =
+errcode;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* return SLP_TRUE because we want to be called
+again */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* if more services were found&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; return SLP_TRUE;</tt>
+<br><tt>}</tt>
+<p><tt>int main( int argc, char* argv[])</tt>
+<br><tt>{</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPError err;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPError callbackerr;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPHandle hslp;</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; err = SLPOpen("en",SLP_FALSE,&amp;hslp);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if(err != SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Error opening
+slp handle %i\n",err);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return err;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<br>&nbsp;
+<p><tt>&nbsp;&nbsp;&nbsp; err = SLPFindSrvs( hslp,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"myservice.myorg",</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+/* use configured scopes */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+/* no attr filter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+MySLPSrvURLCallback,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&amp;callbackerr );</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* err may contain an error code that occurred
+as the slp library&nbsp;&nbsp;&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* _prepared_ to make the call.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if((err != SLP_OK) || (callbackerr != SLP_OK))</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Error registering
+service with slp %i\n",err);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return err;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* callbackerr may contain an error code (that
+was assigned through */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* the callback cookie) that occurred as slp
+packets were sent on&nbsp;&nbsp;&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* the wire */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if( callbackerr != SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Error registering
+service with slp %i\n",callbackerr);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return callbackerr;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* Now that we're done using slp, close the slp
+handle */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPClose(hslp);</tt>
+<br>&nbsp;
+<p><tt>&nbsp;&nbsp;&nbsp; /* rest of program */</tt>
+<br><tt>}</tt></blockquote>
+
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFree.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFree.html
new file mode 100644
index 00000000..2136222a
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPFree.html
@@ -0,0 +1,57 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.79 [en] (X11; U; Linux 2.4.18-10smp i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPFree()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPFree</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt>void SLPFree( void* <a href="#srvurl">mem</a>)</tt>
+<h3>
+Description</h3>
+Frees memory that was returned from <tt><a href="SLPParseSrvURL.html">SLPParseSrvURL()</a></tt>,
+<tt><a href="SLPFindScopes.html">SLPFindScopes()</a></tt>,
+<tt><a href="SLPEscape.html">SLPEscape()</a></tt>,
+and <tt><a href="SLPUnescape.html">SLPUnescape()</a></tt>
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="srvurl"></a><tt>mem</tt></td>
+
+<td NOSAVE>A pointer to the memory to free</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+None
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614.</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<tt><a href="SLPParseSrvURL.html">SLPParseSrvURL()</a></tt>, <tt><a href="SLPFindScopes.html">SLPFindScopes()</a></tt>,
+<tt><a href="SLPEscape.html">SLPEscape()</a></tt>,
+<tt><a href="SLPUnescape.html">SLPUnescape()</a></tt>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetProperty.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetProperty.html
new file mode 100644
index 00000000..7c27cb9d
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetProperty.html
@@ -0,0 +1,66 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPGetProperty()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPGetProperty</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt>const char* SLPGetProperty( const char* <a href="#name">name</a>)</tt>
+<br>&nbsp;
+<h3>
+Description</h3>
+Returns the value of the corresponding SLP property name.&nbsp; The returned
+string is owned by the library and MUST NOT be freed.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="name"></a><tt>name</tt></td>
+
+<td NOSAVE>The name of a net.slp property to get.&nbsp; See <a href="/broken">OpenSLP
+Users Guide</a> for a list of supported properties</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+A very thread unsafe character pointer to a string containing the property
+value.&nbsp; If an error occurs, like the property <tt>name</tt> is not
+found, NULL is returned so don't forget to check for NULL!
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614.</td>
+</tr>
+</table>
+
+<h3>
+Notes</h3>
+For some reason the SLP API writers decided to make SLPGetProperty() and
+SLPSetProperty() calls impossible to implement in a thread safe manner.&nbsp;
+For this reason OpenSLP only allows read only access to SLP properties.&nbsp;
+Properties are read into static data structures when the process loads,
+and never changed so at least SLPGetProperty() can be called from threaded
+applications.
+<h3>
+See Also</h3>
+<a href="SLPSetProperty.html">SLPSetProperty()</a>,&nbsp; <a href="/broken">Open
+SLP Users Guide</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetRefreshInterval.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetRefreshInterval.html
new file mode 100644
index 00000000..af0d9d34
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPGetRefreshInterval.html
@@ -0,0 +1,56 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPGetRefreshInterval()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPGetRefreshInterval</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt>unsigned short SLPGetRefreshInterval()</tt>
+<h3>
+Description</h3>
+Returns the minimum refresh interval that will be accepted by all SLP agents
+on the network.
+<h3>
+Parameters</h3>
+None
+<h3>
+Returns</h3>
+A positive integer value that is the smallest value that should be passed
+as a <tt><a href="SLPReg.html#lifetime">lifetime</a></tt> to <tt><a href="SLPReg.html">SLPReg()</a></tt>.&nbsp;
+If no agents advertise a minimum refresh interval, then zero is returned.
+( Zero is not a valid value for the <tt><a href="SLPReg.html#lifetime">lifetime</a></tt>
+parameter to <a href="SLPReg.html">SLPReg()</a> .)
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.7.8</td>
+
+<td NOSAVE>Not Implemented.&nbsp; Always returns SLP_NOT_IMPLEMENTED</td>
+</tr>
+</table>
+
+<h3>
+Notes</h3>
+RFC 2614 is really not clear as to how this function works.&nbsp; In fact
+the RFC declares the return to be of type <tt>unsigned short</tt> and specifies
+that (negative) <a href="SLPError.html">SLPError</a> codes are returned
+on error.&nbsp; Since a negative return could also be interpreted as (a
+very large) unsigned value, OpenSLP does not return <a href="SLPError.html">SLPError</a>
+codes cast to unsigned shorts it just returns zero.
+<h3>
+See Also</h3>
+<a href="SLPReg.html">SLPReg()</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPOpen.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPOpen.html
new file mode 100644
index 00000000..b7497a24
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPOpen.html
@@ -0,0 +1,142 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPOpen</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPOpen</h2>
+
+<hr WIDTH="100%">
+<h3>
+Include</h3>
+&nbsp;
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="SLPError.html">SLPError</a> SLPOpen(const char* <a href="#lang">lang</a>,
+<a href="SLPTypes.html#SLPBoolean">SLPBoolean</a>
+<a href="#isasync">isasync</a>,
+<a href="SLPTypes.html#SLPHandle">SLPHandle</a>*
+<a href="#phslp">phslp</a>)</tt>
+<br>&nbsp;
+<h3>
+Description</h3>
+Returns a <tt>SLPHandle</tt> handle in the <tt>phslp</tt> parameter for
+the language locale passed in as the <tt>lang</tt> parameter. The client
+indicates if operations on the handle are to be synchronous or asynchronous
+through the <tt>isasync</tt> parameter. The handle encapsulates the language
+locale for SLP requests issued through the handle, and any other resources
+required by the implementation. The return value of the function is an
+<tt>SLPError</tt>
+code indicating the status of the operation. Upon failure, the <tt>phslp</tt>
+parameter is NULL.
+<p>An <tt>SLPHandle</tt> can only be used for one SLP API operation at
+a time. If the original operation was started asynchronously, any attempt
+to start an additional operation on the handle while the original operation
+is pending results in the return of an <tt>SLP_HANDLE_IN_USE</tt> error
+from the API function. The <tt>SLPClose()</tt> API function terminates
+any outstanding calls on the handle. If an implementation is unable to
+support a asynchronous( resp. synchronous) operation, due to memory constraints
+or lack of threading support, the <tt>SLP_NOT_IMPLEMENTED </tt>flag may
+be returned when the isasync flag is <tt>SLP_TRUE</tt> (resp. <tt>SLP_FALSE</tt>).
+<p>In the OpenSLP implementation, SLPHandles are used to cache information
+that is costly to obtain (in terms of network usage and time).&nbsp;&nbsp;
+Since the RFC 2614 API does not specify functions&nbsp; to initialize the
+implementation library, OpenSLP keeps track of the number of SLPHandles
+that are open.&nbsp;&nbsp; Several global library data structures are initialized
+when the first SLPHandle is opened and maintained until the last SLPHandle
+is closed.&nbsp; Therefore, it is most efficient to leave SLPHandles open
+for as long as you will need them (often for the entire life of a process).&nbsp;&nbsp;&nbsp;
+If you can help it, DO NOT make a habit of opening and closing SLPHandles
+frequently.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="lang"></a><tt>lang</tt></td>
+
+<td NOSAVE>A pointer to null terminated array of characters containing
+the RFC 1766 Language Tag for the natural language locale of requests and
+registrations issued on the handle.&nbsp; Pass in NULL or the empty string,
+"" to use the local the machine is configured to use.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="isasync"></a><tt>isasync</tt></td>
+
+<td NOSAVE>A <tt>SLPBoolean</tt> value indicating whether the <tt>SLPHandle</tt>
+should be opened for asynchronous operation or not.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="phslp"></a><tt>phslp</tt></td>
+
+<td NOSAVE>A pointer to an <tt>SLPHandle</tt>, in which the open <tt>SLPHandle</tt>
+is returned.&nbsp; If an error occurs, the value upon return is NULL.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr>
+<td>SLP_AUTHENTICATION_FAILED</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+a authentication on an SLP message failed.</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+
+<tr>
+<td>SLP_HANDLE_IN_USE</td>
+
+<td>Callback functions are not permitted to recursively call into the API
+on the same SLPHandle, either directly or indirectly. If an attempt is
+made to do so, this error is returned from the called API function.</td>
+</tr>
+</table>
+
+<p>Be aware, especially if the call is async, of error codes that may be
+passed to the SLPRegReport() callback function.
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPClose.html">SLPClose()</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPParseSrvURL.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPParseSrvURL.html
new file mode 100644
index 00000000..7eb970c4
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPParseSrvURL.html
@@ -0,0 +1,103 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPParseSrvURL()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPParseSrvURL</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="SLPError.html">SLPError</a> SLPParseSrvURL( const char*
+<a href="#srvurl">srvurl</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="SLPTypes.html#SLPSrvURL">SLPSrvURL</a>**
+<a href="#parsedurl">parsedurl</a>
+)</tt>
+<h3>
+Description</h3>
+Parses a Service URL passed in as a character string and returns the results
+in a pointer to a dynamically allocated <tt><a href="SLPTypes.html#SLPSrvURL">SLPSrvURL</a></tt>
+structure.&nbsp; The pointer returned in <tt>parsedurl</tt> should be freed
+by <a href="SLPFree.html">SLPFree()</a>.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="srvurl"></a><tt>srvurl</tt></td>
+
+<td NOSAVE>Pointer to a character buffer containing the null terminated
+URL string to parse.&nbsp; See <a href="Syntax.html#Service Url">Syntax</a>
+for more information on Service URL syntax.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="parsedurl"></a><tt>parsedurl</tt></td>
+
+<td NOSAVE>Pointer to a pointer for the <tt><a href="SLPTypes.html#SLPSrvURL">SLPSrvURL</a></tt>
+structure that receives the parsed URL.&nbsp; The memory should be freed
+by a call to <a href="SLPFree.html">SLPFree()</a> when no longer needed.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr NOSAVE>
+<td NOSAVE>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The service url being parsed is not of valid syntax</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+</table>
+
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614.</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPFree.html">SLPFree()</a>, <a href="SLPTypes.html">SLPTypes</a>,
+<a href="Syntax.html">Syntax</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPReg.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPReg.html
new file mode 100644
index 00000000..3d15ead2
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPReg.html
@@ -0,0 +1,313 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPReg()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPReg</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="SLPError.html">SLPError</a> SLPReg( <a href="SLPTypes.html#SLPHandle">SLPHandle</a>
+<a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#srvurl">srvurl</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned short <a href="#lifetime">lifetime</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#srvtype">srvtype</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#attrs">attrs</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="SLPTypes.html#SLPBoolean">SLPBoolean</a> <a href="#fresh">fresh</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="SLPRegReport.html">SLPRegReport</a> <a href="#callback">callback</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie </a>)</tt>
+<h3>
+Description</h3>
+Registers the URL in <tt>srvurl</tt> having the lifetime <tt>lifetime</tt>
+with the attribute list in <tt>attrs</tt>. The <tt>attrs</tt> list is a
+comma separated list of attribute assignments in the wire format (including
+escaping of reserved characters). The <tt>lifetime</tt> parameter must
+be nonzero and less than or equal to <tt><a href="SLPTypes.html#SLPURLLifetime">SLP_LIFETIME_MAXIMUM</a></tt>.
+If the <tt>fresh</tt> flag is <tt>SLP_TRUE</tt>, then the registration
+is new (the SLP protocol FRESH flag is set) and the registration replaces
+any existing registrations. The <tt>srvtype</tt> parameter is a service
+type name and can be included for service URLs that are not in the service:
+scheme. If the URL is in the service: scheme, the <tt>srvtype</tt> parameter
+is ignored. If the fresh flag is <tt>SLP</tt>_FALSE, then an existing registration
+is updated. Registrations and updates take place in the language locale
+of the <tt>hslp</tt> handle.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> on which to register
+the service.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="srvurl"></a><tt>srvurl</tt></td>
+
+<td NOSAVE>The service URL to register.&nbsp; May not be the empty string.&nbsp;
+May not be NULL.&nbsp; Must conform to SLP Service URL syntax. <tt><a href="SLPError.html#INVALID_REGISTRATION">SLP_INVALID_REGISTRATION</a></tt>
+will be returned if srvurl is not a SLP Service URL. See <a href="Syntax.html">Syntax</a>
+for more information on Service URL syntax.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="lifetime"></a><tt>lifetime</tt></td>
+
+<td NOSAVE>An unsigned short giving the lifetime of the service in seconds.&nbsp;
+The value must be an unsigned integer less than or equal to <tt><a href="SLPTypes.html#SLPURLLifetime">SLP_LIFETIME_MAXIMUM</a></tt>
+and greater than zero.&nbsp; <i>If lifetime is set to <tt><a href="SLPTypes.html#SLPURLLifetime">SLP_LIFETIME_MAXIMUM</a></tt>,
+it will remain registered for the life of the calling process.</i></td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="srvtype"></a>srvtype</td>
+
+<td NOSAVE>This parameter is always ignored because the Service URL syntax
+required for the <tt>srvurl</tt> parameter encapsulates the service-type.&nbsp;
+See <a href="Syntax.html">Syntax</a> for more information on Service URL
+syntax.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="attrs"></a>attrs</td>
+
+<td>A list of attribute assignment expressions for the attributes of the
+registered service.&nbsp; Use the empty string, "" for no attributes.&nbsp;
+Example: "(attr1=val1),(attr2=val2),(attr3=val3)"</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="fresh"></a><tt>fresh</tt></td>
+
+<td NOSAVE>An SLPBoolean that is <tt>SLP_TRUE</tt> if the registration
+is new or <tt>SLP_FALSE</tt> for a re-registration.&nbsp; Currently, OpenSLP
+does not support incremental registrations.&nbsp; If <tt>fresh</tt> is
+<tt>SLP_FALSE</tt>,
+<tt>SLPReg()</tt>
+will return <tt><a href="SLPError.html#SLP_NOT_IMPLEMENTED">SLP_NOT_IMPLEMENTED</a></tt>.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="callback"></a><tt>callback</tt></td>
+
+<td NOSAVE>The address of an <tt><a href="SLPRegReport.html">SLPRegReport</a></tt>
+function that will be called to report the operation completion status.&nbsp;
+Man not be NULL. See <a href="Callbacks.html">Callbacks</a> for more information
+on how callbacks are used by the SLPAPI.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>Pointer to memory that gets passed to the callback code.&nbsp;
+May be NULL.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr NOSAVE>
+<td NOSAVE>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_INVALID_REGISTRATION</td>
+
+<td>The deregistered service url does not conform to valid service url
+syntax.&nbsp; The service url being deregistered is not registered this
+means that either it was never registered via a call to SLPReg() or that
+the registration lifetime has expired.&nbsp;&nbsp; SLP_INVALID_REGISTRATION
+is commonly returned when an attempt is made to deregister a service that
+was registered by a call to SLPReg() on a different host.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The SLP message was rejected by a remote SLP agent. The API returns
+this error only when no information was retrieved, and at least one SA
+or DA indicated a protocol error. The data supplied through the API may
+be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_ABSENT</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+the UA or SA failed to send an authenticator for requests or registrations.</td>
+</tr>
+
+<tr>
+<td>SLP_AUTHENTICATION_FAILED</td>
+
+<td>If the SLP framework supports authentication, this error arises when
+a authentication on an SLP message failed.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_TIMED_OUT</td>
+
+<td>When no reply can be obtained in the time specified by the configured
+timeout interval for a unicast request, this error is returned.&nbsp; In
+other words, slpd is running, but something is wrong with it</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_INIT_FAILED</td>
+
+<td>If the network cannot initialize properly, this error is returned.
+Will also be returned if an SA or DA agent (slpd) can not be contacted.&nbsp;
+slpd must be running in order to call SLPReg() or SLPDereg().</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+
+<tr>
+<td>SLP_NETWORK_ERROR</td>
+
+<td>The failure of networking during normal operations causes this error
+to be returned.&nbsp; In OpenSLP, this is the error you'll get if an underlying
+socket() call failed.</td>
+</tr>
+
+<tr>
+<td>SLP_INTERNAL_SYSTEM_ERROR</td>
+
+<td>A basic failure of the API causes this error to be returned. This occurs
+when a system call or library fails. The operation could not recover.</td>
+</tr>
+
+<tr>
+<td>SLP_HANDLE_IN_USE</td>
+
+<td>Callback functions are not permitted to recursively call into the API
+on the same SLPHandle, either directly or indirectly. If an attempt is
+made to do so, this error is returned from the called API function.</td>
+</tr>
+</table>
+
+<p>Be aware, especially if the call is async, of error codes that may be
+passed to the SLPRegReport() callback function.
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.8.0</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPDereg.html">SLPDeReg()</a>, <a href="Syntax.html">Syntax</a>,
+<a href="Callbacks.html">Callbacks</a>
+<br>&nbsp;
+<h3>
+Example Code</h3>
+
+<blockquote><tt>#include &lt;slp.h></tt>
+<p><tt>void MySLPRegReport(SLPHandle hslp, SLPError errcode, void* cookie)</tt>
+<br><tt>{</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* return the error code in the cookie */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; *(SLPError*)cookie = errcode;</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* You could do something else here like print
+out&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* the errcode, etc.&nbsp; Remember, as a general
+rule,&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* do not try to do too much in a callback because&nbsp;
+*/</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* it is being executed by the same thread that
+is&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* reading slp packets from the wire.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>}</tt>
+<p><tt>int main(int argc, char* argv[])</tt>
+<br><tt>{</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPError err;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPError callbackerr;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPHandle hslp;</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; err = SLPOpen("en",SLP_FALSE,&amp;hslp);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if(err != SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Error opening
+slp handle %i\n",err);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return err;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* Register a service with SLP */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; err = SLPReg( hslp,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"service:myservice.myorg://hostname.domain.com:6672",</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+SLP_LIFETIME_MAXIMUM,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+0,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+"(public_key=......my_pgp_key.......)",</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+SLP_TRUE,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+MySLPRegReport,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+&amp;callbackerr );</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* err may contain an error code that occurred
+as the slp library&nbsp;&nbsp;&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* _prepared_ to make the call.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+*/</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if(( err != SLP_OK) || (callbackerr != SLP_OK))</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Error registering
+service with slp %i\n",err);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return err;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* callbackerr may contain an error code (that
+was assigned through */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* the callback cookie) that occurred as slp
+packets were sent on&nbsp;&nbsp;&nbsp; */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; /* the wire */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; if( callbackerr != SLP_OK)</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; {</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("Error registering
+service with slp %i\n",callbackerr);</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return callbackerr;</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; }</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* Now that we're done using slp, close the slp
+handle */</tt>
+<br><tt>&nbsp;&nbsp;&nbsp; SLPClose(hslp);</tt>
+<p><tt>&nbsp;&nbsp;&nbsp; /* rest of program */</tt>
+<br><tt>}</tt>
+<br><tt></tt>&nbsp;</blockquote>
+
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPRegReport.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPRegReport.html
new file mode 100644
index 00000000..e952b1bc
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPRegReport.html
@@ -0,0 +1,75 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPRegReport Callback</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPRegReport</h2>
+
+<h2>
+
+<hr WIDTH="100%"></h2>
+
+<h3>
+Declaration</h3>
+<tt>typedef void SLPRegReport(<a href="SLPTypes.html#SLPHandle">SLPHandle</a><a href="#hslp">hslp</a>,
+<a href="SLPTypes.html#SLPError">SLPError</a>
+errcode, void* cookie)</tt>
+<br>&nbsp;
+<h3>
+Description</h3>
+The SLPRegReport callback type is used as the type for the callback function
+that is passed in to the <a href="SLPReg.html">SLPReg()</a>, <a href="SLPDereg.html">SLPDeReg()</a>
+and <a href="SLPDelAttrs.html">SLPDelAttrs()</a> functions.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="hslp"></a>hslp</td>
+
+<td NOSAVE>The SLPHandle that was used to initiate the operation.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="errcode"></a>errcode</td>
+
+<td NOSAVE>An error code indicating if an error occurred during the operation.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a>cookie</td>
+
+<td NOSAVE>Pointer to the same memory that was passed into the initiating
+function call.</td>
+</tr>
+
+<caption ALIGN=BOTTOM>&nbsp;</caption>
+</table>
+
+<h3>
+Returns</h3>
+None
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>SLPRegReport() callbacks are called as specified by RFC 2614.&nbsp;</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="Callbacks.html">Callbacks</a>
+<br>&nbsp;
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSetProperty.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSetProperty.html
new file mode 100644
index 00000000..9065c246
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSetProperty.html
@@ -0,0 +1,78 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<h2>
+SLPSetProperty</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt>void SLPSetProperty( const char* name,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* value )</tt>
+<br>&nbsp;
+<h3>
+Description</h3>
+This function is supposed to allow the caller to set SLP properties, but
+it is impossible to implement this function along with <a href="SLPGetProperty.html">SLPGetProperty()</a>
+in a way that is even remotely thread safe.&nbsp; Therefore,&nbsp; OpenSLP
+completely ignores all calls made to <tt>SLPSetProperty() </tt>so that
+<a href="SLPSetProperty.html">SLPGetProperty()</a>
+can be used in threaded applications.
+<br>&nbsp;
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="name"></a><tt>name</tt></td>
+
+<td NOSAVE>Pointer to the name of a net.slp property to set.&nbsp; See
+<a href="/broken">OpenSLP
+Users Guide</a> for a list of supported properties</td>
+</tr>
+
+<tr>
+<td><a NAME="value"></a><tt>value</tt></td>
+
+<td>Pointer to the new string value.</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+None
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.8.0</td>
+
+<td NOSAVE>Not implemented.&nbsp; See Notes.</td>
+</tr>
+</table>
+
+<h3>
+Notes</h3>
+For some reason the SLP API writers decided to make SLPGetProperty() and
+SLPSetProperty() calls impossible to implement in a thread safe manner.&nbsp;
+For this reason OpenSLP only allows read only access to SLP properties.&nbsp;
+Properties are read into static data structures when the process loads,
+and never changed so at least SLPGetProperty() can be called from threaded
+applications.
+<p>Some discussions have taken place on the srvloc mailing list and it
+looks like the SLP API will be revised to solve this problem.&nbsp; Until
+this time OpenSLP will not implement SLPSetProperty().
+<h3>
+See Also</h3>
+<a href="SLPGetProperty.html">SLPGetProperty()</a>,&nbsp; <a href="/broken">Open
+SLP Users Guide</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvTypeCallback.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvTypeCallback.html
new file mode 100644
index 00000000..3a7599a0
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvTypeCallback.html
@@ -0,0 +1,93 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPSrvTypeCallback</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPSrvTypeCallback</h2>
+
+<hr WIDTH="100%">
+<h3>
+<tt>Declaration</tt></h3>
+<tt>typedef <a href="/SLPTypes.html#SLPBoolean">SLPBoolean</a> SLPSrvTypeCallback(
+<a href="/SLPTypes.html#SLPHandle">SLPHandle</a>
+<a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#srvtypes">srvtypes</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+<a href="/SLPTypes.html#SLPError">SLPError</a> <a href="#errcode">errcode</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a> )</tt>
+<h3>
+Description</h3>
+The <tt>SLPSrvTypeCallback</tt> type is the type of the callback function
+passed as a parameter to the <tt><a href="SLPFindSrvTypes.html">SLPFindSrvTypes()</a></tt>
+function.&nbsp; If the hslp parameter was opened asynchronously, the results
+returned through the callback may be uncollated.&nbsp; If the hslp handle
+parameter was opened synchronously, then the results will be collated to
+remove duplicates.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> that was passed in
+to the <tt>SLPFindSrvTypes()</tt> function.</td>
+</tr>
+
+<tr>
+<td><a NAME="srvtypes"></a><tt>srvtypes</tt></td>
+
+<td>Pointer to a comma separated list of service types.&nbsp; See <a href="Syntax.html#Service Type">Syntax</a>
+for more information on service type syntax.&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="errcode"></a><tt>errcode</tt></td>
+
+<td NOSAVE>An error code indicating if an error occurred during the operation.&nbsp;
+The callback should check this error code before processing the parameters.&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>The same cookie that was passed as a parameter to the <tt>SLPFindSrvTypes()</tt>
+call</td>
+</tr>
+
+<caption ALIGN=BOTTOM>&nbsp;</caption>
+</table>
+
+<h3>
+Returns</h3>
+The callback should return <tt>SLP_TRUE</tt> if more data is desired.&nbsp;
+The callback may continue to return <tt>SLP_TRUE</tt> until it is called
+with an errcode of <tt>SLP_LAST_CALL</tt>.&nbsp; If no more data is requested
+the callback should return <tt>SLP_FALSE</tt>.
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>SLPSrvTyperCallback functions are not called because SLPFindSrvTypes()
+is not implemented</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="Syntax.html">Syntax</a>,
+<a href="Callbacks.html">Callbacks</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvURLCallback.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvURLCallback.html
new file mode 100644
index 00000000..4b5ebc79
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPSrvURLCallback.html
@@ -0,0 +1,101 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPSrvURLCallback</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPSrvURLCallback</h2>
+
+<hr WIDTH="100%">
+<h3>
+Declaration</h3>
+<tt>typedef <a href="SLPTypes.html#SLPBoolean">SLPBoolean</a> SLPSrvURLCallback(
+<a href="SLPTypes.html#SLPHandle">SLPHandle</a>
+<a href="#hslp">hslp</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+const char* <a href="#srvurl">srvurl</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+unsigned short <a href="#lifetime">lifetime</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
+<a href="SLPTypes.html#SLPError">SLPError</a> <a href="#errcode">errcode</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+void* <a href="#cookie">cookie</a> )</tt>
+<h3>
+Description</h3>
+The <tt>SLPSrvURLCallback</tt> type is the type of the callback function
+parameter to <tt>SLPFindSrvs()</tt> function. If the <tt>hslp</tt> handle
+parameter was opened asynchronously, the results returned through the callback
+MAY be uncollated.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="hslp"></a><tt>hslp</tt></td>
+
+<td NOSAVE>The language specific <tt>SLPHandle</tt> on which to register
+the service.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="srvurl"></a><tt>srvurl</tt></td>
+
+<td>Pointer to the SLP Service URL of the requested service.&nbsp; See
+<a href="Syntax.html">Syntax</a>
+for more information about SLP Service URLs</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="lifetime"></a><tt>lifetime</tt></td>
+
+<td NOSAVE>The lifetime of the service in seconds</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="errcode"></a><tt>errcode</tt></td>
+
+<td NOSAVE>An error code indicating if an error occurred during the operation.&nbsp;
+The callback should check this error code before processing the parameters.&nbsp;</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="cookie"></a><tt>cookie</tt></td>
+
+<td NOSAVE>The same cookie that was passed as a parameter to the <tt>SLPFindSrvs()</tt>
+call</td>
+</tr>
+
+<caption ALIGN=BOTTOM>&nbsp;</caption>
+</table>
+
+<h3>
+Returns</h3>
+The callback should return <tt>SLP_TRUE</tt> if more data is desired.&nbsp;
+The callback may continue to return <tt>SLP_TRUE</tt> until it is called
+with an errcode of <tt>SLP_LAST_CALL</tt>.&nbsp; If no more data is requested
+the callback should return <tt>SLP_FALSE</tt>.
+<br>&nbsp;
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.0</td>
+
+<td NOSAVE>SLPSrvURLCallback functions are called as specified by RFC 2614</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="/Syntax.html">Syntax</a>,
+<a href="/Callbacks.html">Callbacks</a>
+<br>&nbsp;
+<br>&nbsp;
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPTypes.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPTypes.html
new file mode 100644
index 00000000..4722ee7d
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPTypes.html
@@ -0,0 +1,62 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLP Data Types</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLP Data Types</h2>
+
+<hr WIDTH="100%">
+<h3>
+<a NAME="SLPURLLifetime"></a>SLPURLLifetime</h3>
+An enumerated type with a range of 0 - 65535.&nbsp; There are two defined
+values <tt>of:</tt>
+<blockquote><tt>SLP_LIFETIME_DEFAULT&nbsp;&nbsp;&nbsp; 10800</tt>
+<br><tt>SLP_LIFETIME_MAXIMUM&nbsp;&nbsp;&nbsp; 65535</tt></blockquote>
+
+<h3>
+<a NAME="SLPError"></a>SLPError</h3>
+An enumerated type with a range of -26 - 1.&nbsp; See <a href="SLPError.html">SLPError
+Codes </a>for more detail.
+<br>&nbsp;
+<h3>
+<a NAME="SLPBoolean"></a>SLPBoolean</h3>
+A boolean value with one of the following values:
+<blockquote><tt>SLP_FALSE&nbsp;&nbsp;&nbsp; 0</tt>
+<br><tt>SLP_TRUE&nbsp;&nbsp;&nbsp;&nbsp; 1</tt></blockquote>
+
+<h3>
+<a NAME="SLPSrvURL"></a>SLPSrvURL</h3>
+Structure that is used to index the parts of a parsed Service URL that
+is returned by <a href="SLPParseSrvURL.html">SLPParseSrvURL()</a>.&nbsp;
+The structure contains the following members.
+<blockquote><tt>char* s_pcSrvType</tt>
+<blockquote>A pointer to a character string containing the service type
+name, including naming authority.&nbsp; The service type name includes
+the "service:" if the URL is of the service: scheme.</blockquote>
+<tt>char* s_pcHost</tt>
+<blockquote>A pointer to a character string containing the host identification
+information.</blockquote>
+<tt>int s_iPort</tt>
+<blockquote>The port number, or zero if none.&nbsp; The port is only available
+if the transport is IP</blockquote>
+<tt>char* s_pcNetFamily</tt>
+<blockquote>A pointer to a character string containing the network address
+family identifier.&nbsp; Possible values are "ipx" for the IPX family,
+"at" for the Appletalk family, and "" (the empty string) for IP address
+family.&nbsp; OpenSLP only supports the IP address family.</blockquote>
+<tt>char* s_pcSrvPart</tt>
+<blockquote>The remainder of the URL.</blockquote>
+</blockquote>
+
+<h3>
+<a NAME="SLPHandle"></a>SLPHandle</h3>
+The SLPHandle type is returned by <a href="SLPOpen.html">SLPOpen()</a>
+and is a parameter to all SLP Functions.&nbsp; The type is opaque to the
+caller.
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPUnescape.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPUnescape.html
new file mode 100644
index 00000000..61045efd
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/SLPUnescape.html
@@ -0,0 +1,99 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.77C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - SLPUnEscape()</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLPUnescape</h2>
+
+<hr WIDTH="100%">
+<h3>
+<tt>Declaration</tt></h3>
+<tt>#include &lt;slp.h></tt>
+<p><tt><a href="/SLPError.html">SLPError</a> SLPUnescape( const char* <a href="#escaped">escaped</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+char** <a href="#unescaped">unescaped</a>,</tt>
+<br><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<a href="/SLPTypes.html#SLPBoolean">SLPBoolean</a> <a href="#ist">istag</a>
+)</tt>
+<h3>
+Description</h3>
+Process the input string to unescapes any SLP reserved characters.&nbsp;
+If the <tt>istag</tt> parameter is SLP_TRUE then SLPUnEscape() will look
+for bad tag characters.
+<h3>
+Parameters</h3>
+
+<table BORDER CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="escaped"></a><tt>escaped</tt></td>
+
+<td NOSAVE>Pointer to the string to be un-escaped</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE><a NAME="unescaped"></a><tt>unescaped</tt></td>
+
+<td NOSAVE>Pointer to a pointer for the dynamically allocated output string.
+The memory should be freed by a call to <tt><a href="SLPFree.html">SLPFree()</a></tt>
+when no longer needed.</td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td><a NAME="ist"></a>istag</td>
+
+<td NOSAVE>When SLP_TRUE_ the input buffer is checked for bad characters</td>
+</tr>
+</table>
+
+<h3>
+Returns</h3>
+
+<table BORDER NOSAVE >
+<tr>
+<td>SLP_OK</td>
+
+<td>Indicates that the no error occurred during the operation.</td>
+</tr>
+
+<tr>
+<td>SLP_PARSE_ERROR</td>
+
+<td>The API returns this error only when no information was retrieved,
+and at least one SA or DA indicated a protocol error. The data supplied
+through the API may be malformed or a may have been damaged in transit.</td>
+</tr>
+
+<tr>
+<td>SLP_MEMORY_ALLOC_FAILED&nbsp;</td>
+
+<td>Out of memory error</td>
+</tr>
+
+<tr>
+<td>SLP_PARAMETER_BAD</td>
+
+<td>If a parameter passed into a function is bad, this error is returned.</td>
+</tr>
+</table>
+
+<h3>
+Status</h3>
+
+<table CELLPADDING=5 NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>OpenSLP 0.6.8</td>
+
+<td NOSAVE>Fully implemented as specified by RFC 2614.</td>
+</tr>
+</table>
+
+<h3>
+See Also</h3>
+<a href="SLPEscape.html">SLPEscape()</a>, <a href="SLPFree.html">SLPFree()</a>
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Security.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Security.html
new file mode 100644
index 00000000..9f58a821
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Security.html
@@ -0,0 +1,87 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.76C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - Security</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h1>
+Writing Secure SLP&nbsp;Enabled Applications
+<hr WIDTH="100%"></h1>
+
+<h3>
+Introduction</h3>
+Major changes were made to the OpenSLP 0.8.x codebase to add SLPv2 message
+authentication support for OpenSLP 0.9.0.&nbsp;&nbsp; Until this time,
+there were no plans to ever implement SLPv2 security due to the ideas expressed
+in a internal Caldera document entitled "OpenSLP and SLPv2 Authentication".&nbsp;&nbsp;&nbsp;
+The document&nbsp; (<a href="openslp_security_whitepaper.html">full text
+available</a>) mostly references and draws conclusions from discussion
+from the srvloc@srvloc.org mailing list.&nbsp;&nbsp; The following is the
+concluding paragraphs of the document.
+<br>&nbsp;
+<blockquote><i>For those that are not willing to endure the tedium of reading
+the entire mailing list discussion,&nbsp; the conclusion was eventually
+made (at least by the author) that though SLP authentication may be&nbsp;
+appropriate in some specialized SLP deployments, it is probably not beneficial
+in normal network computer environments.&nbsp;&nbsp;&nbsp; This conclusion
+is based on the following premises:</i></blockquote>
+
+<ul>
+<ul>
+<li>
+<i>Implementation of SLP authentication in the absence of public key infrastructure
+standards would require enough manual configuration to invalidate all claims
+SLP has to increased usability.</i></li>
+
+<li>
+<i>Common helper protocols DNS, DHCP, IP, even ARP are currently insecure
+for usability reasons.&nbsp;&nbsp; SLP fits into this category of protocols
+where lack of security may be considered a feature when it allows for maximal
+usability.</i></li>
+
+<li>
+<i>Given the lack of security in the above mentioned (and other) protocols
+self-established authentication of end to end communication is required
+anyway for secure communication of network software entities.</i></li>
+
+<li>
+<i>In the presence of appropriate end to end security mechanisms,&nbsp;
+SLP related security attacks are limited to the realm of "denial of service"
+or "disruptions" -- even when no authentication is implemented in SLP.&nbsp;&nbsp;
+In other words there is not a risk of compromise of confidential information
+that can be attributed to SLP as long as appropriate end to end security
+is established.</i></li>
+</ul>
+<i></i>
+<p><br><i>So, for the OpenSLP project, there are not any plans to implement
+SLPv2 security.&nbsp;&nbsp; (This may change in the future depending on
+the success of ongoing PKI standardization efforts.)&nbsp;&nbsp; There
+are, however, many things that could be done to reduce opportunities for
+"denial of service attacks" or other malicious SLP related disruptions.&nbsp;&nbsp;
+These will be addressed in future versions of OpenSLP.&nbsp;&nbsp;&nbsp;
+Also, in order to inform developers about the importance of writing secure
+applications, plans have been made to include an SLP&nbsp;Security HOWTO
+as part of the OpenSLP&nbsp;Documentation.</i></ul>
+The existence of SLPv2 authentication in OpenSLP <b>does not </b>eliminate
+the need to provide secure end-to-end communication for service specific
+protocols&nbsp;&nbsp; (read the <a href="openslp_security_whitepaper.html">full
+text</a> of the paper if you don't know what I'm talking about here).&nbsp;
+OpenSLP&nbsp;security does not do any good at all if the authentication,
+integrity, and/or privacy of service specific communication weak.
+<br>&nbsp;
+<h3>
+Who should read this document?</h3>
+If you are a developer that writes SLP enabled software, you should read
+this document.&nbsp; If you are a system or network administrator that
+is concerned with how to setup and maintain secure SLP&nbsp;installations,
+you should read the <a href="../UsersGuide/Security.html">Security section
+of the OpenSLP&nbsp;Users guide.</a>
+<br>&nbsp;
+<br>&nbsp;
+<p>*** PLEASE&nbsp;PATIENT&nbsp;UNTIL&nbsp;I&nbsp;GET&nbsp;SOME&nbsp;TIME&nbsp;TO&nbsp;WRITE&nbsp;THE&nbsp;REST&nbsp;OF&nbsp;THIS&nbsp;DOCUMENT
+***
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Syntax.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Syntax.html
new file mode 100644
index 00000000..b69667fe
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/Syntax.html
@@ -0,0 +1,104 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - Syntax</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+
+<h2>
+SLP Syntaxes</h2>
+
+<hr WIDTH="100%">
+<h3>
+<a NAME="Service Type"></a>SLP Service Type Syntax</h3>
+The official definition of Service Type strings can be found in <a href="../../rfc/rfc2609.txt">RFC
+2609</a>, "Service Templates and Service Schemes".&nbsp; If you will be
+working with "well known" (IANA) service types, you should read it.&nbsp;
+If you are developing applications for "proprietary" services then you
+will probably be satisfied with the following explanation:
+<blockquote><b>Service-Type = "service:"&lt;abstract-type.naming-authority>":"&lt;concrete-type></b></blockquote>
+The abstract-type is simple (hopefully short) descriptive string that describes
+the type of service.&nbsp; The naming-authority is the name (hopefully
+unique) name of the organization that named the service.&nbsp; The naming-authority
+is optional, but if it is omitted then IANA is assumed to be the naming
+authority and IANA requires service-types to be registered (see RFC 2609).&nbsp;
+The concrete-type is also optional.&nbsp; Think of a concrete-type as a
+kind of sub-type of the abstract-type.&nbsp; For example, "printer" is
+an abstract type (owned by IANA) and "printer:lpr" is a concrete type (owned
+by IANA).
+<h4>
+Service Type Examples</h4>
+"weather.nasa:wtp"&nbsp; - A (fictitious) weather service type owned by
+NASA that uses WTP protocol
+<br>"weather.nasa:swtp" - A (fictitious) weather service type owned by NASA
+that uses SWTP protocol.
+<br>"chat.superchat" - A chat service type owned by SuperChat
+<br>"printer.samba" - A samba printer service type
+<br>"ftp" - An IANA ftp service type
+<br>"telnet" - An IANA telnet service type
+<h4>
+Comparing Service Types</h4>
+Since service types are an important in determining the urls that are return
+by the <tt><a href="SLPFindSrvs.html">SLPFindSrvs()</a></tt> call you should
+understand how OpenSLP compares services.&nbsp; Suppose that three services
+were registered with <tt><a href="SLPReg.html">SLPReg()</a></tt> using
+a <tt>srvtype</tt> of "printer:lpr", "printer" and "printer.acme".&nbsp;
+If a client program calls <tt><a href="SLPFindSrvs.html">SLPFindSrvs()</a></tt>
+with a <tt>srvtype</tt> of "service:printer" the urls for both "printer:lpr"
+and "printer" are returned ("printer.acme" is not).&nbsp; However, if <tt><a href="SLPFindSrvs.html">SLPFindSrvs()</a></tt>
+is called with <tt>srvtype </tt>of "printer:lpr" or "printer.acme" then
+the urls for "printer:lpr" or "printer.acme" would be returned.&nbsp; In
+other words, if a concrete type is used, only services with same abstract
+and concrete type are returned.&nbsp; If only the abstract type is used
+then all services of that abstract type (and naming authority) are returned.
+<h4>
+A word about naming authorities</h4>
+It is our opinion that developers MUST use a naming authority if an IANA
+service template has not been defined that fits the type of service that
+is being supplied by their application.&nbsp; If developers use a predefined
+IANA service template they must use it correctly.
+<h3>
+<a NAME="Service Url"></a>SLP Service Url Syntax</h3>
+URL strings passed as parameters to<tt> <a href="SLPReg.html">SLPReg()</a></tt>,
+<tt><a href="SLPDereg.html">SLPDeReg()</a></tt>,
+<tt><a href="SLPDelAttrs.html">SLPDelAttrs()</a></tt>,
+<tt><a href="SLPFindSrvs.html">SLPFindSrvs()</a></tt>,
+<tt><a href="SLPParseSrvURL.html">SLPParseSrvURL()</a></tt>
+functions and returned as a result to the <tt><a href="SLPSrvURLCallback.html">SLPSrvURLCallback()</a></tt>
+callback function.&nbsp; SLP defines a special type of URL called a Service
+URL that MUST be used when calling OpenSLP API functions.&nbsp; If you
+decide to use Service URLs extensively, you should probably read <a href="rfc/rfc2609.txt">RFC
+2609</a>, but if you just want to know what they look like, the following
+explanation should be good enough:
+<blockquote><b><tt>SLP Service URL = "service:"&lt;service-type>"://"&lt;addrspec></tt></b></blockquote>
+The <tt>service-type</tt> is a service type as explained above. <tt>addrspec</tt>
+can be just about anything you want that fits URL syntax (&nbsp;&nbsp;&nbsp;
+) and can be translated as a network location.&nbsp; The "<tt>service:</tt>"
+and "<tt>://</tt>" strings are required.
+<h4>
+Service URL Examples</h4>
+"service:weather.nasa:wtp://weather.nasa.com:12000"
+<br>"service:weather.nasa:swtp://weather.nasa.com:12001"
+<br>"service:chat.superchat://chat.superchat.com;auth=ldap"
+<h4>
+Do I have to use the SLP Service URL syntax for my urls?</h4>
+Yes.&nbsp; With OpenSLP you are required to use Service URLs, API functions
+will return SLP_PARSE_ERROR if you do not.&nbsp; The reason that OpenSLP
+requires Service URLs is because the SLP API designers do not allow the
+service-type to be passed in as a parameter to the SLPDeReg() call.&nbsp;
+With out the service-type, SLPDeReg() does not allow the caller to distinguish
+between services of varying types that were registered with the same standard
+URL.
+<br>&nbsp;
+<h3>
+<a NAME="LDAPv3 Filter"></a>LDAPv3 Search Filter Syntax</h3>
+An LDAP Search Filter string is passed parameter to the <a href="SLPFindSrvs.html">SLPFindSrvs()</a>
+function.&nbsp; If you want the definitive explanation of LDAP3 search
+filters you can read <a href="../../rfc/rfc2254.txt">RFC 2254</a>, "String
+Representation of LDAP Search Filters", or you can read the following definition
+that should be good enough for most applications.
+<br>&nbsp;
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/index.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/index.html
new file mode 100644
index 00000000..88d98f2b
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/index.html
@@ -0,0 +1,96 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.72C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.2.14 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - Index</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+&nbsp;
+<table NOSAVE >
+<tr VALIGN=CENTER NOSAVE>
+<td NOSAVE>
+<h1>
+<img SRC="smalllogo.jpg" height=106 width=317></h1>
+</td>
+
+<td NOSAVE>
+<h1>
+<hr WIDTH="100%">
+Programmers Guide
+<hr WIDTH="100%">
+</h1>
+</td>
+</tr>
+</table>
+
+<table BORDER CELLPADDING=5 COLS=2 WIDTH="100%" NOSAVE >
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>
+<h3>
+SLP Handle Functions</h3>
+Functions used to open and close SLPHandles:
+<p><b><a href="SLPOpen.html">SLPOpen()</a></b>
+<br><b><a href="SLPClose.html">SLPClose()</a></b></td>
+
+<td>
+<h3>
+Parsing Functions</h3>
+Useful parsing functions:
+<p><b><a href="SLPParseSrvURL.html">SLPParseSrvURL()</a></b>
+<br><b><a href="SLPEscape.html">SLPEscape()</a></b>
+<br><b><a href="SLPUnescape.html">SLPUnescape()</a></b>
+<br><b><a href="SLPFree.html">SLPFree()</a></b></td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>
+<h3>
+Service Registration Functions</h3>
+Functions that should be called by applications that provide a service:
+<p><b><a href="SLPReg.html">SLPReg()</a></b>
+<br><b><a href="SLPDereg.html">SLPDereg()</a></b>
+<br><b><a href="SLPDelAttrs.html">SLPDelAttrs()</a></b></td>
+
+<td>
+<h3>
+Configuration Functions</h3>
+Functions that may be called to determine the configuration of the SLP
+on the local machine and on the network:
+<p><b><a href="SLPGetRefreshInterval.html">SLPGetRefreshInterval()</a></b>
+<br><b><a href="SLPFindScopes.html">SLPFindScopes()</a></b>
+<br><b><a href="SLPGetProperty.html">SLPGetProperty()</a></b>
+<br><b><a href="SLPSetProperty.html">SLPSetProperty()</a></b></td>
+</tr>
+
+<tr VALIGN=TOP NOSAVE>
+<td NOSAVE>
+<h3>
+Service Location Functions</h3>
+Functions that may be called by applications that use services:
+<p><b><a href="SLPFindSrvs.html">SLPFindSrvs()</a></b>
+<br><b><a href="SLPFindSrvTypes.html">SLPFindSrvTypes()</a></b>
+<br><b><a href="SLPFindAttrs.html">SLPFindAttrs()</a></b></td>
+
+<td NOSAVE>
+<h3>
+Misc Information</h3>
+Quick links to useful information:
+<p><b><a href="Callbacks.html">Callbacks</a></b>
+<br><b><a href="Syntax.html">Syntax</a></b>
+<br><b><a href="SLPError.html">Error Codes</a></b>
+<br><b><a href="Divergence.html">Divergence from RFC 2614</a></b></td>
+</tr>
+</table>
+
+<p><font size=-1>Prepared by <a href="http://www.calderasystems.com">Caldera
+Systems, Inc</a></font>
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+<br>&nbsp;
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/openslp_security_whitepaper.html b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/openslp_security_whitepaper.html
new file mode 100644
index 00000000..eddaa54c
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/openslp_security_whitepaper.html
@@ -0,0 +1,338 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta name="GENERATOR" content="Mozilla/4.76C-CCK-MCD Caldera Systems OpenLinux [en] (X11; U; Linux 2.4.2 i686) [Netscape]">
+ <title>OpenSLP Programmers Guide - Security Whitepaper</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EE" vlink="#551A8B" alink="#FF0000">
+
+<h1>
+
+<hr WIDTH="100%"></h1>
+
+<h1>
+OpenSLP and SLPv2 Authentication</h1>
+February 6, 2001
+<p>Matthew Peterson&nbsp; &lt;matt@caldera.com>
+<p>
+<hr WIDTH="100%">
+<h3>
+Abstract</h3>
+This document is summary of SLPv2 security discussions along with some
+conclusions that suggest direction for future Caldera sponsored development
+of the
+<a href="www.openslp.org">OpenSLP</a> implementation of Service
+Location Protocol.
+<br>&nbsp;
+<h3>
+Introduction</h3>
+Early in December 2000, it was suggested that OpenSLP be submitted for
+security review by noted security expert Olaf Kirch.&nbsp;&nbsp; Olaf offered
+some very useful feedback including a suggestion to implement optional
+SLPv2 authentication as specified by <a href="http://www.openslp.org/doc/rfc/rfc2608.txt">RFC
+2608 section 9.2.</a>&nbsp;&nbsp;&nbsp; Olaf was worried that in the absence
+of SLPv2 authentication,&nbsp; users of OpenSLP might unknowingly trust
+malicious services that have been setup to "masquerade" as legitimate services.&nbsp;&nbsp;
+In Olaf's estimation leaving out SLP authentication opens a security hole
+that is not&nbsp; acceptable.&nbsp; With respect to <i>Volution</i>'s use
+of SLP to locate services Olaf wrote the following:
+<blockquote><tt>"Not authenticating registration and deregistration requests
+is clearly inacceptable in an environment where there's a non-zero security
+awareness. If everyone is able to change the LDAP server Volution uses
+to obtain its information from, then we might as well replace /bin/login
+with a symlink to /bin/bash"&nbsp; -- Olaf Kirch</tt></blockquote>
+The initial response to Olaf's security review was one of complete compliance.&nbsp;&nbsp;
+Code changes were quickly made for the next release of OpenSLP (ver 0.8.1)
+to resolve all security issues <i>except</i> implementation of SLPv2 authentication
+which was expected to be an involved change that would take several days
+to complete.&nbsp;&nbsp;&nbsp; After a couple days of research, it became
+obvious that the addition of SLPv2 security would be much more complex
+than simply writing several hundred lines of security enabling code.&nbsp;&nbsp;
+The final conflict eventually boiled down to a fundamental security / usability
+tradeoff that would be unresolvable even with a perfect implementation.
+<br>&nbsp;
+<h3>
+Objective of SLP</h3>
+SLP can be thought of as a very simple global service registry (or directory).&nbsp;&nbsp;
+Software entities that provide services register with SLP so that software
+entities that want to use a services can locate them.&nbsp;&nbsp;&nbsp;
+SLP offers a very simple mapping of service types (or characteristics)
+to service URLs.&nbsp;&nbsp; This means that only the <i>type or characteristics</i>
+of a service need to be known in order for a user or application to locate
+a service for&nbsp; use.&nbsp;&nbsp;&nbsp; The major feature SLP provides
+is usability.&nbsp;&nbsp; Basically, SLP allows application developers
+to write more usable and manageable software.&nbsp;&nbsp; With SLP users
+no longer need to memorize network addresses, host names or other information
+to configure their client applications and administrators do not have to
+set up elaborate means to supply this information.
+<p>In discussing security problems associated with SLP it is important
+to note two things&nbsp; from <a href="http://www.openslp.org/doc/rfc/rfc2608.txt">section
+1 of RFC 2608</a>:
+<ul>
+<li>
+SLP is designed for enterprise networks not as a solution for the global
+Internet</li>
+
+<li>
+The goal of SLP is to provide a framework that allows developers to write
+software that is user friendly and easily managed.</li>
+</ul>
+
+<h3>
+SLP Security</h3>
+Imagine now that in an enterprise environment there is a malicious or overly
+curious individual that would like to obtain confidential information.&nbsp;&nbsp;&nbsp;
+SLP could be exploited to obtain information from software that was otherwise
+secured by virtue of manual configuration.&nbsp;&nbsp;&nbsp; For example,
+an OpenSource help desk application consisting of "server" and "client"
+software is SLP enabled because the network administrators got tired of
+helping employees set up the "client" software with location and configuration
+information used to connect with the "server" software.
+<p>Since the source code is readily available, a sneaky employee makes
+a few modifications to the server code that allows him to obtain user names
+and passwords.&nbsp; He recompiles the source and brings up the "rogue"
+help desk server.&nbsp; Since the "rogue" help desk server and the real
+help desk server both have similar SLP registerations, it is possible that
+clients may connect to the "rogue" server instead of the real one.&nbsp;
+When the users log in, the "rogue" server saves off a copies of user names
+and passwords.&nbsp; The malicious employee can use these user names and
+passwords later to impersonate other people.
+<p>In order to prevent this type of attack, SLP is designed so that services
+registrations and requests can be made with authentication information.&nbsp;&nbsp;
+When properly implemented, SLP requests can be issued that will only return
+registrations made by trusted services.&nbsp;&nbsp;&nbsp; With SLP Security
+enabled developers could trust that the service information returned by
+the SLP API&nbsp; (URLs and configuration information).&nbsp; They do not
+have to question (as much) whether the service at the other end of the
+provided URL is a rogue because SLP can guarantee that services have been
+"blessed" by administrators by virtue of key information.
+<br>&nbsp;
+<h3>
+SLP Security vs SLP Usability</h3>
+It is a well known fact that any increase in security inevitable reduces
+usability for the legitimate user.&nbsp; This is especially true with&nbsp;
+SLP security -- establishment of trust is unacceptable barrier to SLP usability.&nbsp;&nbsp;&nbsp;
+The whole reason for using SLP in the first place is to allow "plug and
+play" features to be built into applications!
+<p>Due to the lack of PKI standards, establishing the trust needed to ensure
+that service registrations can be authenticated would require manual distribution
+of key material.&nbsp;&nbsp; One solution would be to have the administrator
+verify the authenticity of a single SLP host key or certificate which would
+authenticate all services provided from a given host, but this would not
+prevent an attacker from masquerading services if they have access to the
+authenticated machine.&nbsp;&nbsp; A more secure approach is to provide
+per service or per user keys at the expense of increased manual intervention
+to establish authenticity of numerous keys or certificates.&nbsp;&nbsp;
+Wait... even with SLP secured, there is still the possiblity of DNS, DHCP
+or ARP spoofing, so you are still not secure.
+<p>After a few minutes of meditation it becomes evident that in order to
+be totally safe, applications need to establish the security of their own
+end to end communications.&nbsp; Two very good examples are PGP and SSH.&nbsp;
+Neither application makes any assumptions about the reliability of intermediate
+protocols.&nbsp; Everything is suspect from DNS to ARP.&nbsp;&nbsp; Suppose
+that a specialized application was written that used PGP encrypted messages
+to communicate.&nbsp;&nbsp; SLP is chosen to locate remote users of the
+same application.&nbsp;&nbsp;&nbsp; Now, assume that none of the SLP security
+features are implemented, is the application at risk?&nbsp; The answer
+is no because care was taken by the application developer to secure his
+own end to end communication.
+<br>&nbsp;
+<h3>
+IETF Workgroup (srvloc) Discussion</h3>
+The idea that authentication belongs in the application itself and not
+in the location protocol (or other intermediate protocols) was brought
+up for discussion on the IETF Service Location workgroup mailing list with
+the following post entitled "Theoretical SLP security discussion (long)":
+<blockquote><tt>SLPv2 is designed to be able to authenticate agents. In
+other words, SLPV2 can guarantee that SAs and DAs are trustworthy. With
+a proper SLPv2 implementation and installation, UAs can be sure that replies
+to SLP requests come from trustworthy agents. There is no need to wonder
+if a responding agent is representing malicious services. For example,
+with SLPv2 authentication, I can request a service of type "service:ldap"
+and implicitly trust that the service urls I receive in return are ldap
+servers that are considered trustworthy by whoever set up the SLP installations.</tt>
+<p><tt>Sounds pretty nice doesn't it -- at least until you start thinking
+about what is required to deliver key information (certificates) that makes
+trust relationships possible. I think I'm safe in saying that without exception,
+no automated delivery of key information is secure unless it requires actual
+validation by a human that results in some form of real-life action (phone
+call, hand delivery, etc).</tt>
+<p><tt>Administration of trust relationships are completely un-addressed
+by the SLPv2 and SLP API specs -- which is probably why authentication
+is considered an optional feature. One might even take the position that
+SLPv2 Authentication invalidates the SLP's claim to reduce administrative
+workload as there is no way to deploy secure SLP without significant (manual)
+administrative overhead to establish certificate or key information trust.</tt>
+<p><tt>In contemplating implementation and use of SLPv2 authentication
+in OpenSLP we found that there is nearly nothing in the way of standardized
+certificate delivery mechanisms that might actually make SLPv2 authentication
+possible. We did find bits and pieces from OpenSSL and various signing
+utilities, which lead us to start questioning why we were trying to authenticate
+services via SLP anyway? Why not just let services authenticate themselves?</tt>
+<p><tt>An analogy from real life... I need to call an associate and relay
+some confidential information. I write down his number as it was left on
+my voice mail and place the phone call. BEFORE I exchange sensitive information
+the individual on the other line, I authenticate their identity (recognize
+their voice, etc). Trusting the information available on my voice mail
+is not required (as the number may have be to an airport pay phone). Implicitly
+trusting a phone number from the white pages or any other source is not
+required (or expected) as long as the callers can authenticate themselves.</tt>
+<p><tt>Likewise, SLP delivered information need not be trusted to be useful.
+As long as the entity providing a service and the entity using the service
+can authenticate each other -- separate from the mechanism used to discover
+or locate one another. One problem is that many services do not have authentication
+capabilities -- which is not too much of a problem because most services
+don't have SLP capabilities either. In the end, the only problem is that
+developers are just beginning to write secure software. If secure service
+and client software were indeed available, there would not be any need
+for SLP authentication.</tt>
+<p><tt>Having not heard additional comment from other experts, it is my
+opinion the SLP need not bear the burden of authenticating services. The
+burden of authentication should be placed on the services and their clients
+rather than on a protocol valued for simplicity and ease of use, administration,
+and deployment.</tt>
+<p><tt>Please comment. Do you agree or disagree? Why?</tt>
+<br>&nbsp;</blockquote>
+Response from ebi@cup.hp.com:
+<blockquote><tt>My take on this would be that it needs to be implemented
+and the people deploying it should have the option of enabling/disabling
+it.</tt>
+<p><tt>Because if this is not implemented, I can see a potential denial
+of service attack, where a rogue SA/DA, keeps on responding to all the
+discovers sent by the UA. Even though the authentication might fail when
+the application tries to authenticate using other means. It can stop the
+UA from finding the correct SA/DA, there by creating a denial of service
+attack.</tt>
+<p><tt>On the other hand managing keys does make the protocol heavy weight.
+The problem of effective key management issue, needs to be solved for most
+other protocols (like DHCP) as well. Until then, we need</tt>
+<br><tt>to be doing the key management manually or use what openSSL uses,
+and when there is an optimum key management solution, we can integrate
+into that.</tt></blockquote>
+
+<p><br>Rebuttal from mpeterson@caldera.com:
+<blockquote><tt>I do not believe that the "denial of service" attack scenario
+described above is much of an issue.</tt>
+<p><tt>I think that it is worth clarifying that receiving incorrect information
+(service URLs of rogue services from rogue DA/SAs) is not a problem that
+involves the "SLP UA portion" of a client application. The problem you
+describe above involves the portions of the client application that *use*
+information delivered by SLP -- the "UA portion" is only in charge of *getting*
+the information not using it. In other words, the problem you describe
+above is an SLP usage problem not an SLP problem.</tt>
+<p><tt>Regardless of whether or not SLPv2 authentication is implemented
+and configured, client applications must not expect that SLP guarantees
+availability. SLP could not possibly be expected to guarantee the state
+of the network or the persistent state of the registered service. Suppose
+that a service registers with SLP just before a WAN outage. At least for
+a certain amount of time clients would experience the same "denial of service"
+symptoms you describe above. The real solution is to encourage developers
+to use the entire list of service URLs. If usage (connection to or authentication
+to) one service fails, the client application should try the next.</tt>
+<p><tt>Denial of service scenarios like the one you describe are impossible
+to prevent. The only protection against denial of service attacks is fear.
+Yes, security by fear. Remember, "SLP is intended to function within networks
+under cooperative administrative control."&nbsp; The above mentioned attack
+would be easy to detect, track and resolve; which means that it would not
+probably not be much of a problem in the environments SLP is written to
+run in (how many rogue DHCP servers do you see on your network).</tt>
+<p><tt>In private network environments, the security problems that you
+need to worry about are those that allow confidential data to be compromised
+(especially if it can be done in ways can not be detected.) Denial of service
+attacks to not compromise data.</tt>
+<p><tt>The argument from my original post is that even if SLP authentication
+was implemented and configured correctly with (magically) delivered certificates,
+there would still be significant service specific security risks that would
+be dangerous even in private networks. Upon close inspection SLP authentication
+appears to solve only those security problems that are not overly relevant
+to private networks in the first place. (Please, if I'm wrong here, give
+me some examples...)</tt>
+<p><tt>I agree fully that SLP without authentication is in the same realm
+(security wise) as DHCP. My question remains -- Is this really a problem
+in private networks? If so, why? DHCP continues to be a widely deployed
+and extremely useful technology. One of the most useful aspects of DHCP
+(and SLP) is that there is no need for extensive configuration. Add requirements
+for establishing trust (certificates, keys, etc.) and the "plug and play"
+features of DHCP and SLP are gone.&nbsp; As this is a "theoretical discussion"
+I might mention that security is not free. There is always a usability
+vs. security trade off. I might also mention that sometimes *lack of* security
+is a feature if the goal is usability.</tt></blockquote>
+
+<p><br>Response from ebi@cup.hp.com:
+<blockquote><tt>Let me give you another example. If I have a workstation
+on the shared lan where my manager's PC is also there. Some companies restrict
+root access to people on the main network. So I cannot sniff around to
+find password. If there is no security in SLP, then&nbsp; I can register
+one of the test machines, which would be in a different network (for which
+I have the root access to) as the pop server. Then I get the user name
+and password of my manager's pop account (The same thing can be done for
+a print spooler or a file server).</tt></blockquote>
+Rebuttal from mpeterson@caldera.com:
+<blockquote><tt>Again, Don't you think this is more an illustration of
+the weakness of POP3 protocol and mail server/client software than it is
+of SLP? I would argue that its is that POP3 needs the security boost --
+after all it is in the business of securing an end to end communication.
+SLP is not designed to solve the end-to-end authentication problem ...
+or is it?</tt>
+<p><tt>On the other hand, you do allude to a very valid point -- that most
+traditional and widely deployed "end-to-end" service specific protocols
+and software are not capable of secure service authentication. (It is usually
+possible authenticate the user, but client software can rarely authenticate
+the server which means that there is no establishment of trust before sending
+client side user credentials.)</tt>
+<p><tt>Should SLP be tasked with solving this problem? The answer is definitely
+YES if it can be done without completely squashing major SLP usability
+features ("plug and play" features). I guess I just don't see how this
+can be done.</tt></blockquote>
+
+<p><br>The discussion eventually involves several engineers from a number
+of organizations and becomes quite lengthy.&nbsp;&nbsp; At least, the exchange
+included above should give a taste of the arguments involved.&nbsp; For
+those that are interested in reading the entire thread, it can be found
+at <a href="http://www.srvloc.org/hypermail/0826.html">http://www.srvloc.org/hypermail/0826.html</a>
+<br>&nbsp;
+<h3>
+Conclusions</h3>
+For those that are not willing to endure the tedium of reading the entire
+mailing list discussion,&nbsp; the conclusion was eventually made (at least
+by the author) that though SLP authentication may be&nbsp; appropriate
+in some specialized SLP deployments, it is probably not beneficial in normal
+network computer environments.&nbsp;&nbsp;&nbsp; This conclusion is based
+on the following premises:
+<ul>
+<li>
+Implementation of SLP authentication in the absence of public key infrastructure
+standards would require enough manual configuration to invalidate all claims
+SLP has to increased usability.</li>
+
+<li>
+Common helper protocols DNS, DHCP, IP, even ARP are currently insecure
+for usability reasons.&nbsp;&nbsp; SLP fits into this category of protocols
+where lack of security may be considered a feature when it allows for maximal
+usability.</li>
+
+<li>
+Given the lack of security in the above mentioned (and other) protocols
+self-established authentication of end to end communication is required
+anyway for secure communication of network software entities.</li>
+
+<li>
+In the presence of appropriate end to end security mechanisms,&nbsp; SLP
+related security attacks are limited to the realm of "denial of service"
+or "disruptions" -- even when <i>no</i> authentication is implemented in
+SLP.&nbsp;&nbsp; In other words there is not a risk of compromise of confidential
+information that can be attributed to SLP as long as appropriate end to
+end security is established.</li>
+</ul>
+So, for the OpenSLP project, there are not any plans to implement SLPv2
+security.&nbsp;&nbsp; (This may change in the future depending on the success
+of ongoing PKI standardization efforts.)&nbsp;&nbsp; There are, however,
+many things that could be done to reduce opportunities for "denial of service
+attacks" or other malicious SLP related disruptions.&nbsp;&nbsp; These
+will be addressed in future versions of OpenSLP.&nbsp;&nbsp;&nbsp;&nbsp;
+Also, in order to inform developers about the importance of writing secure
+applications, plans have been made to include an SLP&nbsp;Security HOWTO
+as part of the OpenSLP&nbsp;Documentation.
+</body>
+</html>
diff --git a/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/smalllogo.jpg b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/smalllogo.jpg
new file mode 100644
index 00000000..c7a03694
--- /dev/null
+++ b/debian/openslp-dfsg/openslp-dfsg-1.2.1/doc/html/ProgrammersGuide/smalllogo.jpg
Binary files differ