Links

GitHub

Open HUB

Quick Links

Download

STREAMS

SIGTRAN

SS7

Hardware

SCTP

Related

Package

Papers

Manual

Manual Pages

References

Conformance

Performance

Design

Status

FAQ

Manuals

sctp Manual

iperf Manual

SPG Manual

STREAMS Manual

strcompat Manual

strutil Manual

strbcm Manual

strtty Manual

strxns Manual

strxnet Manual

strsock Manual

strinet Manual

strsctp Manual

striso Manual

netperf Manual

strchan Manual

strx25 Manual

strisdn Manual

strss7 Manual

sigtran Manual

strvoip Manual

osr61 Manual

LiS Manual

Documentation

FAQ

SIGTRAN

Design

Conformance

Performance

References

Man Pages

Manuals

Papers

Home

Overview

Status

Documentation

Resources

About

News

STREAMS Manual

Description: OpenSS7 Online Manuals

A PDF version of this document is available here.

OpenSS7

OpenSS7

OpenSS7 Installation and Reference Manual

About This Manual

This is Edition 7.20141001, last updated 2014-10-25, of The OpenSS7 Installation and Reference Manual, for Version 1.1 release 7.20141001 of the OpenSS7 package.


Preface


Notice

This package is released and distributed under the AGPL (see GNU Affero General Public License). Please note, however, that there are different licensing terms for the manual pages and some of the documentation (derived from OpenGroup1 publications and other sources). Consult the permission notices contained in the documentation for more information.

This manual is released under the FDL (see GNU Free Documentation License) with no invariant sections, no front-cover texts and no back-cover texts.


Abstract

This manual provides a Installation and Reference Manual for OpenSS7.

Objective

The objective of this manual is to provide a guide for the STREAMS programmer when developing STREAMS modules, drivers and application programs for OpenSS7.

This guide provides information to developers on the use of the STREAMS mechanism at user and kernel levels.

STREAMS was incorporated in UNIX System V Release 3 to augment the character input/output (I/O) mechanism and to support development of communication services.

STREAMS provides developers with integral functions, a set of utility routines, and facilities that expedite software design and implementation.

Intent

The intent of this manual is to act as an introductory guide to the STREAMS programmer. It is intended to be read alone and is not intended to replace or supplement the OpenSS7 manual pages. For a reference for writing code, the manual pages (see STREAMS(9)) provide a better reference to the programmer. Although this describes the features of the OpenSS7 package, OpenSS7 Corporation is under no obligation to provide any software, system or feature listed herein.

Audience

This manual is intended for a highly technical audience. The reader should already be familiar with Linux kernel programming, the Linux file system, character devices, driver input and output, interrupts, software interrupt handling, scheduling, process contexts, multiprocessor locks, etc.

The guide is intended for network and systems programmers, who use the STREAMS mechanism at user and kernel levels for Linux and UNIX system communication services.

Readers of the guide are expected to possess prior knowledge of the Linux and UNIX system, programming, networking, and data communication.


Revision History

Take care that you are working with a current version of this manual: you will not be notified of updates. To ensure that you are working with a current version, contact the Author, or check The OpenSS7 Project website for a current version.

A current version of this manual is normally distributed with the OpenSS7 package, openss7-1.1.7.20141001.2

Version Control

Although the author has attempted to ensure that the information in this document is complete and correct, neither the Author nor OpenSS7 Corporation will take any responsibility in it. OpenSS7 Corporation is making this documentation available as a reference point for the industry. While OpenSS7 Corporation believes that these interfaces are well defined in this release of the document, minor changes may be made prior to products conforming to the interfaces being made available. OpenSS7 Corporation reserves the right to revise this software and documentation for any reason, including but not limited to, conformity with standards promulgated by various agencies, utilization of advances in the state of the technical arts, or the reflection of changes in the design of any techniques, or procedures embodied, described, or referred to herein. OpenSS7 Corporation is under no obligation to provide any feature listed herein.

$Log: STREAMS.texi,v $
Revision 1.1.2.3  2011-02-07 02:21:33  brian
- updated manuals

Revision 1.1.2.2  2010-11-28 13:41:16  brian
- documentation updates

Revision 1.1.2.1  2009-06-21 10:40:08  brian
- added files to new distro

ISO 9000 Compliance

Only the TeX, texinfo, or roff source for this manual is controlled. An opaque (printed, postscript or portable document format) version of this manual is an UNCONTROLLED VERSION.


Disclaimer

OpenSS7 Corporation disclaims all warranties with regard to this documentation including all implied warranties of merchantability, fitness for a particular purpose, non-infringement, or title; that the contents of the manual are suitable for any purpose, or that the implementation of such contents will not infringe on any third party patents, copyrights, trademarks or other rights. In no event shall OpenSS7 Corporation be liable for any direct, indirect, special or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action or contract, negligence or other tortious action, arising out of or in connection with any use of this documentation or the performance or implementation of the contents thereof.

U.S. Government Restricted Rights

If you are licensing this Software on behalf of the U.S. Government ("Government"), the following provisions apply to you. If the Software is supplied by the Department of Defense ("DoD"), it is classified as "Commercial Computer Software" under paragraph 252.227-7014 of the DoD Supplement to the Federal Acquisition Regulations ("DFARS") (or any successor regulations) and the Government is acquiring only the license rights granted herein (the license rights customarily provided to non-Government users). If the Software is supplied to any unit or agency of the Government other than DoD, it is classified as "Restricted Computer Software" and the Government’s rights in the Software are defined in paragraph 52.227-19 of the Federal Acquisition Regulations ("FAR") (or any successor regulations) or, in the cases of NASA, in paragraph 18.52.227-86 of the NASA Supplement to the FAR (or any successor regulations).


Acknowledgements

The OpenSS7 Project was funded in part by:

Monavacon Limited
OpenSS7 Corporation

Thanks to the subscribers to and sponsors of The OpenSS7 Project. Without their support, open software like this would not be possible.

As with most open source projects, this project would not have been possible without the valiant efforts and productive software of the Free Software Foundation, the Linux Kernel Community, and the open source software movement at large.


Sponsors

Funding for completion of the OpenSS7 OpenSS7 package was provided in part by:

Monavacon Limited
OpenSS7 Corporation

Additional funding for The OpenSS7 Project was provided by:

Monavacon LimitedOpenSS7 Corporation
AirNet CommunicationsComverse Ltd.
eServGlobal (NZ) Pty Ltd.Excel Telecommunications
France TelecomGeoLink SA
HOB InternationalLockheed Martin Co.
MotorolaNetCentrex S. A.
Newnet Communications, Inc.Nortel Networks
Peformance Technologies, Inc.Sonus Networks Inc.
SS8 Networks Inc.SysMaster Corporation
TECORETumsan Oy
VerisignVodare Ltd.

Contributors

The primary contributor to the OpenSS7 OpenSS7 package is Brian F. G. Bidulock. The following is a list of notable contributors to The OpenSS7 Project:

- Per Berquist- Kutluk Testicioglu
- John Boyd- John Wenker
- Chuck Winters- Angel Diaz
- Peter Courtney- Jérémy Compostella
- Tom Chandler- Sylvain Chouleur
- Gurol Ackman- Christophe Nolibos
- Pierre Crepieux- Bryan Shupe
- Christopher Lydick- D. Milanovic
- Omer Tunali- Tony Abo
- John Hodgkinson- Others

Supporters

Over the years a number of organizations have provided continued support in the form of assessment, inspection, testing, validation and certification.


Telecommunications

Integrated Telecom SolutionsAASTRA
Accuris NetworksAculab
AdaxAEPONA
AirNet CommunicationsAirwide Solutions
AlacreAlcatel
Alcatel-LucentAltobridge
AnamApertio (now Nokia)
Alaska Power & TelephoneAricent
Artesyn (now Emerson)Arthus Technologies
Bharti TelesoftBubbleMotion
Continuous Computing (Trillium)Cellnext Solutions Limited
CiscoCodent Networks
Cogeco Cable Inc.Comverse Ltd.
Condor NetworksCoral Telecom
CorecessCorelatus
CosiniData Connection
DatacraftDatatek Applications Inc.
DatatronicsDialogic
DigiumDruid Software
DTAG (Deutsche Telecom AG)Empirix
Engage Communication Inc.Ericsson
eServGlobal (NZ) Pty Ltd.ETSI
Excel TelecommunicationsFlextronics (now Aricent)
France TelecomGemini Mobile Technologies
Geolink (now SeaMobile)Global Edge
HuaweiIBSYS Canada
Integral Access (now Telco Systems)Integrat Mobile Aggregation Services
Kineto WirelessLucent
Maestro CommunicationsMCI
MindspeedMobis
MobixellMotivity Telecom, Inc.
MotorolaMpathix Inc.
m-Wise Inc.Myriad Group
Net2PhoneNetCentrex S. A.
NetTest A/S (now Anritsu)NeuvaTel PCS
Newnet Communications, Inc.NMS (now Dialogic)
Noble Systems CorporationNokia
Nortel Networksj2 Global Communications, Inc.
OnMobileOrange
OuroborosP3 Solutions GmbH
Primal Technologies Inc.Propolys Pte Ltd.
Peformance Technologies, Inc.Pulse Voice Inc.
Reliance CommunicationsRoamware Inc.
SONORYS Technology GmbHSonus Networks Inc.
Spider Ltd. (now Emerson)SS8 Networks Inc.
Oasis SystemsStratus
Stratus Technologies Bermuda Ltd.Sicap AG
Switchlab Ltd.Synapse Mobile Networks SA
SysMaster CorporationTata Communications
TecoreTekno Telecom LLC
TelcordiaTelecom Italia
TeledesignTelemetrics Inc.
TelnorTE-Systems
Texas Instruments Inc.Tumsan Oy
UlticomVanu Inc.
Vecto Communications SRLVeraz Networks
VeriSignVodare Ltd.
VSE NET GmbHThe Software Group Limited
WINGcon GmbHWipro Technologies
Xentel Inc.YCOM SA
ZTE Corporation

Aerospace and Military

Advanced TechnologiesAltobridge
AltobridgeBBN (Bolt, Beranek, and Neuman)
ARINCBoldon James
ATOS OriginLockheed Martin Co.
BoeingNorthrop Grumman Corporation
Boldon JamesQinetiQ
CRNASAAB
DSNA-DGAC 3Sandia National Laboratories
DLR 4Thales
DSNA-DTIWright-Patterson Air Force Base
Egis-Avia (Sofreavia)
MetaSlash, Inc.
Sofreavia
FAA WJHTC5
Thales ATM/Air Systems

Financial, Business and Security

AlebraAlebra
Automated Trading Desk (now Citi)Boldon James
Banco CredicoopFujitsu-Seimens
BeMacFutureSoft
Boldon JamesGSX
CyberSource CorporationHOB International
Fujitsu-SeimensHP (Hewlett-Packard)
FutureSoftIBM
Gcom, Inc.
GSX
HOB International
HP (Hewlett-Packard)
IBM
Lightbride (now CyberSource)
MasterCardAlert Logic
Network Executive Software Inc.Apani
Packetware Inc.BeMac
Packetware Inc.ERCOM
Prism Holdings Ltd.Hitech Systems
S2 Systems (now ACI)iMETRIK
Symicron Computer Communications LimitedIntrado Inc.

Education, Health Care and Nuclear Power

IEEE Computer SocietyAteb
ENST 6Mandexin Systems Corporation
HTW-Saarland 7
Kansas State UniversityAreva NP
University of North Carolina CharlotteEuropean Organization for Nuclear Research

Agencies

It would be difficult for the OpenSS7 Project to attain the conformance and certifications that it has without the free availability of specifications documents and standards from standards bodies and industry associations. In particular, the following:

3GPP (Third Generation Partnership Project)
ATM Forum
EIA/TIA (Electronic Industries Alliance)
ETSI (European Telecommunications Standards Institute)
ICAO (International Civil Aviation Organization)
IEEE (Institute of Electrical and Electronic Engineers)
IETF (The Internet Engineering Task Force)
ISO (International Organization for Standardization)
ITU (International Telecommunications Union)
Mulutiservices Forum
The Open Group

Of these, ICAO, ISO, IEEE and EIA have made at least some documents publicly available. ANSI is notably missing from the list: at one time draft documents were available from ANSI (ATIS), but that was curtailed some years ago. Telecordia does not release any standards publicly. Hopefully these organizations will see the light and realize, as the others have, that to remain current as a standards organization in today’s digital economy requires providing individuals with free access to documents.


Authors

The authors of the OpenSS7 package include:

- Brian Bidulock

See ‘Author Index’, for a complete listing and cross-index of authors to sections of this manual.


Maintainer

The maintainer of the OpenSS7 package is:

- Brian Bidulock

Please send bug reports to bugs@openss7.org using the send-pr script included in the package, only after reading the BUGS file in the release, or See Problem Reports.


Web Resources

The OpenSS7 Project provides a website dedicated to the software packages released by the OpenSS7 Project.

Bug Reports

Please send bug reports to bugs@openss7.org using the send-pr script included in the OpenSS7 package, only after reading the BUGS file in the release, or See Problem Reports. You can access the OpenSS7 GNATS database directly via the web, however, the preferred method for sending new bug reports is via mail with the send-pr script.

Mailing Lists

The OpenSS7 Project provides a number of general discussion Mailing Lists for discussion concerning the OpenSS7 OpenSS7 package as well as other packages released by The OpenSS7 Project.

These are mailman mailing lists and so have convenient web interfaces for subscribers to control their settings. See http://www.openss7.org/mailinglist.html.

The mailing lists are as follows:

openss7

The openss7 mailing list is for general enquiries, information exchange and announcements regarding the OpenSS7 Project. This is our original mailing list and takes the highest amount of traffic.

openss7-announce

The openss7-announce mailing list is for announcements related to the OpenSS7 Project. This list will accept announcements posted by subscribers. Subscribe to this list if you are interested in announcements from the OpenSS7 Project, subscribers and sponsors, related to the OpenSS7 Project or STREAMS, SS7, SIGTRAN or SCTP in general.

openss7-cvs

The openss7-cvs mailing list is for automatic CVS log reporting. You must get permission of the owner to subscribe to this list. Subscribers are not allowed to post to this list, this is merely for distributing notification of changes to the CVS repository.h

openss7-develop

The openss7-develop mailing list is for email exchange related to the development projects under the OpenSS7 Project. This includes development requests, proposals, requests for comment or proposal. Subscribe to this list if you are interested in ongoing development details regarding the OpenSS7 Project.

openss7-test

The openss7-test mailing list is for email exchange related to the testing of code under the OpenSS7 Project. This specifically relates to conformance testing, verification testing, interoperability testing and beta testing. Subscribe to this list if you are interested in participating in and receiving ongoing details of test activities under the OpenSS7 Project.

openss7-bugs

The openss7-bugs mailing list is specifically tailored to bug tracking. The mailing list takes a feed from the OpenSS7 GNATS bug tracking system and accepts posting of responses to bug reports, tracking and resolution. Subscribe to this list if you are interested in receiving detailed OpenSS7 release code bug tracking information. This list is not archived; for historical information on problem reports, see our GNATS databases.

openss7-updates

The openss7-updates mailing list provides updates on OpenSS7 Project code releases and ongoing activities. Subscribers are not allowed to post to this list; this list is for official OpenSS7 Project announcements only. Subscribe to this list if you are interested in receiving updates concerning official releases and activities of the OpenSS7 Project.

openss7-streams

The openss7-streams mailing list is for email exchange related to the STREAMS development projects under the OpenSS7 Project. This includes development requests, proposals, requests for comment or proposal. Subscribe to this list if you are interested in ongoing development details regarding the OpenSS7 Project STREAMS components.

linux-streams

The linux-streams mailing list is for mail exchange related to Linux Fast-STREAMS or Linux STREAMS. This includes patches, development requests, proposals, requests for comment or proposal. Subscribe to this list if you are interested in ongoing development details regarding the STREAMS for Linux components. This is the the new (September 2006) home of the linux-streams list formerly of ‘gsyc.escet.urjc.es’.

Spam

To avoid spam being sent to the members of the OpenSS7 mailing list(s), we have blocked mail from non-subscribers. Please subscribe to the mailing list before attempting to post to them. (Attempts to post when not subscribed get bounced.)

As an additional measure against spam, subscriber lists for all OpenSS7 mailing lists are not accessible to non-subscribers; for most lists subscriber lists are only accessible to the list administrator. This keeps your mailing address from being picked off our website by bulk mailers.

Acceptable Use Policy

It is acceptable to post professional and courteous messages regarding the OpenSS7 package or any general information or questions concerning STREAMS, SS7, SIGTRAN, SCTP or telecommunications applications in general.

Large Attachments

The mailing list is blocked from messages of greater than 40k. If you have attachments (patches, test programs, etc.) and you mail them to the list, it will bounce to the list administrator. If you are interested in making your patches, test programs, test results or other large attachments available to the members of the mailing list, state in the message that you would like them posted and the list administrator will place them in the mail archives.


Quick Start Guide

OpenSS7

Package openss7-1.1.7.20141001 was released under AGPLv3 2014-10-25.

This is the OpenSS7 package. It contains all of the OpenSS7 Project release code. This is the only package released by the OpenSS7 Project.

The package contains all of the former subpackages of the OpenSS7 Master Package, including:

• Linux Fast-STREAMS
• STREAMS Compatibility Modules
• STREAMS Utilities
• STREAMS Terminals
• STREAMS X/Open Networking Services
• STREAMS X/Open Networking XTI/TLI Library
• STREAMS Sockets
• STREAMS Internet Protocol Drivers
• STREAMS SCTP
• STREAMS Channels and Multiplexing
• STREAMS X.25 and Frame Relay Stack
• STREAMS Open Systems Interconnect (OSI) Stack
• STREAMS ISDN Stack
• STREAMS ATM Stack
• STREAMS SS7 Stack
• STREAMS SIGTRAN Stack
• STREAMS VoiP Stack

Fully deprecated by this release and no longer released by the OpenSS7 Project are the following former subpackages of the OpenSS7 Master Package:8

• Linux Native Sockets SCTP
• Internet Performance (the OpenSS7 iperf fork)
• Network Performance (the OpenSS7 netperf fork)
• Dialogic Open System Release 6.1

This distribution is applicable to Linux 2.4, 2.6 and 3.x kernels as was targeted at ix86, x86_64, ppc and ppc64 architectures, but should build and install for other architectures as well.

Release

This is the openss7-1.1.7.20141001 package, released 2014-10-25. This ‘1.1.7.20141001’ release, and the latest version, can be obtained from the download area of The OpenSS7 Project website using a command such as:

$> wget http://www.openss7.org/tarballs/openss7-1.1.7.20141001.tar.xz

The release is available as an autoconf(1) tarball, src.rpm or dsc, as a set of binary rpms or debs, or as a yum(8), zypper(8) or apt(8) repository. See the download page for the autoconf(1) tarballs, src.rpms, dscs, or repository access instructions. See the openss7 package page for tarballs, source and binary packages.

Please see the NEWS file for release notes and history of user visible changes for the current version, and the ChangeLog file for a more detailed history of implementation changes. The TODO file lists features not yet implemented and other outstanding items.

Please see the INSTALL, INSTALL-openss7 and README-make, files (or see Installation) for installation instructions.

When working from cvs(1) or git(1), please see the README-cvs, file (or see Downloading from CVS). An abbreviated installation procedure that works for most applications appears below.

This release of the package is published strictly under Version 3 of the Affero GNU Public License which can be found in the file COPYING. Package specific licensing terms (if any) can be found in the file LICENSES. Please respect these licensing arrangements. If you are interested in different licensing terms, please contact the copyright holder, or OpenSS7 Corporation <sales@openss7.com>.

See README-alpha (if it exists) for alpha release information.

Repository Installation

The simplest way of installing the package is to use the OpenSS7 repomd or apt repositories instead of attempting to build from tarball. When you already have a the repository set up, the package can be udpated simply with (one of):

Fedora:   $> sudo yum update openss7
CentOS:   $> sudo yum update openss7
RHEL:     $> sudo yum update openss7
OpenSUSE: $> sudo zypper update openss7
SLES:     $> sudo zypper update openss7
Mageia:   $> sudo uprmi openss7
Mandriva: $> sudo urpmi openss7
MES:      $> sudo urpmi openss7
Ubuntu:   $> sudo aptitude install openss7
Debian:   $> sudo aptitude install openss7

If you have not yet set up an installation source for the OpenSS7 repositories, one of the following commands will establish repository access for RPM-based systems:

          $> REPO=http://www.openss7.org/repo/rpms
Fedora:   $> SUBDIR=fedora/15/$(uname -m)/RPMS/noarch
CentOS:   $> SUBDIR=centos/5.6/$(uname -m)/RPMS/noarch
RHEL:     $> SUBDIR=redhat/6.0/$(uname -m)/RPMS/noarch
OpenSUSE: $> SUBDIR=opensuse/11.4/$(uname -m)/RPMS/noarch
SUSE:     $> SUBDIR=suse/11.1/$(uname -m)/RPMS/noarch
Mageia:   $> SUBDIR=mageia/1/$(uname -m)/RPMS/noarch
Mandriva: $> SUBDIR=mandriva/2011.0/$(uname -m)/RPMS-noarch
MES:      $> SUBDIR=mes/5.2/$(uname -m)/RPMS/noarch
          $> sudo rpm -Uhv $REPO/$SUBDIR/openss7-repo.noarch.rpm

For DPKG-based systems, one of the following command sequences will establish repository access for DPKG-based systems:

          $> REPO=http://www.openss7.org/repo/debs/
Debian:   $> SUBDIR=debian/squeeze/$(dpkg-architecture -a -qDEB_HOST_ARCH)/main
Ubuntu:   $> SUBDIR=ubuntu/10.04/$(dpkg-architecture -a -qDEB_HOST_ARCH)/main
          $> wget $REPO/$SUBDIR/openss7-repo_all.deb
          $> dpkg -i -D010077 openss7-repo_all.deb

For zypper(8) based systems it may be first necessary to perform:

OpenSUSE: $> sudo rpm --import https://www.openss7.org/pubkey.asc
SLES:     $> sudo rpm --import https://www.openss7.org/pubkey.asc

For apt(8) based systems it may be first necessary to perform:

          $> wget https://www.openss7.org/pubkey.asc
Debian:   $> sudo apt-key add pubkey.asc
Ubuntu:   $> sudo apt-key add pubkey.asc

For yum(8) based systems, caches should be refreshed with:

Fedora:   $> sudo yum makecache
CentOS:   $> sudo yum makecache
RHEL:     $> sudo yum makecache

For zypper(8) based systems, caches should be refreshed with:

OpenSUSE: $> sudo zypper refresh-services
OpenSUSE: $> sudo zypper refresh
SLES:     $> sudo zypper refresh-services
SLES:     $> sudo zypper refresh

For urpmi(8) based systems, caches should be refreshed with:

Mageia:   $> sudo urpmi.update
Mandriva: $> sudo urpmi.update
MES:      $> sudo urpmi.update

For apt(8) base systems, caches should be refreshed with:9

Debian:   $> sudo aptitude update
Ubuntu:   $> sudo aptitude update

Once the repository is set up in this fashion, it should be possible to install using (one of):

Fedora:   $> sudo yum install openss7
CentOS:   $> sudo yum install openss7
RHEL:     $> sudo yum install openss7
OpenSUSE: $> sudo zypper install openss7
SLES:     $> sudo zypper install openss7
Mageia:   $> sudo uprmi openss7
Mandriva: $> sudo urpmi openss7
MES:      $> sudo urpmi openss7
Debian:   $> aptitude install openss7
Ubuntu:   $> aptitude install openss7

The entire process can be undone with:

Fedora:   $> sudo yum remove openss7 openss7-repo
CentOS:   $> sudo yum remove openss7 openss7-repo
RHEL:     $> sudo yum remove openss7 openss7-repo
OpenSUSE: $> sudo zypper remove openss7 openss7-repo
SLES:     $> sudo zypper remove openss7 openss7-repo
Mageia:   $> sudo uprme openss7
Mandriva: $> sudo urpme openss7
MES:      $> sudo urpme openss7
Debian:   $> sudo aptitude remove openss7 openss7-repo
Ubuntu:   $> sudo aptitude remove openss7 openss7-repo

Build Prerequisites

When building from source RPM or DSC, the prerequisites for building must be met. Most RPM or DEB build prerequisites are automatic; however, some prerequisites must still be met manually. When building from tarball, most prerequisites must be met manually. The configure script will inform you of most missing prerequisites and the actions that must be performed to meet those prerequisites.

Prerequisites for building OpenSS7 package are as follows:

  1. Linux distribution, somewhat Linux Standards Base compliant, with a 2.4, 2.6 or 3.x kernel and the appropriate tool chain for compiling out-of-tree kernel modules. Most recent Linux distributions are usable out of the box, but some development packages must be installed. For more information, see Compatibility.
    - A fairly LSB compliant GNU/Linux distribution.10
    - Linux 2.4 kernel (2.4.10 - 2.4.27),
    - Linux 2.6 kernel (2.6.3 - 2.6.39), or
    - Linux 3.x kernel (3.0 - 3.14);
    - glibc2 or better.
    - GNU groff (for man pages).11
    - GNU texinfo (for info files).
    - GNU bison and flex (for config programs).
    - net-snmp (for SNMP agents).12
    - GNU gcj and classpath (for Java modules).
    - swig (for Java, Tcl, Perl and Ruby interfaces).

The following will meet most additional prerequisites for a CentOS/RHEL 5.5 build host:

#> yum install bzip2 chkconfig coreutils createrepo doxygen \
        gcc-java ghostscript gjdoc glibc gnupg gnuplot \
        groff gzip ImageMagick kernel-devel latex2html \
        libgcj lsof module-init-tools rpm rpm-build tetex \
        tetex-dvips tetex-latex transfig xz xz-lzma-compat \
        zip

The following will meet most additional prerequisites for a CentOS/RHEL 6.0 build host:

#> yum install bzip2 chkconfig coreutils createrepo doxygen \
	gcc-java ghostscript glibc gnuplot groff gzip ImageMagick \
	java-1.6.0-openjdk-devel java-1.6.0-openjdk-javadoc \
	kabi-whitelists kernel kernel-devel latex2html libgcj \
	libgcj-devel lsof module-init-tools net-snmp-devel \
	perl-devel rpm rpm-build tcl-devel texlive texlive-dvips \
	texlive-latex texlive-utils transfig xz zip

The following will meet most additional prerequisites for a SuSE Linux Enterprise 11 build host:

#> zypper install aaa_base bzip2 coreutils createrepo doxygen \
        fastjar gcc43-gij gcc-java ghostscript-library gjdoc \
        glibc gnuplot gpg2 groff gzip ImageMagick inst-source-utils \
        kernel-default-devel latex2html lsof module-init-tools \
        rpm texlive texlive-latex transfig zip

The following will meet most additional prerequisites for a Debian 6.0 build host:

#> apt-get install apt-utils bzip2 coreutils createrepo doxygen \
        dpkg dpkg-dev fastjar gcj-jdk gcj-jre-headless ghostscript \
        gnupg gnuplot-nox gnuplot-x11 groff groff-base gzip \
        imagemagick insserv latex2html libc-bin lsof lzma \
        module-init-tools rpm texlive-binaries texlive-font-utils \
        texlive-latex-base transfig xz-utils zip

The package builds and installs kernel modules. When configuring and building the package, it is necessary to have the kernel development package installed. For the following distributions, use the following commands:

Ubuntu:  $> apt-get install linux-headers
Debian:  $> apt-get install kernel-headers
Fedora:  $> yum install kernel-devel
CentOS:  $> yum install kernel-devel

You also need the same version of gcc(1) compiler with which the kernel was built. If it is not the default, add ‘CC=kgcc’ on the line after ‘./configure’, for example:

$> ../openss7-1.1.7.20141001/configure CC='gcc-3.4'

The package builds and installs SNMP agents. When configuring and building the package, it is necessary to have the net-snmp development packages installed. For the following distributions, use the following commands:

Ubuntu:  $> apt-get install libsnmp libsnmp-perl snmp snmpd \
                lm-sensors libsnmp-dev libsnmp9-dev libsensors-dev
Debian:  $> apt-get install libsnmp libsnmp-perl snmp snmpd \
                lm-sensors libsnmp-dev libsnmp9-dev libsensors-dev
Fedora:  $> yum install net-snmp net-snmp-perl net-snmp-utils \
                lm_sensors net-snmp-devel lm_sensors-devel
CentOS:  $> yum install net-snmp net-snmp-perl net-snmp-utils \
                lm_sensors net-snmp-devel lm_sensors-devel

The package builds and installs Java archives and compiled Java. When configuring and building the package, it is necessary to have the GNU GCJ Java Compiler front-end and GNU Classpath archives installed. For the following distributions, use the following commands:

Ubuntu:  $> apt-get install gcj
Debian:  $> apt-get install gcj
Fedora:  $> yum install gcc-java
CendOS:  $> yum install gcc-java

Installation

The following commands will download, configure, build, check, install, validate, uninstall and remove the package:

$> wget http://www.openss7.org/tarballs/openss7-1.1.7.20141001.tar.xz
$> tar -xJvf openss7-1.1.7.20141001.tar.xz
$> mkdir build
$> pushd build
$> ../openss7-1.1.7.20141001/configure --enable-autotest --enable-silent-rules
$> make V=0
$> make check
$> sudo make install
$> sudo make installcheck
$> sudo make uninstall
$> popd
$> sudo rm -rf build
$> rm -rf openss7-1.1.7.20141001
$> rm -f openss7-1.1.7.20141001.tar.xz

If you have problems, try building with the logging targets instead. If the make of a logging target fails, an automatic problem report will be generated that can be mailed to The OpenSS7 Project.13 Installation steps using the logging targets proceed as follows:

$> wget http://www.openss7.org/tarballs/openss7-1.1.7.20141001.tar.xz
$> tar -xJvf openss7-1.1.7.20141001.tar.xz
$> mkdir build
$> pushd build
$> ../openss7-1.1.7.20141001/configure --enable-autotest --enable-silent-rules
$> make V=1 compile.log
$> make check.log
$> sudo make install.log
$> sudo make installcheck.log
$> sudo make uninstall.log
$> popd
$> sudo rm -rf build
$> rm -rf openss7-1.1.7.20141001
$> rm -f openss7-1.1.7.20141001.tar.xz

See README-make for additional specialized make targets.

For custom applications, see the INSTALL and INSTALL-openss7 files or the see Installation, as listed below. If you encounter troubles, see Troubleshooting, before issuing a bug report.

Brief Installation Instructions

The OpenSS7 package is available from the downloads area of The OpenSS7 Project website using a command such as:

$> wget http://www.openss7.org/tarballs/openss7-1.1.7.20141001.tar.xz

Unpack the tarball using a command such as:

$> tar -xJvf openss7-1.1.7.20141001.tar.xz

The tarball will unpack into the relative subdirectory named after the package name: openss7-1.1.7.20141001.

The package builds using the GNU autoconf utilities and the configure script. To build the package, we recommend using a separate build directory as follows:

$> mkdir build
$> cd build
$> ../openss7-1.1.7.20141001/configure

In general, the package configures and builds without adding any special options to the configure script. For general options to the configure script, see the GNU INSTALL file in the distribution:

$> less ../openss7-1.1.7.20141001/INSTALL

For specific options to the configure script, see the INSTALL-openss7 file in the distribution, or simply execute the configure script with the --help option like so:

$> ../openss7-1.1.7.20141001/configure --help

After configuring the package, the package can be compiled simply by issuing the ‘make’ command:

$> make V=0

Some specialized makefile targets exists, see the README-make file in the distribution or simply invoke the ‘help’ target like so:

$> make help | less

After successfully building the package, the package can be checked by invoking the ‘check’ make target like so:

$> make check

After successfully checking the package, the package can be installed by invoking the ‘install’ make target (as root) like so:

$> sudo make install

The info documentation is automatically installed; however, the text, html and pdf documentation must be installed separately like so:

$> sudo make install-txt
$> sudo make install-html
$> sudo make install-pdf

The test suites that ship with the package can be invoked after the package has been installed by invoking the ‘installcheck’ target. This target can either be invoked as root, or as a normal user, like so:

$> make installcheck

(Note: you must add the --enable-autotest flag to configure, above for the test suites to be invoked with ‘make installcheck’.)

The package can be cleanly removed (including installed documentation) by invoking the ‘uninstall’ target (as root):

$> sudo make uninstall

Then the build directory and tarball can be simply removed:

$> cd ..
$> rm -rf build
$> rm -rf openss7-1.1.7.20141001
$> rm -f openss7-1.1.7.20141001.tar.xz

Detailed Installation Instructions

More detailed installation instructions can be found in the Installation, contained in the distribution in ‘text’, ‘info’, ‘html’ and ‘pdf’ formats:

$> cd ../openss7-1.1.7.20141001
$> less doc/manual/openss7.txt
$> lynx doc/manual/openss7.html
$> info doc/manual/openss7.info
$> xpdf doc/manual/openss7.pdf

The ‘text’ version of the manual is always available in the MANUAL file in the release.

The current manual is also always available online from The OpenSS7 Project website at:

$> lynx http://www.openss7.org/openss7_manual.html

1 Introduction

This manual documents the design, implementation, installation, operation and future development schedule of the OpenSS7 package.


1.1 Overview

This manual documents the design, implementation, installation, operation and future development of the OpenSS7 package.


1.2 Organization of this Manual

This manual is organized (loosely) into several sections as follows:

Introduction.This introduction
Objectives.Objectives of the package
Reference.Contents of the package
Development.Developing with the package
Porting.Porting to the package
Conformance.Conformance of the package
Releases.Releases of the package
Installation.Installation of the package
Troubleshooting.Troubleshooting of the package

1.3 Conventions and Definitions

This manual uses texinfo typographic conventions.


2 Objectives


2.1 Background

STREAMS derives from Dennis Ritchie’s original paper,14 was incorporated into the UNIX® System V Release 3 operating system, replaced the terminal input-output subsystem, pipes and FIFOs in UNIX® System V Release 4, and was improved in the USL release of the UNIX® System V Release 4.2 operating system.

Today, STREAMS is a part of every major branded UNIX® variant, such as AIX®, HP-UX®, IRIX®, MacOT®, OSF/1®, Solaris®, SUPER-UX®, UnixWare®, UXP/V®, and including many UNIX-like operating systems and popular embedded RTOS, but with the notable exception of Berkeley System Distribution releases, variants and offshoots, and Linux.


2.2 What is STREAMS?

STREAMS is a flexible framework for communication between a user level process and a kernel resident driver. It encompasses a set of kernel system calls providing a user-kernel interface that is backward compatible with the traditional character device driver interface, as well as a set of STREAMS driver and module entry points forming a driver-kernel interface. STREAMS also provides a rich set of kernel utility functions for the development and implementation of kernel-resident drivers and modules. STREAMS prompted the specification of the DDI/DKI which is an architecture independent driver-kernel interface that provides a standardized set of kernel functions (beyond just STREAMS) for the development of device and software drivers.

STREAMS provides a reconfigurable full-duplex communications path between user level process and kernel resident driver, termed a Stream. Modules can be inserted in the path between the user and driver under user level control. Streams can be linked across multiplexers under user control to form complex (yet reconfigurable) topologies of user level processes and drivers.

Communication of control and data information along a Stream is accomplished by message passing. There is no direct function call interface between components of a Stream. A Stream exists within the STREAMS framework inside the kernel and extend from the user-kernel interface to the kernel driver interface. Each component of a Stream consists of a pair of queues used to pass messages in the upstream direction to the kernel-user interface; or downstream, the kernel-driver interface.

At the kernel-user end of the Stream is a component called the Stream head. As with all components of a Stream, the Stream head consists of a queue pair and a specialized set of procedures. The Stream head procedures are responsible for converting between the system call interface presented to users and the message passing mechanism within the Stream.

At the kernel-driver end of the Stream is the Stream end. The Stream end also contains a queue pair and a set of procedures. The Stream end (or simply driver) procedures are responsible for converting between the message passing mechanism within the Stream and the actions and events of a hardware (or pseudo-) device.

Intermediate components within the Stream are called Modules. Modules consist of a queue pair for passing messages upstream and downstream, as well as a set of procedures for processing messages. Modules can be pushed onto the module stack between the Stream head and Stream end using a set of standardized input-output control commands.

In support of topologies more complex than these simple linear segments, STREAMS also provides a specialized Stream end (driver) called a Multiplexing driver. A Multiplexing driver has the ability to open multiple Streams to its upper interface (multiplexer) as well as linking multiple Streams beneath its lower interface (multiplexer). Again, a standardized set of input-output controls provide the user with the ability to configure a Multiplexing driver.


2.3 Why STREAMS?

With the abil