SOCK_SEQPACKET
abstraction through the
TP
protocol
(ISO
8073),
for the
SOCK_DGRAM
abstraction through the connectionless transport
protocol
(ISO
8602),
and for the
SOCK_RAW
abstraction
by providing direct access (for debugging) to the
CLNP
(ISO
8473) network layer protocol.
Sockets bound to the OSI protocol family use
the following address structure:
struct sockaddr_iso {
u_char siso_len; /* size of this sockaddr */
sa_family_t siso_family; /* addressing domain, AF_ISO */
u_char siso_plen; /* presentation selector length */
u_char siso_slen; /* session selector length */
u_char siso_tlen; /* transport selector length */
struct iso_addr siso_addr; /* network address */
u_char siso_pad[6]; /* space for gosip v2 SELs */
};
#define siso_nlen siso_addr.isoa_len
#define siso_data siso_addr.isoa_genaddr
struct iso_addr {
u_char isoa_len; /* length, not including this byte */
char isoa_genaddr[20]; /* general opaque address */
};
The fields of this structure are:
AF_ISO
.
Since the C language does not provide convenient variable length structures, we have separated the selector lengths from the data themselves. The network address and various selectors are stored contiguously, with the network address first, then the transport selector, and so on. Thus, if you had a network address of less than 20 bytes, the transport selector would encroach on space normally reserved for the network address.
SOCK_SEQPACKET
abstraction.
A raw interface to
CLNP
is available
by creating an
ISO
socket of type
SOCK_RAW
.
This is used for
CLNP
debugging only.