From: donh@gcx1.ssd.csd.harris.com (Don Holzworth)
Newsgroups: comp.unix.internals
Subject: Re: if(7) network driver info needed
Date: 16 Dec 92 15:42:55 GMT
Reply-To: donh@gcx1.ssd.csd.harris.com (Don Holzworth)
Distribution: ssd
Organization: Harris Computer Systems Division, Fort Lauderdale, FL
NNTP-Posting-Host: gcx1.ssd.csd.harris.com

In article <1992Dec15.220621.15826@spectrum.xerox.com>, collins.escp10@xerox.com (Anthony Collins) writes:
|> In article 6590@sfu.ca, tdyck@fraser.sfu.ca (tReVoR) writes:
|> > I am developing a STREAMS device driver under Microport Unix SVR4 on a
|> > 486 machine.  The driver is for a network card (ISDN).
|> > 
        (Stuff deleted)  
|> > 
|> > In the manual page for if(7), it says that "network interfaces used by the
|> > Internet Protocol (IP) must be STREAMS devices conforming to the Datalink
|> > Provider Interface (DLPI)."  Does anyone know what the DLPI is and where
|> > more information can be found about it?
|> > 
                (More stuff deleted)
|> 
|> [Back to my words now]This document describes an interface between the data link
|> layer and the network layer in the OSI seven layer model.  I got the specification
|> from its publisher, Unix International, for free.  You can call Unix International
|> at 1-800-848-6495 or 1-201-263-8400.  Their address is:
|> 
|> Unix International
|> Worldwide Headquarters
|> Waterview Corporate Centre
|> 20 Waterview Boulevard
|> Parsippany, NJ 07054
|> U.S.A.
|> 
|> The specification gives a thorough description of the interface, but it doesn't do
|> much to tell how to use the interface (i.e. when certain calls should be made or
|> expected, etc.)  It serves as a good reference manual if you already have a good idea
|> on how the network layer should connect to the data link layer.  I don't know of any
|> books that specifically explain this interaction, but any good computer networking 
|> book that references the OSI 7 layer model should.
|> 
|> Hope this helps,
|> 
|> ---
|> Anthony Collins
|> Xerox Corporation
|> Internet: collins.escp10@xerox.com
|> 
|> 

Please also note the version of DLPI. The latest is 2.0, however
any current IP implementation is probably coded to 1.3. Actually,
it's probably coded to 1.2 and 1.3 is just a release that
corrected typos in the documentation. 

As for what you do, the first thing a data link layer device driver
writer must decide is if the driver is a style 1 or style 2 driver.
Style 1 uses the minor number to choose a physical interface,
while style 2 uses a specific DLPI command (attach) to choose the
interface. Assuming a style 2 provider, the commands the
user would issue are:
   open
   bind
   attach
   dlunitdata_req  (for IP which uses connectionless link layer)

Of course, a dl_info_req may be thrown in at any time.

The real problem with writing the driver is knowing what ioctl commands
the network layer (IP) is going to send. For that you need info from
the IP developer, or maybe you can just look at the include files (I've
done that successfully, once).

Good Luck,
------------------------------------------------------------------------------
 #####    ####   #    #  #    #    |  Don Holzworth
 #    #  #    #  ##   #  #    #    |  Harris Computer Systems Division
 #    #  #    #  # #  #  ######    |  2101 W. Cypress Creek Rd.
 #    #  #    #  #  # #  #    #    |  Ft. Lauderdale, Fl. 33309
 #    #  #    #  #   ##  #    #    |  (305) 977-5563
 #####    ####   #    #  #    #    |  e-mail: donh@travis.csd.harris.com
                                   |
                  "Sow the wind, reap the whirlwind."
------------------------------------------------------------------------------
Xref: sparky comp.unix.internals:2065 comp.sources.wanted:5424