STREAMS Data Link Interface (Dell SVR4)

STREAMS Data Link Interface (Dell SVR4)

Post by Ed Men » Tue, 21 Jul 1992 11:00:39

I'm using Dell Unix (SVR4) on a 386 and am trying to write a
user-level program which can access all ethernet packets received by
my host.  I talked to Dell technical support and they pointed me at an
ethernet device file which they said provided such access via a
STREAMS interface.

I haven't made much use of STREAMS before, so please let me know if
this question itself doesn't make sense.

After reading some of the SVR4 STREAMS documentation and poking around
some header files, I'm guessing that this ethernet device file
probably uses the STREAMS "Data Link Provider Interface," but I can't
find a description of this interface beyond a header file which
defines some DLPI structures.  The SVR4 STREAMS book has some
examples, but I think they're using a different interface than DLPI.

Does a description of the DLPI exist?  Is it somewhere in the SVR4
documentation or man pages or is there some third-party documentation
I should be looking at?

Thanks for any help,

Ed Menze


STREAMS Data Link Interface (Dell SVR4)

Post by Robert Withr » Wed, 22 Jul 1992 05:55:57

Please add this to the FAQ:

Q: What is DLPI.  Where is the documentation.  How do I use it?

A: The Data Link Provider Interface is a proposed interface
standard for access to Data Link Services.  It is intended to be
a ``kernel level instantiation of the ISO Data Link Service
Definition''.  Higher level protocols use DLPI to use various
data link providers, such as Ethernet, X.25, SDLC, etc.

The version of DLPI used in SVR4.0.3.0 is less than the current
version of the DLPI standard (currently, V2.0), but the two are
supposed to be *binary* compatible.  The are *not* source compatible.
I don't know what version of DLPI later versions of SVR4 use.  DLPI
is a refinement of an earlier standard (Link Level Interface, LLI).

DLPI works by defining the contents of M_PROTO and M_DATA blocks
sent to and received from a DLPI streams driver.  These can be
generated/consumed by using the putmsg/getmsg system calls, or they
may be generated/consumed from higher level protocol modules.  It is
likely you can access most data link providers (provided by the OS)
without detailed documentation describing the *particular* providers
you use, but details such as determining the correct addressing
(SAP and PPA) are likely to be troubling if you work only from a
.H file.  I am told that the SVR4.0.3.0. ethernet driver uses
non-standard IOCTL's and other *magic* which may make using it
particularly difficult if you don't have good documentation for it.
This last may be aprochryphal; I have not written code to use this
specific device.

You may contact Unix International to obtain more information about
DLPI: Tel: +1 201 263 8400.  Fax +1 201 263 8401.

 Robert Withrow, R.W. Withrow Associates, Swampscott MA 01907 USA