Links

GitHub

Open HUB

Quick Links

Download

STREAMS

SIGTRAN

SS7

Hardware

SCTP

Related

Package

Manual

Manual Pages

References

Conformance

Documentation

FAQ

OS

LDL

strinet

strsctp

DDI/DKI

STREAMS

Kernel

XTI

SOCKSYS

Sockets

TPI

NPI

DLPI

CDI

NLI

LLI

WAN

Man Pages

Applications

SS7 Stack

ISDN Stack

SIGTRAN Stack

VoIP Stack

MG Stack

SS7/ISDN Devices

IP Transport

Embedded Systems

OS

Documentation

FAQ

SIGTRAN

Design

Conformance

Performance

References

Man Pages

Manuals

Papers

Home

Overview

Status

Documentation

Resources

About

News

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_ADDR0x00NSAP is OSI-encoded NSAP address.
EXT_ADDR0x01NSAP is non-OSI-encoded extended address.
PVC_LCI0x02NSAP is a PVC number.
PVC_LCI0x02DTE_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./ManpageStructureDescription

N_CI(7)xcallfConnect Request/Indication.
N_CC(7)xccnffConnect Response/Confirmation.
N_Data(7)xdatafData.
N_DAck(7)xdatacfData Acknowledgement.
N_EData(7)xeadatafExpedited Data.
N_EAck(7)xedatacfExpedited Data Acknowledgement.
N_RI(7)xrstfReset Request/Indication.
N_RC(7)xrscfReset Response/Confirmation.
N_DI(7)xdiscfDisconnect Request/Indication.
N_DC(7)xdcnffDisconnect Confirmation.
N_Abort(7)xabortfAbort Indication.
N_Xlisten(7)xlistenfListen Request/Response.
N_Xelisten(7)xlistenfExtended Listen Request/Response.
N_Xcanlis(7)xcanlisfListen Cancel Request/Response.
N_PVC_ATTACH(7)pvcattfPVC Attach.
N_PVC_DETACH(7)pvcdetfPVC Detach.

Each primitive is documented in its own manual page.

IOCTLS

The input-output controls provided by the Network Layer Interface are as follows:

Ioctl/ManpageStructureDescription

N_snident(7)xll_regIdentify subnetwork.
N_snmode(7)snoptformatAdjust subscription mode.
N_snconfig(7)wlcfgConfigure data link.
N_snread(7)wlcfgRead data link configuration.
N_getstats(7)(array)Get global stats.
N_zerostats(7)(array)Zero global stats.
N_putpvcmap(7)pvcmapfPut a PVC map.
N_getpvcmap(7)pvcmapfGet a PVC map.
N_getVCstatus(7)vcstatusfGet VC stats.
N_getnliversion(7)nliformatGet NLI version.
N_traceon(7)Turn tracing on.
N_traceoff(7)Turn tracing off.
N_nuimsg(7)Network user info message.
N_nuiput(7)nui_putPut ntwk user info.
N_nuidel(7)nui_delDelete ntwk user info.
N_nuiget(7)nui_getGet ntwk user info.
N_nuimget(7)nui_mgetMultiple get ntwk user info.
N_nuireset(7)nui_resetReset ntwk user info.
N_zeroVCstats(7)vcstatusfZero
N_putx32map(7)Put X.32 map.
N_getx32map(7)Get X.32 map.
N_getSNIDstats(7)persnidstatsGet per-subnet stats.
N_zeroSNIDstats(7)persnidstatsZero per-subnet stats.
N_setQOSDATPRI(7)qosdatpriSet QoS data priority.
N_resetQOSDATPRI(7)Reset QoS data priority.

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: 09:30:42 GMT, November 12, 2014
Last modified: Sat, 01 Nov 2008 14:12:38 GMT  
Copyright © 2014 OpenSS7 Corporation All Rights Reserved.