DLrecv(3dlpi) DLrecv(3dlpi)
NAME
DLrecv - identify packet frame format
SYNOPSIS
DLrecv(mblk_t *mp, DL_sap_t *tsap)
Parameters
mp pointer to a STREAMS message block containing the
packet.
tsap pointer to the table of SAPs corresponding to the
interrupting board.
DESCRIPTION
DLrecv() parses every incoming packet to identify the frame
format and hands over the packet to the first valid SAP.
The first step involves identifying the frame format. If the
length field of the frame is greater than DL_MAX_PACKET then
the frame format is Ethernet V2.0 (DL_ETHER) else the frame
format is IEEE802.3 (DL_CSMACD). The definitions DL_ETHER and
DL_CSMACD are used not only to identify the different type of
SAPs but also the frame formats of the incoming packets.
If the packet type is DL_ETHER, then the length field
represents the protocol type (eg: 0x800 for IP). All valid
DL_ETHER SAPs are searched to identify the first SAP whose
sap_addr value equals the protocol type.
A DL_CSMACD packet presents additional complications. The
802.2 header is parsed to identify the destination SAP(dsap).
The following set of rules are applied to determine the valid
SAP that receives the packet:
If the dsap is LLC_GLOBAL_SAP (0xff) then the first
DL_CSMACD sap that is not a RAW SAP or SNAP SAP gets it.
If the dsap is not LLC_GLOBAL_SAP, then the first
DL_CSMACD SAP whose sap_addr equals the dsap receives
the packet.
If the dsap equals SNAPSAP (0xaa), the SNAP header is
parsed and the first DL_CSMACD SAP that is also a SNAP
SAP and whose snap address values equal the
corresponding values of the incoming packet, receives
the packet.
Copyright 1994 Novell, Inc. Page 1
DLrecv(3dlpi) DLrecv(3dlpi)
Finally the packet is handed to any RAW sap that exists
on the list of valid SAPs.
Response
none
Layer
Hardware Independent.
REFERENCES
Hardware Independent Layer Functions Called
DLrsrv()
Copyright 1994 Novell, Inc. Page 2