xref: /csrg-svn/share/man/man4/iso.4 (revision 64994)
163006Sbostic.\" Copyright (c) 1990, 1991, 1993
263006Sbostic.\"	The Regents of the University of California.  All rights reserved.
342481Ssklower.\"
442481Ssklower.\" %sccs.include.redist.man%
542481Ssklower.\"
6*64994Smckusick.\"     @(#)iso.4	8.2 (Berkeley) 11/30/93
742481Ssklower.\"
847675Scael.Dd
947675Scael.Dt ISO 4
1047675Scael.Os
1147675Scael.Sh NAME
1247675Scael.Nm iso
1347675Scael.Nd
1447675Scael.Tn ISO
1547675Scaelprotocol family
1647675Scael.Sh SYNOPSIS
1747675Scael.Fd #include <sys/types.h>
1847675Scael.Fd #include <netiso/iso.h>
1947675Scael.Sh DESCRIPTION
2047675ScaelThe
2147675Scael.Tn ISO
2247675Scaelprotocol family is a collection of protocols
2347675Scaelthat uses the
2447675Scael.Tn ISO
2547675Scaeladdress format.
2647675ScaelThe
2747675Scael.Tn ISO
2847675Scaelfamily provides protocol support for the
2947675Scael.Dv SOCK_SEQPACKET
3047675Scaelabstraction through the
3147675Scael.Tn TP
3247675Scaelprotocol
3347675Scael.Pf ( Tn ISO
3447675Scael8073),
3547675Scaelfor the
3647675Scael.Dv SOCK_DGRAM
3747675Scaelabstraction through the connectionless transport
3847675Scaelprotocol
3947675Scael.Pf ( Tn ISO
4047675Scael8602),
4147675Scaeland for the
4247675Scael.Dv SOCK_RAW
4347675Scaelabstraction
4442481Ssklowerby providing direct access (for debugging) to the
4547675Scael.Tn CLNP
4647675Scael.Pf ( Tn ISO
4747675Scael8473) network layer protocol.
4847675Scael.Sh ADDRESSING
4947675Scael.Tn ISO
5047675Scaeladdresses are based upon
5147675Scael.Tn ISO
5247675Scael8348/AD2,
5347675Scael.%T "Addendum to the Network Service Definition Covering Network Layer Addressing."
5447675Scael.Pp
5542481SsklowerSockets bound to the OSI protocol family use
5642481Ssklowerthe following address structure:
5747675Scael.Bd -literal
5842481Ssklowerstruct iso_addr {
5947675Scael     u_char    isoa_len;  /* length, not including this byte */
6047675Scael     char      isoa_genaddr[20];  /* general opaque address */
6142481Ssklower};
6242481Ssklower
6342481Ssklowerstruct sockaddr_iso {
6447675Scael     u_char    siso_len;      /* size of this sockaddr */
6547675Scael     u_char    siso_family;   /* addressing domain, AF_ISO */
6647675Scael     u_char    siso_plen;     /* presentation selector length */
6747675Scael     u_char    siso_slen;     /* session selector length */
6847675Scael     u_char    siso_tlen;     /* transport selector length */
6947675Scael     struct    iso_addr siso_addr; /* network address */
7047675Scael     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
7447675Scael.Ed
7547675Scael.Pp
7642481SsklowerThe fields of this structure are:
7747675Scael.Bl -tag -width Ds
7847675Scael.It Ar siso_len:
7942481SsklowerLength of the entire address structure, in bytes, which may grow to
80*64994Smckusickbe longer than the 32 bytes shown above.
8147675Scael.It Ar siso_family:
8247675ScaelIdentifies the domain:
8347675Scael.Dv AF_ISO .
8447675Scael.It Ar siso_tlen:
8542481SsklowerLength of the transport selector.
8647675Scael.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.
9047675Scael.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.
9447675Scael.It Ar siso_addr:
9542481SsklowerThe network part of the address, described below.
9647675Scael.El
9747675Scael.Sh TRANSPORT ADDRESSING
9847675Scael.Pp
9947675ScaelAn
10047675Scael.Tn ISO
10147675Scaeltransport 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.
10447675ScaelIn the Internet domain, this portion of the address is called a
10547675Scael.Em port .
10647675ScaelIn the
10747675Scael.Tn ISO
10847675Scaeldomain, this is called a
10947675Scael.Em transport selector
11047675Scael(also known at one time as a
11147675Scael.Em transport suffix ) .
11242481SsklowerWhile ports are always 16 bits,
11342481Ssklowertransport selectors may be
11442481Ssklowerof (almost) arbitrary size.
11547675Scael.Pp
116*64994SmckusickSince the C language does not provide convenient 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.
12447675Scael.Pp
12547675Scael.Sh NETWORK ADDRESSING.
12647675Scael.Tn ISO
12747675Scaelnetwork addresses are limited to 20 bytes in length.
12847675Scael.Tn ISO
12947675Scaelnetwork addresses can take any format.
13047675Scael.Sh PROTOCOLS
13147675ScaelThe
13247675Scael.Tn ARGO
13347675Scael1.0 implementation of the
13447675Scael.Tn ISO
13547675Scaelprotocol family comprises
13647675Scaelthe Connectionless-Mode Network Protocol
13747675Scael.Pq Tn CLNP ,
13847675Scaeland the Transport Protocol
13947675Scael.Pq Tn TP ,
14047675Scaelclasses 4 and 0,
14147675Scaeland
14247675Scael.Tn X.25 .
14347675Scael.Tn TP
14447675Scaelis used to support the
14547675Scael.Dv SOCK_SEQPACKET
14642481Ssklowerabstraction.
14747675ScaelA raw interface to
14847675Scael.Tn CLNP
14947675Scaelis available
15047675Scaelby creating an
15147675Scael.Tn ISO
15247675Scaelsocket of type
15347675Scael.Dv SOCK_RAW .
15447675ScaelThis is used for
15547675Scael.Tn CLNP
15647675Scaeldebugging only.
15747675Scael.Sh SEE ALSO
15847675Scael.Xr tp 4 ,
15947675Scael.Xr clnp 4 ,
16047675Scael.Xr cltp 4
161