File : posix-sockets-iso.ads
-- This code extracted from file dot5c.tex by Latex.
------------------------------------------------------------------------------
-- --
-- POSIX Ada95 Bindings for Protocol Independent Interfaces (P1003.5c) --
-- --
-- P O S I X . S o c k e t s . I S O --
-- --
-- S p e c --
-- --
-- --
-- This file is part of an implementation of an Ada95 API for the sockets --
-- and network support services found in P1003.1g -- Protocol Independent --
-- Interfaces. It is integrated with the FSU Implementation of POSIX.5b --
-- (FLORIST), an Ada API for POSIX OS services for use with the GNAT Ada --
-- compiler and the FSU Gnu Ada Runtime Library (GNARL). --
-- --
-- This package specification contains some text extracted from IEEE STD --
-- 1003.5: 1990, Information Technology -- POSIX Ada Language Interfaces --
-- Part 1: Binding for System Application Program Interface, as amended --
-- by IEEE STD 1003.5b: 1996, Amendment 1: Realtime Extensions, and as --
-- further amended by IEEE Draft STD 1003.5c: 1997, Amendment 2: Protocol --
-- Independent Interfaces, copyright 1997 by the Institute of Electrical --
-- and Electronics Engineers, Inc. --
-- --
-- The package specifications in the IEEE standards cited above represent --
-- only a portion of the documents and are not to be interpreteted --
-- outside the context of the documents. The standards must be used in --
-- conjunction with the package specifications in order to claim --
-- conformance. The IEEE takes no responsibility for and will assume no --
-- liability for damages resulting from the reader's misinterpretation of --
-- said information resulting from its out-of-context nature. To order --
-- copies of the IEEE standards, please contact the IEEE Service Center --
-- at 445 Hoes Lane, PO Box 1331, Piscataway, NJ 08855-1331; via phone at --
-- 1-800-678-IEEE, 908-981-1393; or via fax at 908-981-9667. --
-- --
-- These package specifications are distributed in the hope that they --
-- will be useful, but WITHOUT ANY WARRANTY; without even the implied --
-- warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
------------------------------------------------------------------------------
with POSIX.C;
package POSIX.Sockets.ISO is
ISO_Protocol : constant Protocol_Family := 0;
ISO_Transport_Protocol : constant Protocol_Number := 0;
Connectionless_Mode_Transport_Protocol
: constant Protocol_Number := 0;
Connectionless_Mode_Network_Protocol
: constant Protocol_Number := 0;
type ISO_Socket_Address is new Socket_Address with private;
type ISO_Address is new POSIX.Octet_Array;
type Presentation_Selector is new POSIX.Octet_Array;
type Session_Selector is new POSIX.Octet_Array;
type Transport_Selector is new POSIX.Octet_Array;
type GOSIP_Selector is new POSIX.Octet_Array;
function Get_ISO_Address (Name : ISO_Socket_Address)
return ISO_Address;
procedure Set_ISO_Address
(Name : in out ISO_Socket_Address;
Address_Value : in ISO_Address);
function Get_Presentation_Selector (Name : ISO_Socket_Address)
return Presentation_Selector;
procedure Set_Presentation_Selector
(Name : in out ISO_Socket_Address;
Selector : in Presentation_Selector);
function Get_Session_Selector (Name : ISO_Socket_Address)
return Session_Selector;
procedure Set_Session_Selector
(Name : in out ISO_Socket_Address;
Selector : in Session_Selector);
function Get_Transport_Selector (Name : ISO_Socket_Address)
return Transport_Selector;
procedure Set_Transport_Selector
(Name : in out ISO_Socket_Address;
Selector : in Transport_Selector);
function Get_GOSIP_Selector (Name : ISO_Socket_Address)
return GOSIP_Selector;
procedure Set_GOSIP_Selector
(Name : in out ISO_Socket_Address;
Selector : in GOSIP_Selector);
-- Dispatching operations for ISO_Socket_Address
function Get_Socket_Name (Handle : Socket_Message)
return ISO_Socket_Address;
function Get_Address (Info_Item : Socket_Address_Information)
return ISO_Socket_Address;
function Get_Peer_Name (Socket : POSIX.IO.File_Descriptor)
return ISO_Socket_Address;
function Get_Socket_Name (Socket : POSIX.IO.File_Descriptor)
return ISO_Socket_Address;
type CL_Options is new POSIX.Octet_Array;
type CL_Flags is new POSIX.Option_Set;
No_Segmentation : constant CL_Flags := Empty_Set;
Suppress_Error_PDUs : constant CL_Flags := Empty_Set;
No_Checksum : constant CL_Flags := Empty_Set;
function Get_CL_Options
(Socket : POSIX.IO.File_Descriptor)
return CL_Options;
procedure Set_CL_Options
(Socket : in POSIX.IO.File_Descriptor;
To : in CL_Options);
function Get_CL_Flags
(Socket : POSIX.IO.File_Descriptor)
return CL_Flags;
procedure Set_CL_Flags
(Socket : in POSIX.IO.File_Descriptor;
To : in CL_Flags);
type TP_Flags is new POSIX.Option_Set;
Public_Data_Network_Quality_Of_Service
: constant TP_Flags := Empty_Set;
Peer_On_Same_Network : constant TP_Flags := Empty_Set;
Expedited_Data_Present : constant TP_Flags := Empty_Set;
function Get_TP_Flags
(Socket : POSIX.IO.File_Descriptor)
return TP_Flags;
function Get_Connection_Data
(Socket : POSIX.IO.File_Descriptor)
return POSIX.Octet_Array;
procedure Set_Connection_Data
(Socket : in POSIX.IO.File_Descriptor;
To : in POSIX.Octet_Array);
function Get_Disconnect_Data
(Socket : POSIX.IO.File_Descriptor)
return POSIX.Octet_Array;
procedure Set_Disconnect_Data
(Socket : in POSIX.IO.File_Descriptor;
To : in POSIX.Octet_Array);
function Get_Confirmation_Data
(Socket : POSIX.IO.File_Descriptor)
return POSIX.Octet_Array;
procedure Set_Confirmation_Data
(Socket : in POSIX.IO.File_Descriptor;
To : in POSIX.Octet_Array);
type TP_Ancillary_Data_Type is
(Connection_Data, Disconnect_Data, Confirmation_Data);
type TP_Ancillary_Data (Kind : TP_Ancillary_Data_Type;
Size : Positive) is private;
procedure Set_Ancillary_Data
(Message : in out Socket_Message;
Object : in TP_Ancillary_Data);
function Get_Ancillary_Data
(Message : Socket_Message)
return TP_Ancillary_Data;
procedure Set_Ancillary_Data_Array
(Object : in out TP_Ancillary_Data;
Data : in POSIX.Octet_Array);
function Get_Ancillary_Data_Array
(Object : TP_Ancillary_Data)
return POSIX.Octet_Array;
type Connection_Parameters is private;
function Get_Connection_Parameters
(Socket : POSIX.IO.File_Descriptor)
return Connection_Parameters;
procedure Set_Connection_Parameters
(Socket : in POSIX.IO.File_Descriptor;
To : in Connection_Parameters);
function Get_Retransmit_Number
(Object : Connection_Parameters)
return Natural;
procedure Set_Retransmit_Number
(Object : in out Connection_Parameters;
To : in Natural);
type Window_Size is range 128 .. 16384;
function Get_Window_Size
(Object : Connection_Parameters)
return Window_Size;
procedure Set_Window_Size
(Object : in out Connection_Parameters;
To : in Window_Size);
type TPDU_Size is range 7 .. 13;
function Get_TPDU_Size
(Object : Connection_Parameters)
return TPDU_Size;
procedure Set_TPDU_Size
(Object : in out Connection_Parameters;
To : in TPDU_Size);
type TP_Acknowledgment_Strategy is
(Acknowledge_Window, Acknowledge_Each);
function Get_Acknowledgment_Strategy
(Object : Connection_Parameters)
return TP_Acknowledgment_Strategy;
procedure Set_Acknowledgment_Strategy
(Object : in out Connection_Parameters;
To : in TP_Acknowledgment_Strategy);
type TP_Retransmit_Strategy is
(Retransmit_Each_Packet, Use_Congestion_Window, Fast_Start);
function Get_Retransmit_Strategy
(Object : Connection_Parameters)
return TP_Retransmit_Strategy;
procedure Set_Retransmit_Strategy
(Object : in out Connection_Parameters;
To : in TP_Retransmit_Strategy);
type TP_Class is new POSIX.Option_Set;
TP_Class_0 : constant TP_Class := Empty_Set;
TP_Class_1 : constant TP_Class := Empty_Set;
TP_Class_2 : constant TP_Class := Empty_Set;
TP_Class_3 : constant TP_Class := Empty_Set;
TP_Class_4 : constant TP_Class := Empty_Set;
function Get_TP_Class
(Object : Connection_Parameters)
return TP_Class;
procedure Set_TP_Class
(Object : in out Connection_Parameters;
To : in TP_Class);
function Get_Extended_Format
(Object : Connection_Parameters)
return Boolean;
procedure Set_Extended_Format
(Object : in out Connection_Parameters;
To : in Boolean);
function Get_Expedited_Service
(Object : Connection_Parameters)
return Boolean;
procedure Set_Expedited_Service
(Object : in out Connection_Parameters;
To : in Boolean);
function Get_Negotiate_Checksums
(Object : Connection_Parameters)
return Boolean;
procedure Set_Negotiate_Checksums
(Object : in out Connection_Parameters;
To : in Boolean);
function Get_Signal_Disconnections
(Object : Connection_Parameters)
return Boolean;
procedure Set_Signal_Disconnections
(Object : in out Connection_Parameters;
To : in Boolean);
function Get_Protect_Parameters
(Object : Connection_Parameters)
return Boolean;
procedure Set_Protect_Parameters
(Object : in out Connection_Parameters;
To : in Boolean);
type TP_Network_Service is new Integer;
ISO_Connectionless : constant TP_Network_Service
:= 0;
ISO_Connection : constant TP_Network_Service
:= 0;
ISO_Connectionless_Over_X25 : constant TP_Network_Service
:= 0;
IP_Connectionless : constant TP_Network_Service
:= 0;
function Get_Network_Service
(Object : Connection_Parameters)
return TP_Network_Service;
procedure Set_Network_Service
(Object : in out Connection_Parameters;
To : in TP_Network_Service);
private
type ISO_Socket_Address is new Socket_Address with record
C : aliased POSIX.C.Sockets.struct_sockaddr_iso :=
POSIX.C.Sockets.struct_sockaddr_iso ' (
siso_family => AF_ISO,
siso_plen => 0,
siso_slen => 0,
siso_tlen => 0,
siso_addr => (isoa_len => 0,
isoa_genaddr => (others => NUL)),
siso_pad => (others => NUL));
end record;
function Address (Name : ISO_Socket_Address)
return POSIX.C.Sockets.sockaddr_var_ptr;
function Length (Name : ISO_Socket_Address)
return POSIX.C.size_t;
type Connection_Parameters is new Integer;
type TP_Ancillary_Data (Kind : TP_Ancillary_Data_Type;
Size : Positive) is
record
case Kind is
when Connection_Data =>
C1 : aliased POSIX.C.Sockets.struct_cmsghdr :=
struct_cmsghdr ' (cmsg_len => size_t (12 + Size),
cmsg_level => 0, -- SOL_TRANSPORT
cmsg_type => 0); -- TPOPT_CONN_DATA)
Data1 : POSIX.Octet_Array (1 .. Size);
when Disconnect_Data =>
C2 : aliased POSIX.C.Sockets.struct_cmsghdr :=
struct_cmsghdr ' (cmsg_len => size_t (12 + Size),
cmsg_level => 0, -- SOL_TRANSPORT
cmsg_type => 0); -- TPOPT_DISC_DATA)
Data2 : POSIX.Octet_Array (1 .. Size);
when Confirmation_Data =>
C3 : aliased POSIX.C.Sockets.struct_cmsghdr :=
struct_cmsghdr ' (cmsg_len => size_t (12 + Size),
cmsg_level => 0, -- SOL_TRANSPORT
cmsg_type => 0); -- TPOPT_CFRM_DATA)
Data3 : POSIX.Octet_Array (1 .. Size);
end case;
end record;
end POSIX.Sockets.ISO;