Description: Manual Page
Keywords: ss7 ss7/ip ss7 over ip ss7 mtp ss7 sccp ss7 tcap sigtran mtp sccp tcap openss7 acb56 linux telephony pstn linux telephony linux nebs linux compactpci
NPI_SCTP
Section: NPI Corrigendum for SCTP (7)
Updated: 2008-10-31
Index
Return to Main Contents
NAME
npi_sctp
- Network Provider Interace (NPI) --- Corrigendum for SCTP Conformance
SYNOPSIS
#include <sys/npi.h>
#include <sys/npi_ip.h>
#include <sys/npi_sctp.h>
-
int sctp_stream =open( /dev/sctp_t , oflags );
DESCRIPTION
NPI-SCTP
provides a Stream supporting the Network Provider Interface (NPI)[1],
npi(7),
to the Stream Control Transmission Protocol (SCTP)[2..4]
driver,
sctp(4).
INTERFACE
This
STREAMS(4)
interface provides the
sctp(4)
protocol service interface using the N-primitives of the
npi(7).
This interface is intended solely for use by user programs or protocol modules
requiring the common
npi(7)
service interface. In particular, the
npi(7)
interface to
sctp(4)
is often used by SIGTRAN and other telecommunications protocols such as
TI-SCCP internal to the kernel. This is because the
NPI-SCTP
interface provides some richer control that is not available in the
tpi_sctp(7)
interface or the
xti_sctp(3)
library.
ADDRESS FORMATS
The SCTP address format is structured as follows:
struct sockaddr_in {
sa_family_t sin_family; /* Address family */
unsigned short int sin_port; /* Port number */
struct in_addr sin_addr; /* Internet address */
/* padding */
};
The
sockaddr_in
structure contains the following members:
- sin_family
- The address family. Always set to
AF_INET or AF_UNSPEC.
- sin_port
- The port number of the transport endpoint in network byte order.
- sin_addr
- The IP address of the transport endpoint in network byte order.
- (padding)
- Padding to pad the size of the
sockaddr_in
structure to the size of a
sockaddr
structure.
The structure is padded to the size of a
sockaddr
structure.
SCTP adresses can also be formed as an array of
sockaddr_in
structure to represent multiple addresses for multi-homed hosts.
OPTIONS
Quality of service parameters are formatted according to the format defined
for each network provider.
typedef union N_qos_sctp {
ulong n_qos_type;
N_qos_sel_conn_sctp_t n_qos_conn;
N_qos_sel_data_sctp_t n_qos_data;
N_qos_sel_info_sctp_t n_qos_info;
N_qos_range_info_sctp_t n_qos_range;
} N_qos_sctp_t;
NPI-SCTP
defines the following quality of service structures for SCTP:
- N_QOS_SEL_CONN_SCTP
- Identifies a structure containing QOS parameters for connection selection for SCTP.
This structure is normally used in the
N_CONN_REQ(7), N_CONN_IND(7), N_CONN_RES(7) and N_CONN_CON(7)
primitives.
It may also be used in the
N_OPTMGMT_REQ(7)
primitive.
This structure type identifies a
N_qos_sel_conn_sctp_t
structure, formatted as follows:
-
typedef struct {
ulong n_qos_type;
ulong i_streams;
ulong o_streams;
} N_qos_sel_conn_sctp_t;
- n_qos_type
- always
N_QOS_SEL_CONN_SCTP.
- i_streams
- the maximum number of input streams accepted.
- o_streams
- the number of output streams requested.
- N_QOS_SEL_DATA_SCTP
- Identifies a structure containing QOS parameters for data selection for SCTP.
This structure is normally used in the
N_DATA_REQ(7), N_DATA_IND(7), N_EXDATA_REQ(7) and N_EXDATA_IND(7)
primitives.
It may also be used in the
N_OPTMGMT_REQ(7)
primitive.
This structure type identifies a
N_qos_sel_data_sctp_t
structure, formated as follows:
-
typedef struct {
ulong n_qos_type;
ulong ppi;
ulong sid;
ulong ssn;
ulong tsn;
ulong more;
} N_qos_sel_data_sctp_t;
- n_qos_type
- always
N_QOS_SEL_DATA_SCTP.
- ppi
- the SCTP protocol payload identifier.
- sid
- the SCTP stream sequence identifier.
- ssn
- the SCTP stream sequence number.
- tsn
- the SCTP transmit sequence number.
- more
- the SCTP segmentation flag (B and E).
- N_QOS_SEL_INFO_SCTP
- Identifies a structure containing QOS parameters for information selection for
SCTP. This structure is normally returned in the
N_INFO_ACK(7)
primitive.
It may also be used in the
N_OPTMGMT_REQ(7)
primitive.
This structure type identifies a
N_qos_sel_info_sctp_t
structure, formatted as follows:
-
typedef struct {
ulong n_qos_type;
ulong i_streams;
ulong o_streams;
ulong ppi;
ulong sid;
ulong max_inits;
ulong max_retrans;
ulong ck_life;
ulong ck_inc;
ulong hmac;
ulong throttle;
ulong max_sack;
ulong rto_ini;
ulong rto_min;
ulong rto_max;
ulong rtx_path;
ulong hb_itvl;
ulong options;
} N_qos_sel_info_sctp_t;
- n_qos_type
- always
N_QOS_SEL_INFO_SCTP.
- i_streams
- current number of input streams.
- o_streams
- current number of output streams.
- ppi
- default payload protocol identifier.
- sid
- default stream identifier.
- max_inits
- maximum number of INIT retries.
- max_retrans
- maximum number of retransmissions per association.
- ck_life
- cookie lifetime.
- ck_inc
- cookie preservative increment.
- hmac
- HMAC algorithm used to sign cookies. Curent values for this field are:
-
- SCTP_HMAC_NONE
- no HMAC algorithm, fill signature with all 1's.
- SCTP_HMAC_SHA_1
- SHA-1 checksum signature.
- SCTP_HMAC_MD5
- MD5 checksum signature.
- throttle
- INIT and COOKIE-ECHO throttling interval.
- max_sack
- maximum SACK delay.
- rto_ini
- initial retransmission time out.
- rto_min
- minimum retransmission time out.
- rto_max
- maximum retransmission time out.
- rtx_path
- maximum number of retransmissions per path (destination).
- hb_itvl
- hearbeat interval.
- options
- additional local (flag) options.
Currently supported flag options include:
-
- SCTP_OPTION_DROPPING
- the stream will drop packets.
- SCTP_OPTION_BREAK
- the stream will break first path (tx).
- SCTP_OPTION_DBREAK
- the stream will break first path (rx and tx).
- SCTP_OPTION_RANDOM
- the stream will drop packets at random.
- N_QOS_SEL_RANGE_INFO_SCTP
- Identifies a structure containing QOS parameters for information selection ranges for
SCTP. This structure is normally returned in the
N_INFO_ACK(7)
primitive.
The structure type identifies a
N_qos_sel_range_info_sctp_t
structure, formatted as follows:
-
typedef struct {
ulong n_qos_type;
} N_qos_range_info_sctp_t;
- n_qos_type
- always
N_QOS_SEL_RANGE_INFO_SCTP.
EXPEDITED DATA
NPI-SCTP
does not support an expedited data option end-to-end; however, expedited data
is handled locally and is always available.
In support of expedited data,
NPI-SCTP
uses the
N_EXDATA_REQ(7) and N_EXDATA_IND(7)
primitives.
Expedited data sent with these primitives is always sent "unordered" by
SCTP.
SCTP expedites "unordered" data over "ordered" data because
"unordered" data is not subject to ordering constraints. Also, this
OpenSS7 STREAMS SCTP
implementation of SCTP will expedite unordered data from lower number stream
identification number over higher numbers. Unordered data from stream
identifier zero (0) is given the highest priority.
OpenSS7 STREAMS SCTP
SCTP also gives priority to new "unordered" data over any
retransmissions of data. This ensures that unordered data is expedited to the
wire.
RECEIPT CONFIRMATION
NPI-SCTP
does not support receipt confirmation option negotiation end-to-end; however,
receipt confirmation can optionally be invoked locally and is always available
to the NS user. Receipt confirmation makes use of the
N_DATACK_REQ(7) and
N_DATACK_IND(7)
primitive.
When an
N_DATA_REQ(7)
primitive is issued with the
N_RC_FLAG
set in the
DATA_xfer_flags,
OpenSS7 STREAMS SCTP
will perform receipt confirmation. When the TSN containing the last segment
of the NSDU associated with the
N_DATA_REQ(7)
with the
N_RC_FLAG
flag set is cummulatively acknoweldged by the SCTP peer, the NS provider will
issue a
N_DATACK_IND(7)
primitive to the NS user to indicate that the data was successfully received
by the SCTP peer. Note that this does not ensure that the data was received
by the remote NS user (as in the case of OSI protocols), but, however, that
the data was received by the remote NS provider.
This receipt confirmation capability has the effect that NSDUs that have been
confirmed received by the remote SCTP NS provider will be confirmed to the
local NS user.
At one time, this was a necessary capability for M2PA, but this is no longer
the case. Use this option with care. It has not been thourougly tested and
has performance impacts on both the local NS provider and local NS user.
LOCAL MANAGEMENT INTERFACE
NPI-SCTP
provides a local management through the service interface as described in
npi(7),
using the following primitives:
This primitivie is interpreted as in
npi(7).
This primitivie is interpreted as in
npi(7).
- NSDU_size
- The
NPI-SCTP
provider has an unlimited NSDU size and returns
T_INFINITE
in this field in accordace with the
npi(7).
- ENSDU_size
- The
NPI-SCTP
provider supports the concept of expedited data. Expedited data is data that
is sent unordered. This field should alwasy return the same value as the
NSDU_size
above.
- CDATA_size
- The
NPI-SCTP
provider supports the concept of connection data. This field will be the
maximum amount of connection data that will fit in a COOKIE-ECHO or COOKIE-ACK
message.
- DDATA_size
- The
NPI-SCTP
provider does not support the concept of disconnection data and, therefore,
returns
T_INVALID
in this field.
- ADDR_size
- The maximum size of the
SCTP
address. This field will aways return an integer multiple of the
sockaddr_in
structure size as described under
ADDRESSFORMAT ,
above.
- OPTIONS_flags
- The options flags may be one of the following values:
-
- REC_CONF_OPT
- Receipt confirmation selection and support. Receipt confirmation is supported
and, if in the connected state, was requested and negotiated.
NPI-SCTP
does not provide true negotiation of receipt confirmation support, however,
the SCTP protocol does support receipt confirmation.
- EX_DATA_OPT
- Expedited data selection and support. Expedited data is supported and, if in
the connected state, was requested and negotiated.
- DEFAULT_RC_SEL
- Indicates if default receipt confirmaiton is selected. When this option is
set using the
N_CONN_REQ(7), N_CONN_RES(7) or N_OPTMGMT_REQ(7)
primitive, it requests that messages sent using the
write(2s)
system call (i.e, message not containing an
M_PROTO(9)
message block), request receipt confirmation by default. When this flag is
clear, receipt confirmation will not be requested for
write(2s)
operations.
-
- If
REC_CONF_OPT
is not also set (using the
N_CONN_REQ(7) or N_CONN_RES(7)
primitives), then the
DEFAULT_RC_SEL
flag is ignored.
- NIDU_size
- This is the maximum size of the interface data unit, which is the maximum size
of data that can be transferred across the interface ina single
getmsg(2)
or
putmsg(2)
system call. This size is always less than or equal to the
NISDU_size
above.
- SERV_type
- The service type is one of the following:
-
- N_CONS
- Connection-oriented network service.
NPI-SCTP
supports connection-oriented network service.
This value is always returned by
NPI-SCTP.
- N_CLNS
- Connectionless network service.
NPI-SCTP
does not support connectionless service.
This value is never returned by
NPI-SCTP.
- CURRENT_state
- The current state of the service interface as described in
npi(7).
- PROVIDER_type
- The provider type is one of the following:
-
- N_SNICFP
- The provider is a subnetwork independent convergence function provider.
This value is always returned by
NPI-SCTP.
- N_SUBNET
- The provider is a subnetwork provider.
This value is never returned by
NPI-SCTP.
- NODU_size
- Indicates the optimal NIDU size.
NPI-SCTP
always returns half of the association MTU as the optimal NIDU size.
- NPI_version
- NPI-SCTP
always returns
N_VERSION_2
in this field.
This primitive is interpreted as in
npi(7),
with the Quality of Service parameters described under
OPTIONS ,
above.
This primitive is interpreted as in
npi(7).
- ADDR_length, ADDR_offset
- Specifies the length and offset from the beginning of the message block of the
sockaddr_in
structures that contain the
NPI-SCTP
addresses to bind. The
NPI-SCTP
provider supports wildcard addresses and the address
INADDR_NAY.
This sfield can contain an integer number of addresses.
- CONIND_number
- Specifies the number of connection indications. Specifying a non-zero number
of connection indications will place the Stream in listening mode. Any
COOKIE-ECHO packet receives from a unique source address will generate a
connection indication. Connection indications can be accepted or refused
(without data). This number specifies the maximum number of outstanding
ocnnection indications (those that have neither been accepted nor refused)
that the provider will deliver. Because this limit is reached does not mean
that the provider discards additional connection indications, but may queue
them internally until the number of outstanding connection indications drops
beneath the number specified. See
npi(7)
for more information.
- BIND_flags
- This field can contain the bitwize OR of zero or more of the following flags:
-
- TOKEN_REQUEST
- Requests that the NS provider provide a connection acceptance token in the
corresponding
N_BIND_ACK(7)
primitive.
- DEFAULT_DEST
- This flag is for CLNS service only and is not supported by the
NPI-SCTP
provider. If this flag is set a
[NNOTSUPPORT]
error will be returned in a
N_ERROR_ACK(7)
primitive.
- DEFAULT_LISTENER
- A default listener Stream is one that will accept connection indications when
no other Stream is associated with the incoming connection.
NPI-SCTP
does not currently support the concept of a default listener and sill return
[NNOTSUPPORT]
in a
N_ERROR_ACK(7)
primitive if this flag is set.
- PROTOID_length, PROTOID_offset
- Specifies the length and offset from the beginning of the message block of the
protocol identifiers to which the endpoint is bound.
NPI-SCTP
currently ignores these fields. At a later date it is possible that this
field could be used for additional protocol identification such as the
Application Layer Information.)
This primitive is interpreted as in
npi(7).
- ADDR_length, ADDR_offset
- Indicates the length and offset from the beginning of the message block of the
sockaddr_in
structures that contain the
NPI-SCTP
addresses that were bound. This filed can contain an integer number of
addresses.
-
- The bound address,
sin_addr,
returns in this field may be
INADDR_ANY (if INADDR_ANY
was requested, or no address was provided to the bind).
However, the
sin_port
component of the address will be allocated dynamically and set to a non-zero
port number if zero (indicating any port) was specified on bind, or no address
was provided to the bind. If a non-zero port number could not be dynamically
allocated,
[NNOADDR]
is returned in accordance with
npi(7).
- CONIND_number
- Indicates the negotiated number of connection indications. This is normally
the same value as was requested; however, if the user requests number that is
considered too large, this number might be a more conservative value.
- TOKEN_value
- A handle associated with the bound Stream to be used in a subsequent
N_CONN_RES(7)
primitive to accept a connection indication from a
N_CONN_IND(7)
primitive on this Stream.
- PROTOID_length, PROTOID_offset
- Indicates the length and offset from the beginning of the message block of the
protocol identifiers that were bound to the Stream.
NPI-SCTP
does not bind protocol identifiers and these fields will always be indicated
by the
NPI-SCTP
NS provider as zero (0).
This primitive is interpreted as in
npi(7).
This primitive is interpreted as in
npi(7).
This primitive is interpreted as in
npi(7).
PROTOCOL SERVICE INTERFACE
The
/dev/sctp_n
driver providers a single interface type: connection-oriented network service.
Note, however, that some connectionless network service primitives are
supported.
This primitive is interpreted as in
npi(7).
The
NPI-SCTP
provider does not support connectionless mode service and any attempt to issue
this primitive willnormally result in an
N_ERROR_ACK(7)
primitive with the error number
[NNOTSUPPORT].
This primitive is interpreted as in
npi(7).
The
NPI-SCTP
provider does not support connectionless mode service
provider will not issue this primitive.
This primitive is interpreted as in
npi(7).
The
NPI-SCTP
provider does not support connectionless mode service and
will not issue this primitive.
This primitive is interpreted as in
npi(7),
with the quality of service parameters described under
OPTIONS ,
above and the following considerations:
- DEST_length, DEST_offset
- Specifies the length and offset from the beginning of the message block of the
sockaddr_in
structures that contains the
NPI-SCTP
IP addresses to which to connect the Stream. For connection to multi-homed
NPI-SCTP
hosts, this address may contain mutliple
sockaddr_in
structures.
- CONN_flags
- The connection flags can be a bitwise OR of zero or more of the following
flags:
-
- REC_CONF_OPT
- Receipt confirmation selection and support.
NPI-SCTP
uses this flag on connection to determine whether the SCTP association will
support receipt confirmation in either direction.
- EX_DATA_OPT
- Expedited data selection and support.
NPI-SCTP
provides expedited data support regardless of whether this flag is set on
connection or not.
- QOS_length, QOS_offset
- Specifies the length and offset from the beginning of the message block of the
quality of service parameters to use when forming an association with the
peer. The structure is a
N_qos_sel_conn_sctp_t
structure of type
N_QOS_SEL_CONN_SCTP.
These quality of service parameter value can be changed with the
N_OPTMGMT_REQ(7)
primitive, or overridden for a specific message with the
N_DATA_REQ(7) or N_EXDATA_REQ(7)
primitive.
-
- Quality of service parameters that have end-to-end significance are:
i_streams and o_streams.
Quality of service parameters that have significance at connection are:
ppi, sid, max_inits, max_retrans, max_sack, rto_init, rto_min, rto_max, rtx_path, hb_itvl.
This primitive is interpreted as in
npi(7),
with the quality of service parameters described under
OPTIONS ,
above, and the following considerations:
The primitive is issued by the NS provider when confirming a connection.
NPI-SCTP
confirms a connection when a COOKIE-ACK is received for the SCTP association.
- RES_length, RES_offset
- Indicates the length and offset from the beginning of the message block of the
sockaddr_in
structures that contain the
NPI-SCTP
addresses to which the Stream is confirmed connected. For responding
multi-homed
NPI-SCTP
hosts, this addres may contain multiple
sockaddr_in
structures.
-
- Unlike TPI, NPI does not have the ability to query the addresses associated
with an established connection. The responding address contained in this
field contains the address(es) associated with the remote peer. It is the
responsibility of the NS user to store this address for later use.
- CONN_flags
- The connection flags may be a bitwize OR of zero or more of the following
flags:
-
- REC_CONF_OPT
- Receipt confirmation selection and support.
NPI-SCTP
confirms this flag if it was requested in the
N_CONN_REQ(7)
primitive. This flag is of local significance.
- EX_DATA_OPT
- Expedited data selection and support.
NPI-SCTP
always confirms this flag, regardless of whether it was requested in the
N_CONN_REQ(7)
primitive. This flag is of local significance.
- QOS_length, QOS_offset
- Indicates the length and offset from the beginning fo the message block of the
options present in the connection request and options that are negotiated
end-to-end. See
OPTIONS ,
above. The option values represent the negotiation with the local provdier as
well as end-to-end negotiation with the SCTP peer.
The structure is a
N_qos_sel_conn_sctp_t
structure of type
N_QOS_SEL_CONN_SCTP.
This primitive is interpreted as in
npi(7),
with the quality of service parameters described under
OPTIONS ,
above, and the following considerations:
The primitive is issued by the NS provider when indicating an incoming
connection request.
NPI-SCTP
issues this primitive indicating an incoming connection request when a
COOKIE-ECHO is received initiating an SCTP connection.
- DEST_length, DEST_offset
- Indicates the length and offset from the beginning of the message block of the
destination address associated with the local endpoint. When the local host
is multi-homed, this address can contain multiple
sockaddr_in
structures. These addresses may differ from the addresses to which the local
endpoint was bound (i.e, in the
N_BIND_ACK(7)
primitive), particularly when the local NS provider was bound to a wildcard
address.
Unlike TPI, NPI does not have an address information primitive and it is the
responsibility of the NS user to store these addresses for later use.
- SRC_length, SRC_offset
- Indicates the length and offset from the beginning of the message block of the
source addresses associated with the remote endpoint. When the remote host is
multi-homed, this address can contain multiple
sockaddr_in
structures. Unlike TPI, NPI has not address information service and it is the
responsibility of the NS user to store these addresses for later use.
- SEQ_number
- Provides a unique sequence number that identifies this connection indication
for use by the NS user in a subsesuent
N_CONN_RES(7) or N_DISCON_REQ(7)
primitive.
- CONN_flags
- The connection flags may be one of the following values:
-
- REC_CONF_OPT
- Receipt confirmation selection and support.
NPI-SCTP
always supports receipt confirmation locally and this flag will be set in all
connection indications. It is up to the NS user to decide whether this
association should support receipt confirmation and to set or clear the flag
in the
N_CONN_RES(7)
primitive.
- EX_DATA_OPT
- Expedited data selection and support.
NPI-SCTP
always supports expedited data locally and this flag will be set in all
connection indications.
- QOS_length, QOS_offset
- Indicates the length and offset from the beginning of the message block of the
options present locally and provided from the remote end. The structure is a
N_qos_sel_conn_sctp_t
structure of type
N_QOS_SEL_CONN_SCTP.
Of end-to-end significance are the
i_streams and o_streams
members of the structure.
See
OPTIONS ,
above.
This primitive is interpreted as in
npi(7),
with the quality of service parameters described under
OPTIONS ,
above, and the following considerations:
When it receives this primitive, the
NPI-SCTP
NS provider will send a COOKIE-ACK to
complete the establishment of an SCTP association.
- TOKEN_value
- Specifies the acceptor identifier of the Stream onto which the connection is
to be accepted. Any value specified here should be the value of the
TOKEN_value
field that was returned in the
N_BIND_ACK(7)
primitive for the associated accepting Stream.
-
- If the connection is to be accepted on the same Stream upon
which the corresponding
N_CONN_IND(7)
was received, this field should be zero (0). It is an error to accept a
connection on the listening Stream if there is more that one connection
indication outstanding.
- RES_length, RES_offset
- Specifies the length and offset from the beginning of the message block of the
responding addresses.
NPI-SCTP
does not have the ability to provide responding addresses that differ from the
addresses that appeared in the
DEST_length and DEST_offset
fields of the associated
N_CONN_IND(7)
primitive.
- SEQ_number
- Specifies the sequence number in the corresponding
N_CONN_IND(7)
primitive to which this primitive is responding.
- CONN_flags
- The connection flags may be one of the following values:
-
- REC_CONF_OPT
- Receipt confirmation selection and support. This flag is set by the NS user
if receipt confirmation is to be used on the accepting Stream.
- EX_DATA_OPT
- Expedited data selection and support. This flag is set by the NS user if
expedited data is to be used on the accepting Stream; however, this flag is
ignored by the
NPI-SCTP
NS provider and expedited data is always supported locally.
- QOS_length, QOS_offset
- Specifies the length and offset from the beginning of the message block of the
quality of service parameters requested to the connection. See
OPTIONS ,
above. Quality of service parameters of local significance are negotiated
locally. Quality of service parameters of end-to-end significance are
negotiated with the peer. The structure is a
N_qos_sel_conn_sctp_t
structure of type
N_QOS_SEL_CONN_SCTP.
Of end-to-end significance are the
i_streams and o_streams
members of the structure.
See
OPTIONS ,
above.
This primitive is interpreted as in
npi(7).
Data will be sent ordered on the Stream.
- DATA_xfer_flags
- This field contains option flags for the NIDU. They can be a bitwise OR of
zero or more of the following flags:
-
- N_MORE_DATA_FLAG
- Specifies that a subsequent
N_DATA_REQ
contains data continuing the same NSDU. For
M_DATA(9)
message blocks, the
MSGDELIM
flag is used in the same fashion.
M_DATA(9)
messages that result from a
write(2s)
system call, will have their
MSGDELIM
flag checked.
(MSGDELIM
flags will be set on full
write(2s)
operations.)
When set, the data marks the end of a record.
- N_RC_FLAG
- Specifies that receipt confirmation is requested for the NSDU. This flag is
only valid for the last NIDU of an NSDU (i.e. one that has the
N_MORE_DATA_FLAG
clear). When receipt confirmation is requested and the SCTP cummulative
acknowledgement point passes over the TSN assigned to the last segment of the
NSDU, a
N_DATACK_IND(7)
message will be issued to the NS User.
For
M_DATA (9)
message blocks, the
DEFAULT_RC_SEL
option flag is used in the same fashion.
M_DATA(9)
message blocks will be sent with receipt confirmation requested if the
DEFAULT_RC_SEL
options flag is set for the connection, either via the
N_CONN_REQ(7), N_CONN_RES(7) or N_OPTMGMT_REQ(7)
primitives.
NPI-SCTP
supports an extension of the
N_DATA_REQ(7)
primitive format. The
M_PROTO (7)
message block may contain a
N_qos_sel_data_sctp_t
structure immediately following the
N_data_req_t
primitive structure, with the following additional fields:
- n_qos_type
- always
N_QOS_SEL_DATA_SCTP.
- ppi
- the protocol payload identifier to be placed in the SCTP DATA chunk.
- sid
- the stream identifier to be placed in the SCTP DATA chunk.
- ssn
- the stream sequence number contained in the SCTP DATA chunk.
(Ignored in
the
N_DATA_REQ(7)
primitive, this value will be overwritten with the next sequential stream
sequence number for the identified stream.)
- tsn
- the transmission sequence number contained in the SCTP DATA chunk.
(Ignored in
the
N_DATA_REQ(7)
primitive, this value will be overwritten with the next sequential
transmission sequence number for the corresponding association.)
- more
- a flag indicating whether additional
N_DATA_REQ(7)
primitives contain additional data belonging to the same NSDU.
(Ignored in
the
N_DATA_REQ(7)
primitive, this value will be overwritten by the calculated B and E bits for
the SCTP DATA chunk.)
This primitive is interpreted as in
npi(7).
Data was sent ordered on the Stream.
NPI-SCTP
supports an extension of the
N_DATA_IND(7)
primitive format. The
M_PROTO (7)
message block may contain a
N_qos_sel_data_sctp_t
structure immediately following the
N_data_req_t
primitive structure, with the following additional fields:
- n_qos_type
- always
N_QOS_SEL_DATA_SCTP.
- ppi
- the protocol payload identifier from the SCTP DATA chunk.
- sid
- the stream identifier from the SCTP DATA chunk.
- ssn
- the stream sequence number from the SCTP DATA chunk.
- tsn
- the transmission sequence number from the SCTP DATA chunk.
- more
- the B and E bits from the SCTP DATA chunk. (This is in fact the entire flags
field from the DATA chunk. This permits definitions of additional flags and
passing of those flags to the user.)
This primitive is interpreted as in
npi(7).
Data will be sent unordered on the Stream.
NPI-SCTP
supports an extension of the
N_EXDATA_REQ(7)
primitive format. The
M_PROTO (7)
message block may contain a
N_qos_sel_data_sctp_t
structure immediately following the
N_data_req_t
primitive structure, with the following additional fields:
- n_qos_type
- always
N_QOS_SEL_DATA_SCTP.
- ppi
- the protocol payload identifier to be placed in the SCTP DATA chunk.
- sid
- the stream identifier to be placed in the SCTP DATA chunk.
- ssn
- the stream sequence number to be placed in the SCTP DATA chunk. (This would
normally be zero for unordered data, however, some applications may pass data
in this field.)
- tsn
- the transmission sequence number contained in the SCTP DATA chunk.
(Ignored in
the
N_EXDATA_REQ(7)
primitive, this value will be overwritten with the next sequential
transmission sequence number for the corresponding association.)
- more
- a flag indicating whether additional
N_EXDATA_REQ(7)
primitives contain additional data belonging to the same ENSDU.
(Ignored in
the
N_EXDATA_REQ(7)
primitive, this value will be overwritten by the calculated B and E bits for
the SCTP DATA chunk.)
This primitive is interpreted as in
npi(7).
Data was sent unordered on the Stream.
NPI-SCTP
supports an extension of the
N_DATA_IND(7)
primitive format. The
M_PROTO (7)
message block may contain a
N_qos_sel_data_sctp_t
structure immediately following the
N_data_req_t
primitive structure, with the following additional fields:
- n_qos_type
- always
N_QOS_SEL_DATA_SCTP.
- ppi
- the protocol payload identifier from the SCTP DATA chunk.
- sid
- the stream identifier from the SCTP DATA chunk.
- ssn
- the stream sequence number from the SCTP DATA chunk.
- tsn
- the transmission sequence number from the SCTP DATA chunk.
- more
- the B and E bits from the SCTP DATA chunk. (This is in fact the entire flags
field from the DATA chunk. This permits definitions of additional flags and
passing of those flags to the user.)
This primitive is interpreted as in
npi(7).
The previous primitive indicating reception of data that indicated receipt
confirmation (i.e,
N_DATA_IND(7))
is confirmed received by the user.
This primitive is interpreted as in
npi(7).
The previous primitive requesting transmission of data that requested receipt
confirmation (i.e,
N_DATA_REQ(7))
is confirmed received by the peer.
This primitive is interpreted as in
npi(7).
NPI-SCTP
does not support a remote reset procedure; however, this primitive is
supported locally. Issuing this primitive will cause the NS provider to
respond with a
N_RESET_CON(7)
primitive once it receives the primitive. This permits the NS user to
determine when all
N_DATA_REQ(7) and N_EXDATA_REQ(7)
primitives preceding the
N_RESET_REQ(7)
have been received by the NS provider. (At a later date it may be possible to
use this to reset the stream sequence number or transmission sequence number.)
This primitive is interpreted as in
npi(7).
NPI-SCTP
does not support a remote reset procedure and will not issue this primitive.
(At a later date it may be possible to use this to indicate that the stream
sequence number or transmission sequence number has been reset.)
This primitive is interpreted as in
npi(7).
NPI-SCTP
does not issue an
N_RESET_IND(7)
primitive and the NS user should not, therefore, issue this primitive in
response. (At a later date it may be possible to use this to allow the NS
user to respond to a stream sequence number or transmission sequence number
reset.)
This primitive is interpreted as in
npi(7).
NPI-SCTP
does not support a remote reset procedure. Therefore, this primitive is only
issued in confirmation of the receipt of a
N_RESET_REQ(7)
primitive.
This primitive is interpreted as in
npi(7).
This will result in the refusal of any outstanding
NPI-SCTP
connection indication or an abortive release of an existing
NPI-SCTP
association.
- DISCON_reason
- Specifies the reason for disconnect and may be one of the following values:
-
| SEQ_number | DISCON_reason | Type | Description
|
|
| Zero | N_DISC_NORMAL | Discon |
Normal condition.
|
| N_DISC_ABNORMAL | Discon |
Abnormal condition.
|
|
| Non-zero | N_REJ_P | Reject |
Permanent condition.
|
| N_REJ_T | Reject |
Temporary condition.
|
| N_REJ_INCOMPAT_INFO | Reject |
Incompatible information in NS-User-Data.
|
| N_REJ_QOS_UNAVAIL_P | Reject |
QOS unavailable (permanent condition).
|
| N_REJ_QOS_UNAVAIL_T | Reject |
QOS unavailable (temporary condition).
|
| N_REJ_UNSPECIFIED | Reject |
Reason unspecified.
|
|
The
DISCON_reason
is currently ignored by
NPI-SCTP,
which simply sends an ABORT with the
SCTP_CAUSE_USER_INITIATED
cause under SCTP.
That is, all
DISCON_reason
codes form the
N_DISCON_REQ(7)
primitive map into
SCTP_CAUSE_USER_INITIATED.
- RES_length, RES_offset
- Specifies the length and offset from the beginning of the message block of the
responding addresses.
NPI-SCTP
does not have the ability to provide responding addresses that differ from the
addresses that appeared in the
DEST_length and DEST_offset
fields of the associated
N_CONN_IND(7)
primitive.
- SEQ_number
- When rejecting an incoming connection on a listening Stream, this field is set
to the
SEQ_number
that was present in the corresponding
N_CONN_IND(7)
primitive representing the incoming connection that is being rejected.
In all other cases (i.e, disconnecting an established association), this field
should be set to zero (0) by the NS user.
This primitive is interpreted as in
npi(7).
This indicates the refusal of an outstanding
NPI-SCTP
outgoing connection request, or the abortive release of an existing
NPI-SCTP
association.
- DISCON_orig, DISCON_reason
- The disconnect origin and reason may be one of the following values:
-
| DISCON_org | DISCON_reason | Type | Description
|
|
| N_PROVIDER | N_DISC_P | Discon |
Permanent condition.
|
| N_DISC_T | Discon |
Temporary condition.
|
| N_REJ_NSAP_UNKNOWN | Reject |
NSAP address unknown (permanent condition).
|
| N_REJ_NSAP_UNREACH_P | Reject |
NSAP address ureachable (permanent condition).
|
| N_REJ_NSAP_UNREACH_T | Reject |
NSAP address unreachable (temporary condition).
|
|
| N_USER | N_DISC_NORMAL | Discon |
Normal condition.
|
| N_DISC_ABNORMAL | Discon |
Abnormal condition.
|
| N_REJ_P | Reject |
Permanent condition.
|
| N_REJ_T | Reject |
Temporary condition.
|
| N_REJ_INCOMPAT_INFO | Reject |
Incompatible information in NS-User-Data.
|
|
| Either | N_REJ_QOS_UNAVAIL_P | Reject |
QOS unavailable (permanent condition).
|
| N_REJ_QOS_UNAVAIL_T | Reject |
QOS unavailable (temporary condition).
|
| N_REJ_UNSPECIFIED | Reject |
Reason unspecified.
|
|
- RES_length, RES_offset
- Indicates the length and offset from the beginning of the message block of the
responding addresses.
NPI-SCTP
does not have to ability to have responding addresses that are different from
those indicated in the
SRC_length and SRC_offset
fields of the corresponding
N_CONN_IND(7)
primitive.
NPI-SCTP
will always set these fields to zero (0).
- SEQ_number
- The sequence number of a currently outstanding connection indication to which
the disconnect corresponds. This value is non-zero only on a listening Stream
for which an outstanding
N_CONN_IND(7)
primmitive has been issued with not
N_DISCON_REQ(7)
or
N_CONN_RES(7)
primitive having been issued by the NS user with the same sequence number.
USAGE
The
NPI-SCTP
interface has a cleaner and simpler interface to SCTP than the
tpi_sctp(7)
interface, yet has some richer features such as receipt confirmation. It is
more suitable for use as an internal service interface by
STREAMS(9)
pushable modules and multiplexing drivers. It is therefore the service
interface of choice for
SIGTRAN(4)
modules and drivers.
In constrast, the TPI-SCTP interface,
tpi_sctp(7)
is more suitable for user-space programs and supports the
libxnet(3)
XTI/TLI library.
IOCTLS
The
NPI-SCTP
provider does not supoprt input-output controls.
ERROR HANDLING
Error handling is in accordance with
npi(7).
ERRORS
Errors are in accordance with
npi(7).
They are repeated here as follows:
Error Acknowledgement Codes
The following error codes can be present in the
NPI_error
field of the
N_ERROR_ACK(7)
primitive:
- [NBADADDR]
- The network address as specified in the primitive was in an incorrect format,
or the address contained illegal information.
- [NBADOPT]
- The options values as specified in the primitive were in an incorrect format,
or they contained illegal information.
- [NBADQOSPARAM]
- The QOS values specified are outside the range supported by the NS provider.
illegal.
- [NBADQOSTYPE]
- The QOS structure type is not supported by the NS provider.
- [NBADTOKEN]
- Token used is not associated with an open stream.
- [NNOADDR]
- The NS provider could not allocate an address.
- [NACCESS]
- The user did not have proper permissions.
- [NOUTSTATE]
- The primitive was issued from an invalid state.
- [NBADSEQ]
- The sequence number specified in the primitive was incorrect or illegal.
- [NBADFLAG]
- The flags specified in the primitive were incorrect or illegal.
- [NBADDATA]
- The amount of user data specified was outside the range supported by the NS
provider.
- [NSYSERR]
- A system error has occurred and the Linux system error is indicated in the
primitive.
- [NNOTSUPPORT]
- Specified primitive type is not known to the NS provider.
Disconnect Codes
The following error codes can be present in the
DISCON_reason
field of the
N_DISCON_IND(7)
primitive:
- [ETIMEDOUT]
- connection timed out.
- [ECONNRESET]
- connection reset by peer.
- [ECONNABORTED]
- connection aborted.
- [EPROTO]
- protocol violation.
- [EINVAL]
- invalid SCTP parameter.
- [EMSGSIZE]
- invalid message size.
NOTICES
SCTP
has several implementations. This manpage is for the
sctp_n(4)
implementation that provides
npi(7)
access to the
Linux Fast-STREAMS
version of
SCTP.
For more information on the
OpenSS7
Linux NET4 version, see
sctp(7).
The use of the
N_qos_sel_data_sctp_t
structure of type
N_QOS_SEL_DATA_SCTP
immediately following the
N_DATA_REQ(7) or N_EXDATA_REQ(7)
primitive does not strictly follow the
npi(7).
Applications wishing to strictly follow the
npi(7)
will not include these structures and will, instead, issue a (non-priority)
N_OPTMGMT_REQ(7)
primitive ahead of the
N_DATA_REQ(7) or N_EXDATA_REQ(7)
primitive to set the default QOS parameters as required for the issued packet.
EXAMPLES
None.
DEVICES
- /dev/sctp_n
- the
npi(7)
device for
sctp(4)
SEE ALSO
sctp(7),
sctp(4),
sctp_n(4),
npi(7),
npi_ip(7).
BUGS
NPI-TPI
has no known bugs.
COMPATIBILITY
Network Provider Interface (NPI) Revision 2.0.0[1].
CONFORMANCE
NPI[1],
this Corrigendum.
HISTORY
New for
@PACAKAGE_TITLE@.
REFERENCES
- [1]
- 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>
- [2]
- RFC 2960,
Stream Control Transmission Protocol (SCTP), October 2000, Randall R. Stewart, ed., The Internet Society.
(Obsoleted by RFC 4960) (Updated by RFC 3309) (Status: PROPOSED STANDARD)
<http://www.ietf.org/rfc/rfc2960.txt>
- [3]
- RFC 3309,
Stream Control Transmission Protocol (SCTP) Checksum Change, September 2002, Jonathan Stone, ed., The Internet Society.
(Obsoleted by RFC 4960) (Updates RFC 2960) (Status: PROPOSED STANDARD)
<http://www.ietf.org/rfc/rfc3309.txt>
- [4]
- RFC 4460,
Stream Control Transmission Protocol (SCTP) Specification Errata and Issues, April 2006, R. Stewart, I. Aria-Rodriguez, K. Poon, A. Caro and M. Tuexen, The Internet Society.
(Status: INFORMATIONAL)
<http://www.ietf.org/rfc/rfc4460.txt>
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 STREAMS SCTP: Package strsctp version 0.9.2.9 released 2008-10-31.
Copyright©1997-2008OpenSS7 Corp.
All Rights Reserved.
(See roff source for permission notice.)
Index
- NAME
- SYNOPSIS
- DESCRIPTION
- INTERFACE
- ADDRESS FORMATS
- OPTIONS
- EXPEDITED DATA
- RECEIPT CONFIRMATION
- LOCAL MANAGEMENT INTERFACE
- N_INFO_REQ(7)
- N_INFO_ACK(7)
- N_OPTMGMT_REQ(7)
- N_BIND_REQ(7)
- N_BIND_ACK(7)
- N_UNBIND_REQ(7)
- N_ERROR_ACK(7)
- N_OK_ACK(7)
- PROTOCOL SERVICE INTERFACE
- N_UNITDATA_REQ(7)
- N_UNITDATA_IND(7)
- N_UDERROR_IND(7)
- N_CONN_REQ(7)
- N_CONN_CON(7)
- N_CONN_IND(7)
- N_CONN_RES(7)
- N_DATA_REQ(7), M_DATA(9)
- N_DATA_IND(7)
- N_EXDATA_REQ(7)
- N_EXDATA_IND(7)
- N_DATACK_REQ(7)
- N_DATACK_IND(7)
- N_RESET_REQ(7)
- N_RESET_IND(7)
- N_RESET_RES(7)
- N_RESET_CON(7)
- N_DISCON_REQ(7)
- N_DISCON_IND(7)
- USAGE
- IOCTLS
- ERROR HANDLING
- ERRORS
- Error Acknowledgement Codes
- Disconnect Codes
- NOTICES
- EXAMPLES
- DEVICES
- SEE ALSO
- BUGS
- COMPATIBILITY
- CONFORMANCE
- HISTORY
- REFERENCES
- TRADEMARKS
- IDENTIFICATION
This document was created by
man2html,
using the manual pages.
Time: 08:53:47 GMT, May 18, 2013