Network Layer Interface (NLI)
Description: OpenSS7 Project Manual Pages Operating System
NLI
Section: Network Layer Interface (NLI) (7)
Updated: 2008-10-31
Index
Return to Main Contents
NAME
NLI, nli
- Network Layer Interface (NLI)
SYNOPSIS
#include <errno.h>
#include <sys/types.h>
#include <sys/stropts.h>
#include <stdint.h>
#include <netx25/x25_proto.h>
#include <netx25/x25_control.h>
#include <sys/snet/x25_proto.h>
#include <sys/snet/x25_control.h>
DESCRIPTION
The Network Layer Interface (NLI) is a service primitive interface to the X.25
Packet Layer Protocol (X25-PLP) developed by Spider Systems, Ltd. (now part of
Emmerson Power) for use by applications in controlling X.25 Packet Layer
Protocol software. The service primitive interface was widely used on
VxWorks, other embedded RTOS,
AIXlink/X.25[1],
HP-UX X.25[2],
IRIS SX.25[3],
Sun Microsystems SunLink starting with version 8.0 and Solstice X.25[4],
PT X.25[5],
SBE X.25[6],
RadiSys WAN[7],
and other mainstream UNIX operating systems and embedded systems for
communications.
The interface is not provided as a programming library, as is XTI, but as
defined service primitives to be exchanged with the X.25 PLP driver using
standard STREAMS
getpmsg(2s)
and
putpmsg(2s)
system calls. Although a user level library could be easily constructed from
these service primtives, in the same way that XTI was built from TPI, it does
not seem to have happened and applications appear to have wound up using the
NLI directly.
OpenSS7 X.25 Networking
and other OpenSS7 applications, drivers and modules provide primarily a
Network Provider Interface (NPI)[8],
npi(7),
for devices at this level; however, a compatibility module,
s_nli(4),
is provided to convert between NPI and SpiderX.25 NLI interface for the purposes
of porting SpiderX.25 compatible applications, drivers and modules to
Linux.
ADDRESSES
In call requests and responses, it is necessary to specify the X.25 addresses
associated with the connection. These addresses consist of the called, calling
and responding addresses. A common structure is used for these addresses. The
addressing format used by this stricture provides the following information:
- *
- the subnetwork (data link) on which outgoing Connect Requests are to be
sent and on which incoming Connect Indications arrive;
- *
- Network Service Access Points (NSAP) and Subnetwork Point of Attachments
(SNPA), or Data Terminal Equipment (DTE) addresses and Link Service Access
Points (LSAP); and,
- *
- optional formats for the encoding of addresses (NSAP).
Addresses are represent using an xaddrf structure. The xaddrf
structure is formatted as follows:
#define NSAPMAXISZE 20
struct xaddrf {
union {
uint32_t link_id;
uint32_t sn_id;
};
unsigned char aflags;
struct lsapformat DTE_MAC;
unsigned char nsap_len;
unsigned char NSAP[NSAPMAXSIZE];
};
- link_id
- Holds the link number as a uint32_t. By default, link_id has a
valud of 0xFF. When link_id is 0xFF, Solstice
X.25 attempts to match the valled address with an entry in a routing
configuration file. If it cannot find a match, it routes the call over the
lowest numbered WAN link.
- sn_id
- The subnetwork identifier, selected by the system administrator. It
identifies the subnetwork required for a Connect Request, or on which a
Connect Indication arrived. The
sn_id
field holds a representation of the one byte string subnetwork identifier as
an unsigned long. The X.25 library routine
snidtox25(3)
can be used to conver the character subnetwork identifier to an unsigned long.
-
Note that in some implementations, the sn_id field is
declared as unsigned long; however, this causes complications for 32-bit
applications running over a 64-bit kernel: i.e., it requires that the data model
of the application be known to the kernel module and conversions be supported.
Therefore, this field appears in the header file as the 32- vs. 64-bit agnostic
uint32_t.
- aflags
- Specifies the options required (or used) by the subnetwork to encode and
interpret addresses. It may have one of the following values:
-
NSAP_ADDR | 0x00 | NSAP is OSI-encoded NSAP address.
|
EXT_ADDR | 0x01 | NSAP is non-OSI-encoded extended address.
|
PVC_LCI | 0x02 | NSAP is a PVC number.
|
PVC_LCI | 0x02 | DTE_MAC is the LCI of a PVC.
|
When the NSAP field is empty, aflags takes the value zero
(0).
See
x25addr(5),
stox25(3),
x25tos(3),
and
gexhostent(3),
manual pages for details about the X.25 address format.
- DTE_MAC
- The DTE address, or LSAP as two BCD digits per byte, right justified, or the
PVC_LCI as three BCD digits with two digits per byte, right
justified.
Holds the DTE address, the Medium Access Control plus Service Access Point
(MAC+SAP) address or the LCI. This is binary. The lsapformat structure
is define below.
- nsap_len
- This indicates the length of the NSAP, if any (and where appropriate), in
semi-octets.
- NSAP
- This carries the NSAP or address extension (see field
aflags)
when present as indicated by
nsap_len.
This is binary.
#define LSAPMAXSIZE 9
struct lsapformat {
unsigned char lsap_len;
unsigned char lsap_add[LSAPMAXSIZE];
};
The fields in the
lsapformat
structure are defined as follows:
- lsap_len
- This gives the length of the DTE address, the MAC+SAP address, or the LCI in
semi-octets. For example, for Ethernet, the length is always 14 to indicate
the MAC (12) plus SAP (2). The SAP always follows the MAC address. The DTE
can be up to 15 decimal digits unless X.25(88) and TOA/NPI (Type Of
Address/Numbering Plan Identification) addressing is being used, when it can
be up to 17 decimal digits. For an LCI the length is 3.
- lsap_add
- This holds the DTE, MAC+SAP or LCI, when present, as indicated by
lsap_len.
This is binary.
QUALITY OF SERVICE
Negotiable X.25 facilities are supported by the PLP driver. This section
describes the request and negotiation of these facilities, and the data
structures used by the NLI primitives.
The facilities are broken down into two groups:
- 1.
- those required for Connection-Oriented Network Service (CONS) support, and
- 2.
- those requried for non-OSI procedures (X.29, for example).
The CONS quality of service (QOS) parameters supported are the following:
- *
- Throughput Class
- *
- Minimum Throughput Class
- *
- Target Transit Delay
- *
- Maximum Acceptable Transit Delay
- *
- Use of Expedited Data
- *
- Protection
- *
- Receipt Acknolwedgement
The CONS quality of service structure used in NLI primitives is described in
qosformat(5).
Non-OSI X.25 Facilities are supported as follows.
Although these are non-OSI facilities, they are also negotiable with CONS. For
those NLI applications that require them, the non-OSI facilities supported are
as follows:
- *
- non-OSI extended addressing;
- *
- X.25 fast select request/indication with no restriction on response;
- *
- X.25 fast select reqeust/indication with restriction on response;
- *
- X.25 reverse charging;
- *
- X.25 packet size negotiation;
- *
- X.25 window size negotiation;
- *
- X.25 network user identification;
- *
- X.25 recognized private operating agency selection;
- *
- X.25 closed user groups;
- *
- X.25 call deflection; and,
- *
- X.25 programmable facilities.
The X.25 quality of service structure used in NLI primitives is described in
extraformat(5).
PRIMITIVES
The primtives provided by the Network Layer Interface are as follows:
Prim./Manpage | Structure | Description
|
|
N_CI(7) | xcallf | Connect Request/Indication.
|
N_CC(7) | xccnff | Connect Response/Confirmation.
|
N_Data(7) | xdataf | Data.
|
N_DAck(7) | xdatacf | Data Acknowledgement.
|
N_EData(7) | xeadataf | Expedited Data.
|
N_EAck(7) | xedatacf | Expedited Data Acknowledgement.
|
N_RI(7) | xrstf | Reset Request/Indication.
|
N_RC(7) | xrscf | Reset Response/Confirmation.
|
N_DI(7) | xdiscf | Disconnect Request/Indication.
|
N_DC(7) | xdcnff | Disconnect Confirmation.
|
N_Abort(7) | xabortf | Abort Indication.
|
N_Xlisten(7) | xlistenf | Listen Request/Response.
|
N_Xelisten(7) | xlistenf | Extended Listen Request/Response.
|
N_Xcanlis(7) | xcanlisf | Listen Cancel Request/Response.
|
N_PVC_ATTACH(7) | pvcattf | PVC Attach.
|
N_PVC_DETACH(7) | pvcdetf | PVC Detach.
|
|
Each primitive is documented in its own manual page.
IOCTLS
The input-output controls provided by the Network Layer Interface are as
follows:
Each input-output control is documented in its own manual page.
NOTICES
The Spider Network Layer Interface (NLI) is a proprietary interface without
a formal standard (although its widespread use makes it an ipso
facto standard). The Network Provider Interface (NPI)[8],
npi(7),
should be used in its stead.
BUGS
The
OpenSS7 X.25 Networking
implementation of the NLI has no known bugs.
SEE ALSO
getpmsg(2s),
putpmsg(2s),
x25(4),
s_npi(4),
npi(7),
STREAMS(9).
COMPATIBILITY
The
NLI
interface is compatible with SpiderX25,
and implementations based on SpiderX25, such as
AIXlink/X.25[1],
HP-UX X.25[2],
IRIS SX.25[3],
Solstice X.25[4],
PT X.25[5],
SBE X.25[6],
RadiSys WAN[7],
and others, with the following portability considerations:
- ---
- Many implementations of SpiderX.25 used under license have deviated from binary
compatibility with the original interface specifications, both in the form and
style of primitives and in the form of input-output controls supported.
-
Many implementations also provide their own extensions to the interface which
are incompatible with all other implementations. May of these extensions are
purportedly in support of vendor-specific hardware, or systems.
OpenSS7 X.25 Networking
attempts to maintain source compatibilty with the core features provided
by most implementations, but compatibility with all features of all
implementations is not possible.
Your mileage may vary.
- ---
- OpenSS7 X.25 Networking
provides a core source compatible implementations of the SpiderWAN
interface for the purposes of porting legacy NLI applications, drivers and
modules to Linux with a minimal porting effort.
While source compatibility with core features is attempted, binary
compatibility is not attempted. Any binary compatibility experienced could be
broken in a subsequent release.
-
New applications should use the Network Provider Interface (NPI)[8],
npi(7),
instead.
For additional compatibility considerations, see
x25(4),
s_nli(4),
s_npi(4),
npi(7),
STREAMS(9).
CONFORMANCE
This interface conforms in its core features to the NLI as documented in
AIXlink/X.25[1],
HP-UX X.25[2],
IRIS SX.25[3],
Solstice X.25[4],
PT X.25[5],
SBE X.25[6],
RadiSys WAN[7],
documentation.
HISTORY
The Network Layer Interface first appeared in SVR 4[9].
REFERENCES
- [1]
- AIXlink/X.25,
AIXlink/X.25 Version 2.1 for AIX: Guide and Reference, Eigth Edition, September 2005, (Boulder, Colorado), Internatonal Business Machines Corp., IBM.
[SC23-2520-07]
<http://publibn.boulder.ibm.com/>
- [2]
- HP-UX® 11i v2,
HP-UX 11i v2 Documentation, 2001, (Palo Alto, California), Hewlett-Packard Company, HP.
<http://docs.hp.com/>
- [3]
- IRIX® SX.25,
SX.25 NLI Programming's Guide, 1994, (Mountainview, California), Silicon Graphics, Inc., SGI Technical Publications.
[Doc. No: 007-2268-002]
<http://techpubs.sgi.com/>
- [4]
- Solstice® X.25,
Solstice® X.25 9.2 Programming Guide, October 1999, (Palo Alto, California), Sun Microsystems, Inc., Sun.
[Part No: 806-1235-10]
<http://docs-pdf.sun.com/>
- [5]
- PT X.25,
X.25 Protocol User's Manual, 2007, (Rochester, New York), Performance Technologies Inc., PT.
- [6]
- SBE X.25,
SBE X.25 Protocol Manual, 2003, SBE, SBE.
- [7]
- RadiSys WAN,
ARTIC STREAMS Support WAN Driver Interface Reference, Release 1.7, June 2004, (Hillsboro, OR), RadiSys Corporation, RadiSys.
[Doc No: 007-01232-0003]
<http://www.radisys.com/>
- [8]
- NPI,
Open Group CAE Specification:
Network Provider Interface (NPI) Specification, Revision 2.0.0, Draft 2, August 17, 1992, (Parsippany, New Jersey), UNIXInternational,Inc., UNIX International Press.
<http://www.openss7.org/docs/npi.pdf>
- [9]
- SVR 4,
UNIX® System V Release 4 Programmer's Manual, 1990, (Englewood Cliffs, New Jersey), AT&T UNIX System Laboratories, Inc., Prentice Hall.
TRADEMARKS
- OpenSS7tm
- is a trademark of OpenSS7 Corporation.
- Linux®
- is a registered trademark of Linus Torvalds.
- UNIX®
- is a registered trademark of The Open Group.
- Solaris®
- is a registered trademark of Sun Microsystems.
Other trademarks are the property of their respective owners.
IDENTIFICATION
-
OpenSS7 X.25 Networking: Package strx25 version 0.9.2.1 released 2008-10-31.
Copyright©1997-2008OpenSS7 Corp.
All Rights Reserved.
(See roff source for permission notice.)
Index
- NAME
- SYNOPSIS
- DESCRIPTION
- ADDRESSES
- QUALITY OF SERVICE
- PRIMITIVES
- IOCTLS
- NOTICES
- BUGS
- SEE ALSO
- COMPATIBILITY
- CONFORMANCE
- HISTORY
- REFERENCES
- TRADEMARKS
- IDENTIFICATION
This document was created by
man2html,
using the manual pages.
Time: 17:45:38 GMT, December 12, 2024