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