xref: /csrg-svn/share/man/man4/iso.4 (revision 47675)
1*47675Scael.\" Copyright (c) 1990, 1991 The Regents of the University of California.
242481Ssklower.\" All rights reserved.
342481Ssklower.\"
442481Ssklower.\" %sccs.include.redist.man%
542481Ssklower.\"
6*47675Scael.\"     @(#)iso.4	6.2 (Berkeley) 03/28/91
742481Ssklower.\"
8*47675Scael.Dd
9*47675Scael.Dt ISO 4
10*47675Scael.Os
11*47675Scael.Sh NAME
12*47675Scael.Nm iso
13*47675Scael.Nd
14*47675Scael.Tn ISO
15*47675Scaelprotocol family
16*47675Scael.Sh SYNOPSIS
17*47675Scael.Fd #include <sys/types.h>
18*47675Scael.Fd #include <netiso/iso.h>
19*47675Scael.Sh DESCRIPTION
20*47675ScaelThe
21*47675Scael.Tn ISO
22*47675Scaelprotocol family is a collection of protocols
23*47675Scaelthat uses the
24*47675Scael.Tn ISO
25*47675Scaeladdress format.
26*47675ScaelThe
27*47675Scael.Tn ISO
28*47675Scaelfamily provides protocol support for the
29*47675Scael.Dv SOCK_SEQPACKET
30*47675Scaelabstraction through the
31*47675Scael.Tn TP
32*47675Scaelprotocol
33*47675Scael.Pf ( Tn ISO
34*47675Scael8073),
35*47675Scaelfor the
36*47675Scael.Dv SOCK_DGRAM
37*47675Scaelabstraction through the connectionless transport
38*47675Scaelprotocol
39*47675Scael.Pf ( Tn ISO
40*47675Scael8602),
41*47675Scaeland for the
42*47675Scael.Dv SOCK_RAW
43*47675Scaelabstraction
4442481Ssklowerby providing direct access (for debugging) to the
45*47675Scael.Tn CLNP
46*47675Scael.Pf ( Tn ISO
47*47675Scael8473) network layer protocol.
48*47675Scael.Sh ADDRESSING
49*47675Scael.Tn ISO
50*47675Scaeladdresses are based upon
51*47675Scael.Tn ISO
52*47675Scael8348/AD2,
53*47675Scael.%T "Addendum to the Network Service Definition Covering Network Layer Addressing."
54*47675Scael.Pp
5542481SsklowerSockets bound to the OSI protocol family use
5642481Ssklowerthe following address structure:
57*47675Scael.Bd -literal
5842481Ssklowerstruct iso_addr {
59*47675Scael     u_char    isoa_len;  /* length, not including this byte */
60*47675Scael     char      isoa_genaddr[20];  /* general opaque address */
6142481Ssklower};
6242481Ssklower
6342481Ssklowerstruct sockaddr_iso {
64*47675Scael     u_char    siso_len;      /* size of this sockaddr */
65*47675Scael     u_char    siso_family;   /* addressing domain, AF_ISO */
66*47675Scael     u_char    siso_plen;     /* presentation selector length */
67*47675Scael     u_char    siso_slen;     /* session selector length */
68*47675Scael     u_char    siso_tlen;     /* transport selector length */
69*47675Scael     struct    iso_addr siso_addr; /* network address */
70*47675Scael     u_char    siso_pad[6];    /* space for gosip v2 SELs */
7142481Ssklower};
7242481Ssklower#define siso_nlen siso_addr.isoa_len
7342481Ssklower#define siso_data siso_addr.isoa_genaddr
74*47675Scael.Ed
75*47675Scael.Pp
7642481SsklowerThe fields of this structure are:
77*47675Scael.Bl -tag -width Ds
78*47675Scael.It Ar siso_len:
7942481SsklowerLength of the entire address structure, in bytes, which may grow to
8042481Ssklowerbe longer than the 32 bytes show above.
81*47675Scael.It Ar siso_family:
82*47675ScaelIdentifies the domain:
83*47675Scael.Dv AF_ISO .
84*47675Scael.It Ar siso_tlen:
8542481SsklowerLength of the transport selector.
86*47675Scael.It Ar siso_slen:
8742481SsklowerLength of the session selector.
8842481SsklowerThis is not currently supported by the kernel and is provided as
8942481Ssklowera convenience for user level programs.
90*47675Scael.It Ar siso_plen:
9142481SsklowerLength of the presentation selector.
9242481SsklowerThis is not currently supported by the kernel and is provided as
9342481Ssklowera convenience for user level programs.
94*47675Scael.It Ar siso_addr:
9542481SsklowerThe network part of the address, described below.
96*47675Scael.El
97*47675Scael.Sh TRANSPORT ADDRESSING
98*47675Scael.Pp
99*47675ScaelAn
100*47675Scael.Tn ISO
101*47675Scaeltransport address is similar to an Internet address in that
10242481Ssklowerit contains a network-address portion and a portion that the
10342481Ssklowertransport layer uses to multiplex its services among clients.
104*47675ScaelIn the Internet domain, this portion of the address is called a
105*47675Scael.Em port .
106*47675ScaelIn the
107*47675Scael.Tn ISO
108*47675Scaeldomain, this is called a
109*47675Scael.Em transport selector
110*47675Scael(also known at one time as a
111*47675Scael.Em transport suffix ) .
11242481SsklowerWhile ports are always 16 bits,
11342481Ssklowertransport selectors may be
11442481Ssklowerof (almost) arbitrary size.
115*47675Scael.Pp
11642481SsklowerSince the C language does not provide conveninent variable
11742481Ssklowerlength structures, we have separated the selector lengths
11842481Ssklowerfrom the data themselves.
11942481SsklowerThe network address and various selectors are stored contiguously,
12042481Ssklowerwith the network address first, then the transport selector, and so
12142481Sskloweron.  Thus, if you had a nework address of less then 20 bytes,
12242481Ssklowerthe transport selector would encroach on space normally reserved
12342481Ssklowerfor the network address.
124*47675Scael.Pp
125*47675Scael.Sh NETWORK ADDRESSING.
126*47675Scael.Tn ISO
127*47675Scaelnetwork addresses are limited to 20 bytes in length.
128*47675Scael.Tn ISO
129*47675Scaelnetwork addresses can take any format.
130*47675Scael.Sh PROTOCOLS
131*47675ScaelThe
132*47675Scael.Tn ARGO
133*47675Scael1.0 implementation of the
134*47675Scael.Tn ISO
135*47675Scaelprotocol family comprises
136*47675Scaelthe Connectionless-Mode Network Protocol
137*47675Scael.Pq Tn CLNP ,
138*47675Scaeland the Transport Protocol
139*47675Scael.Pq Tn TP ,
140*47675Scaelclasses 4 and 0,
141*47675Scaeland
142*47675Scael.Tn X.25 .
143*47675Scael.Tn TP
144*47675Scaelis used to support the
145*47675Scael.Dv SOCK_SEQPACKET
14642481Ssklowerabstraction.
147*47675ScaelA raw interface to
148*47675Scael.Tn CLNP
149*47675Scaelis available
150*47675Scaelby creating an
151*47675Scael.Tn ISO
152*47675Scaelsocket of type
153*47675Scael.Dv SOCK_RAW .
154*47675ScaelThis is used for
155*47675Scael.Tn CLNP
156*47675Scaeldebugging only.
157*47675Scael.Sh SEE ALSO
158*47675Scael.Xr tp 4 ,
159*47675Scael.Xr clnp 4 ,
160*47675Scael.Xr cltp 4
161*47675Scael.Sh HISTORY
162*47675ScaelThe
163*47675Scael.Nm
164*47675Scaelprotocol family implementation
165*47675Scael.Ud
166