Subject: Freely Distributable Implementation of SLPv2 Available

From: James Kempf <[email-masked]>
Date: Mon, 29 Nov 1999 09:06:06 -0800 (PST)

A freely distributable, C language implementation of SLPv2 for Solaris, Win95, 
and Linux is available. The code can be downloaded through the following
URL:

           http://www.sun.com/research/slp/
           
The implementation includes a UA and SA conformant with RFC 2608 and a C API 
conformant with RFC 2614. The implementation was done by Erik Guttman, the 
README file is attached. This implementation is Version 1.0 of the previous 
mini-slp implementation by Erik, comments, questions, bug reports, etc.
should be directed to Erik.

The license under which this implementation is being distributed is
new, and is part of Sun's program to increase public distribution
of Sun source code, in line with the industry movement toward open source.
Unlike GPL or Open Source(TM) licenses, however, you incur no obligation
to distribute source code or modifications should you decide to 
incorporate this code into a product. The license is explicitly designed
that way so that the code can act as a reference implementation of
SLP for those parties that would like to incorporate SLP into products
but don't want to develop it from scratch and don't want to distribute
source for their products. So this version is free for commercial as well as 
noncommercial use, unlike the previous version. The only restriction the
license makes is that a party using the code can't make minor changes
and then claim them as intellectual property, nor can the code be modified
such that it is no longer conformant with standard SLP, as defined
in RFC 2608, 2609, and 2614. These restrictions are designed to prevent
a party from making proprietary changes to the protocol or API and
then trying to relicense them to others (including Sun) by claiming
the modifications as significant intellectual property. However, the
license is new and we are as yet unsure if it is worded in such a
way that it subtly or unsubtly raises other issues that would make
people less likely to use the code in products. We welcome any 
comments on the license.

By releasing this implementation, we hope to jumpstart SLP development
and deployment in products that could benefit by the technology.

			jak

README -  Mini SLP 1.0   Release                               Erik Guttman
                                                     Sun Microsystems, Inc.

Version: 1.6
Date:    10/05/99

---------------------------------------------------------------------------

The documentation for the Mini Service Location Protocol, v2 release
is located in the 'doc' subdirectory, starting at ./doc/index.html.

The license for this release is included, see the file ./doc/license.html.

---------------------------------------------------------------------------

This release will not be supported.  

That being said, more releases are likely and these may include bug 
fixes.  Licensees of this software are strongly encouraged to report 
defects as they are discovered.  Suggested fixes will be warmly 
welcomed as well as enhancement code from contributors.

This is not a feature complete release:

   * UTF-8 string support has not been added. 

   * SLP security has not been implemented.

These features may be supported in a subsequent release.  Other than
that, this is a pretty full implementation of 

   RFC 2608     SLPv2
   RFC 2609     Service schemes & service URLs
   RFC 2614     API for Service Location

---------------------------------------------------------------------------
Changes from previous release:

  1. Support for SLPReg and SLPDereg has been added.  SLPDelAttrs
     is still unsupported.  In order to use these functions, the
     mslpd must be running.  The client programs acquire a lock which
     mslpd created and write a file with the merged registrations
     (previous registrations plus the new registered or deregistered
     information).  The mslpd server reads the new file and uses this
     as its state.  This is not very sophisticated.  (When any registration
     changes, *all* of the services are forwarded to the correct DAs.
     Further, mslpd has no idea *which* service changed, so it makes
     no effort to *age out* registered entries.  

  2. Service lifetimes are correctly returned in service replies and
     send to DAs in Service Registration messages.

  3. Improved support for SLP properties (see RFC 2614 and mslpd.c for
     the comments at the top of the source file.)

  4. It is now possible to start up mslpd without a registration file.
     If a registration file is used, mslpd uses this to initialize the
     shared state file.  The registration file itself is not modified
     by operation of SLP clients and mslpd interprocess communication.

  5. Minor bugs in service reply were fixed.

  6. mslplib_regipc_test was added to the test suite.

---------------------------------------------------------------------------
Release Notes:

  The included documentation describes how to build, configure and run the
  software in this release.  Further documents are provided as an intro-
  duction to the Service Location Protocol.  Some of the included documents
  are not complete.

  The following defects are known:

    + The setsockopt() call to set the multicast radius and multicast
      interface fails on Windows NT fails.  As a result, the NT 
      implementation currently only multicasts on the same subnet.
      This is due to the use of Winsock 1.  A future version may use
      Winsock 2.

    + The targets of the Unix Makefiles must be explicitely built, ie.
      On Solaris, use 
        % make
        then
        % make mslpd

      On Linux, use
        % make
        then
        % make test

    + Query strings with tabs (0x0b) and other control characters cause
      the query parser to get confused and return Parse Errors.  These
      strings should be escaped if they are part of the value (in this
      case everything works fine).  Strictly speaking this is illegal to
      send over the wire but my negative testing caught this bug. 

  Careful:

    + If the SA responding to the libslp's queries is slow (or there is
      network latency) it is possible for the libslp to have two out-
      standing requests, where the second does not have the slow SA
      on the previous responder's list.  This means that the libslp
      will receive multiple copies of replies from the SA.  For that
      reason, callback functions registered with SLPFindSrvs should be
      written to be able to handle duplicate results.

    + Don't configure an mslpd on host x with "net.slp.DAAddresses=x"
      The mslpd will get very confused trying to forward its advertisements
      to itself.

    + If corrupt strings are used in SLPReg calls, it could corrupt the
      shared registration state.  This could cause the mslpd to fail to
      read the new data.  In this case, the mslpd will continue to adver-
      tise the previously registered services.  Note that future 
      registrations and deregistrations may fail as well due to, for 
      example:

         1) a service URL without a ":/" separating the scheme and 
            address part
         2) a poorly formatted attribute string

  Enhancements which are most likely to occur in a later release:

    + Support for UTF-8 strings.

    + Size reduction of mslpd and mslplib.
 
    + Enhancements to the UA (mslplib) DA discovery - active DA discovery
      should be done every few minutes when SLPFindSrv is called and no DA 
      is known. 

    + A 'micro SLP' target which includes only the most essential functions.
      Mini SLP has grown to be pretty much full SLP implementation, so it
      isn't so slim any more.  Still, if you do not #define SLPTCP and
      EXTRA_MSGS then most of the optional parts are omitted.

---------------------------------------------------------------------------

---

From: Terry Lambert <[email-masked]>
Date: Mon, 29 Nov 1999 14:18:16 -0800

James Kempf wrote:
> 
> A freely distributable, C language implementation of
> SLPv2 for Solaris, Win95, and Linux is available. The
> code can be downloaded through the following URL:
> 

[ ... ]

> The license under which this implementation is being
> distributed is new, and is part of Sun's program to
> increase public distribution of Sun source code, in
> line with the industry movement toward open source.

The license you describe above is on the page you must
agree to in order to obtain the code.

The license.html in the mslp10.tar.gz contained in the
file mslp10/doc/license.html is _NOT_ the same.

Can you please correct the license in the distribution
so that it matches the one you have to agree to to
download the code?  I know this wasn't an intentional
"bait and switch", but it would be nice if the licenses
actually matched.

Also, the license you have to go through contradicts
itself in both allowing, in section 1, the distribution
of unmodified binaries derived from the source code,
and in a later section (4?) disallowing the same thing.

Thanks,

-- Terry Lambert
-- Whistle Communications, Inc., an I.B.M. Company
-- [email-masked]
-------------------------------------------------------------------
This is formal notice under California Assembly Bill 1629, enacted
9/26/98 that any UCE sent to my email address will be billed $50
per incident to the legally allowed maximum of $25,000.