Difference between revisions of "TIP6Transport"

From Ultibo.org
Jump to: navigation, search
(Created page with "Return to Unit IPv6 __TOC__ === Description === ---- ''To be documented'' === Class definitions === ---- <div class="toccolours mw-collapsible mw-collapse...")
 
 
Line 230: Line 230:
 
|-
 
|-
 
| <code>function GetHostByNext(APrevious:TIP6HostEntry; ALock,AUnlock:Boolean):TIP6HostEntry;</code>
 
| <code>function GetHostByNext(APrevious:TIP6HostEntry; ALock,AUnlock:Boolean):TIP6HostEntry;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckHost(AHost:TIP6HostEntry; ALock:Boolean):Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 250: Line 253:
 
|-
 
|-
 
| <code>function GetRouteByNext(APrevious:TIP6RouteEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6RouteEntry;</code>
 
| <code>function GetRouteByNext(APrevious:TIP6RouteEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6RouteEntry;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckRoute(ARoute:TIP6RouteEntry; ALock:Boolean; AState:LongWord):Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 267: Line 273:
 
|-
 
|-
 
| <code>function GetAddressByNext(APrevious:TIP6AddressEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6AddressEntry;</code>
 
| <code>function GetAddressByNext(APrevious:TIP6AddressEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6AddressEntry;</code>
 +
| &nbsp;
 +
|-
 +
| <code>function CheckAddress(AAddress:TIP6AddressEntry; ALock:Boolean; AState:LongWord):Boolean;</code>
 
| &nbsp;
 
| &nbsp;
 
|-
 
|-
Line 930: Line 939:
 
! Note
 
! Note
 
| None documented
 
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function TIP6Transport.CheckHost(AHost:TIP6HostEntry; ALock:Boolean):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check a host entry in the host cache</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Host
 +
| The host entry to check
 +
|-
 +
! Lock
 +
| If True then lock the found entry before returning
 +
|-
 +
! Note
 +
| This allows safely obtaining a lock on an existing object in case it has been freed
 
|-
 
|-
 
|}
 
|}
Line 1,020: Line 1,047:
 
! Note
 
! Note
 
| None documented
 
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function TIP6Transport.CheckRoute(ARoute:TIP6RouteEntry; ALock:Boolean; AState:LongWord):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check a route entry in the route cache</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Route
 +
| The route entry to check
 +
|-
 +
! Lock
 +
| If True then lock the found entry before returning
 +
|-
 +
! State
 +
| The lock type if Lock is True (NETWORK_LOCK_READ or NETWORK_LOCK_WRITE)
 +
|-
 +
! Note
 +
| This allows safely obtaining a lock on an existing object in case it has been freed
 
|-
 
|-
 
|}
 
|}
Line 1,101: Line 1,149:
 
! Note
 
! Note
 
| None documented
 
| None documented
 +
|-
 +
|}
 +
</div></div>
 +
<br />
 +
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 +
<pre style="border: 0; padding-bottom:0px;">function TIP6Transport.CheckAddress(AAddress:TIP6AddressEntry; ALock:Boolean; AState:LongWord):Boolean;</pre>
 +
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Check an address entry in the address cache</div>
 +
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 +
{| class="wikitable" style="font-size: 14px; background: white;"
 +
|-
 +
! Address
 +
| The address entry to check
 +
|-
 +
! Lock
 +
| If True then lock the found entry before returning
 +
|-
 +
! State
 +
| The lock type if Lock is True (NETWORK_LOCK_READ or NETWORK_LOCK_WRITE)
 +
|-
 +
! Note
 +
| This allows safely obtaining a lock on an existing object in case it has been freed
 
|-
 
|-
 
|}
 
|}

Latest revision as of 23:26, 12 October 2022

Return to Unit IPv6


Description


To be documented

Class definitions



TIP6Transport = class(TNetworkTransport)

constructor Create(AManager:TTransportManager; const AName:String);  
destructor Destroy; override;  
private
FNextIP6Id:Word;  
FNextIP6Lock:TMutexHandle;  
 
FFragments:TIP6Buffer;  
 
FHosts:TNetworkList;  
FServs:TNetworkList;  
FProtos:TNetworkList;  
FRoutes:TNetworkList;  
FNetworks:TNetworkList;  
FAddresses:TNetworkList;  
 
FDefaultAddress:TIn6Addr;  
FLoopbackAddress:TIn6Addr;  
FBroadcastAddress:TIn6Addr;  
FNameservers:TIP6Nameservers; (Part of TNetworkList)
FNameserverLock:TMutexHandle;  
 
FDefaultHopLimit:LongWord;  
FAutoRelease:Boolean;  
 
function PacketHandler(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;  
function FragmentHandler(ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;  
 
function CheckFragment(ABuffer:Pointer):Boolean;  
 
function GetNextIP6Id(AIncrement:Boolean):Word;  
 
function GetIP6Nameserver(ACount:LongWord):TIn6Addr;  
 
function GetAdapterConfigType(const AName:String):Word;  
function GetAdapterConfigAddress(const AName:String):TIn6Addr;  
function GetAdapterConfigNetmask(const AName:String):TIn6Addr;  
function GetAdapterConfigGateway(const AName:String):TIn6Addr;  
function GetAdapterConfigServer(const AName:String):TIn6Addr;  
protected
function FilterPacket(ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean; override;  
function ForwardPacket(AAdapter:TTransportAdapter; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean; override;  
public
property Nameservers:TIP6Nameservers read FNameservers;  
 
property DefaultHopLimit:LongWord read FDefaultHopLimit write FDefaultHopLimit;  
 
property AutoRelease:Boolean read FAutoRelease write FAutoRelease;  
 
function AddAdapter(AAdapter:TNetworkAdapter; AConfigType:Word; AAddress,ANetmask,AGateway,AServer:Pointer):Boolean; override;  
function RemoveAdapter(AAdapter:TNetworkAdapter):Boolean; override;  
 
function AddProtocol(AProtocol:Word; APacketHandler:TTransportPacketHandler; AControlHandler:TTransportControlHandler):THandle; override;  
function RemoveProtocol(AHandle:THandle; AProtocol:Word):Boolean; override;  
 
function AddFilter(AProtocol:Word; AFilterHandler:TTransportFilterHandler):THandle; override;  
function RemoveFilter(AHandle:THandle; AProtocol:Word):Boolean; override;  
 
function AddConfig(AConfigType:Word; AConfigAuto:Boolean; AConfigHandler:TTransportConfigHandler):THandle; override;  
function RemoveConfig(AHandle:THandle; AConfigType:Word):Boolean; override;  
 
function SendPacket(ASocket:TTransportSocket; ASource,ADest:Pointer; APacket:PPacketFragment; ASize,AFlags:Integer):Integer; override;  
function SendControl(ASource,ADest:Pointer; AProtocol,ACommand,ACode:Word; AAddress,AData:Pointer; ASize:Integer):Boolean; override;  
 
function GetSockOpt(ASocket:TTransportSocket; ALevel,AOptName:Integer; AOptValue:PChar; var AOptLength:Integer):Integer; override;  
function SetSockOpt(ASocket:TTransportSocket; ALevel,AOptName:Integer; AOptValue:PChar; AOptLength:Integer):Integer; override;  
 
function StartTransport:Boolean; override;  
function StopTransport:Boolean; override;  
function ProcessTransport:Boolean; override;  
 
function BindTransport(AAdapter:TNetworkAdapter):Boolean; override;  
function UnbindTransport(AAdapter:TNetworkAdapter):Boolean; override;  
 
function AddNameserver(const AAddress:TIn6Addr):Boolean;  
function RemoveNameserver(const AAddress:TIn6Addr):Boolean;  
 
function GetHostByName(const AName:String; ALock:Boolean):TIP6HostEntry;  
function GetHostByAddress(const AAddress:TIn6Addr; ALock:Boolean):TIP6HostEntry;  
function GetHostByNext(APrevious:TIP6HostEntry; ALock,AUnlock:Boolean):TIP6HostEntry;  
function CheckHost(AHost:TIP6HostEntry; ALock:Boolean):Boolean;  
function AddHost(const AAddress:TIn6Addr; const AName:String; AType:Word; ALock:Boolean):TIP6HostEntry;  
function RemoveHost(const AAddress:TIn6Addr):Boolean;  
procedure FlushHosts(All:Boolean);  
 
function GetRouteByAddress(const AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6RouteEntry;  
function GetRouteByNetwork(const ANetwork,AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6RouteEntry;  
function GetRouteByNext(APrevious:TIP6RouteEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6RouteEntry;  
function CheckRoute(ARoute:TIP6RouteEntry; ALock:Boolean; AState:LongWord):Boolean;  
function AddRoute(const ANetwork,ANetmask,AGateway,AAddress:TIn6Addr; AType:Word; ALock:Boolean; AState:LongWord):TIP6RouteEntry;  
function RemoveRoute(const ANetwork,AAddress:TIn6Addr):Boolean;  
procedure FlushRoutes(All:Boolean);  
 
function GetAddressByAddress(const AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6AddressEntry;  
function GetAddressByNext(APrevious:TIP6AddressEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6AddressEntry;  
function CheckAddress(AAddress:TIP6AddressEntry; ALock:Boolean; AState:LongWord):Boolean;  
function AddAddress(const AAddress:TIn6Addr; AType:Word; AAdapter:TNetworkAdapter; ALock:Boolean; AState:LongWord):TIP6AddressEntry;  
function RemoveAddress(const AAddress:TIn6Addr):Boolean;  
procedure FlushAddresses(All:Boolean);  
 
function GetNetworkByName(const AName:String; ALock:Boolean):TIP6NetworkEntry;  
function GetNetworkByAddress(const ANetwork:TIn6Addr; ALock:Boolean):TIP6NetworkEntry;  
function AddNetwork(const AName:String; const ANetwork:TIn6Addr; ALock:Boolean):TIP6NetworkEntry;  
function RemoveNetwork(const AName:String):Boolean;  
 
function GetServByName(const AName,AProtocol:String; ALock:Boolean):TIP6ServEntry;  
function GetServByPort(APort:Word; const AProtocol:String; ALock:Boolean):TIP6ServEntry;  
function AddServ(const AName,AProtocol:String; APort:Word; ALock:Boolean):TIP6ServEntry;  
function RemoveServ(const AName,AProtocol:String):Boolean;  
 
function GetProtoByName(const AName:String; ALock:Boolean):TIP6ProtoEntry;  
function GetProtoByNumber(ANumber:Word; ALock:Boolean):TIP6ProtoEntry;  
function AddProto(const AName:String; ANumber:Word; ALock:Boolean):TIP6ProtoEntry;  
function RemoveProto(const AName:String):Boolean;  
 
function CompareLocal(const AAddress:TIn6Addr):Boolean;  
function CompareDefault(const AAddress:TIn6Addr):Boolean;  
function CompareLoopback(const AAddress:TIn6Addr):Boolean;  
function CompareDirected(const AAddress:TIn6Addr):Boolean;  
function CompareBroadcast(const AAddress:TIn6Addr):Boolean;  
function CompareMulticast(const AAddress:TIn6Addr):Boolean;  
function CompareAddress(const AAddress1,AAddress2:TIn6Addr):Boolean;  
function CompareSubnet(const AAddress,ANetwork,ANetmask:TIn6Addr):Boolean;  


Function declarations



constructor TIP6Transport.Create(AManager:TTransportManager; const AName:String);
Description: To be documented
Note None documented


destructor TIP6Transport.Destroy;
Description: To be documented
Note None documented


function TIP6Transport.PacketHandler(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;
Description: Process a packet received by an Adapter
Handle The Handle of the Transport Adapter the packet was received from
Source The source hardware address of the received packet (Set by Adapter)
Dest The destination hardware address of the received packet (Set by Adapter)
Packet The received packet (The complete packet without Adapter header)
Size The size of the received packet in bytes
Broadcast True if the destination address is a broadcast address
Note The first protocol handler to accept the packet causes processing to cease


function TIP6Transport.FragmentHandler(ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;
Description: Process a received fragment by adding it to the buffer and if completed process the packet
Source The source IP6 address of the received fragment (Set by Packet Handler)
Dest The destination IP6 address of the received fragment (Set by Packet Handler)
Packet The received fragment (The complete packet without Adapter header)
Size The size of the received fragment in bytes
Broadcast True if the destination address is a broadcast address


function TIP6Transport.CheckFragment(ABuffer:Pointer):Boolean;
Description: Check if a packet is a fragment and return True if it is
Buffer The packet to check (The complete packet without Adapter header)


function TIP6Transport.GetNextIP6Id(AIncrement:Boolean):Word;
Description: Get the next IP6 packet id number
Increment If True increment the next id


function TIP6Transport.GetIP6Nameserver(ACount:LongWord):TIn6Addr;
Description: Get the nameserver address from the network settings
Note None documented


function TIP6Transport.GetAdapterConfigType(const AName:String):Word;
Description: Get the adapter config type from the network settings
Note None documented


function TIP6Transport.GetAdapterConfigAddress(const AName:String):TIn6Addr;
Description: Get the adapter address from the network settings
Note None documented


function TIP6Transport.GetAdapterConfigNetmask(const AName:String):TIn6Addr;
Description: Get the adapter netmask from the network settings
Note None documented


function TIP6Transport.GetAdapterConfigGateway(const AName:String):TIn6Addr;
Description: Get the adapter gateway from the network settings
Note None documented


function TIP6Transport.GetAdapterConfigServer(const AName:String):TIn6Addr;
Description: Get the adapter server from the network settings
Note None documented


function TIP6Transport.FilterPacket(ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;
Description: Filter a received packet
Source The source IP6 address of the received fragment (Set by Packet or Fragment Handler)
Dest The destination IP6 address of the received fragment (Set by Packet or Fragment Handler)
Packet The received packet (The complete packet without Adapter header)
Size The size of the received packet in bytes
Broadcast True if the destination address is a broadcast address
Note If Filter returns True the Packet should be discarded

The first filter handler to reject the packet causes filtering to cease


function TIP6Transport.ForwardPacket(AAdapter:TTransportAdapter; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;
Description: Forward a received packet
Adapter The adapter the packet was received on
Source The source IP6 address of the received fragment (Set by Packet Handler)
Dest The destination IP6 address of the received fragment (Set by Packet Handler)
Packet The received packet (The complete packet without Adapter header)
Size The size of the received packet in bytes
Broadcast True if the destination address is a broadcast address
Note Caller must hold Adapter lock


function TIP6Transport.AddAdapter(AAdapter:TNetworkAdapter; AConfigType:Word; AAddress,ANetmask,AGateway,AServer:Pointer):Boolean;
Description: Add an adapter to this transport
Adapter The adapter to add
ConfigType The configuration type to use for configuring the adapter (eg CONFIG_TYPE_AUTO)
Address The transport address to use for this adapter (or nil if supplied during configuration)
Netmask The transport netmask to use for this adapter (or nil if supplied during configuration)
Gateway The transport default gateway to use for this adapter (or nil if supplied during configuration)
Server The transport configuration server to use for this adapter (or nil if supplied during configuration)


function TIP6Transport.RemoveAdapter(AAdapter:TNetworkAdapter):Boolean;
Description: Remove an adapter from this transport
Adapter The adapter to remove


function TIP6Transport.AddProtocol(AProtocol:Word; APacketHandler:TTransportPacketHandler; AControlHandler:TTransportControlHandler):THandle;
Description: Add a protocol to this transport
Protocol The protocol type to add
PacketHandler Packet handler to call on matching protocol type
ControlHandler Control handler to call on error condition


function TIP6Transport.RemoveProtocol(AHandle:THandle; AProtocol:Word):Boolean;
Description: Remove a protocol from this transport
Handle Handle of the protocol to remove
Protocol The protocol type to remove


function TIP6Transport.AddFilter(AProtocol:Word; AFilterHandler:TTransportFilterHandler):THandle;
Description: Add a filter to this transport
Protocol The protocol type of the filter to add
FilterHandler Filter handler to call on matching protocol type


function TIP6Transport.RemoveFilter(AHandle:THandle; AProtocol:Word):Boolean;
Description: Remove a filter from this transport
Handle Handle of the filter to remove
Protocol The protocol type of the filter to remove


function TIP6Transport.AddConfig(AConfigType:Word; AConfigAuto:Boolean; AConfigHandler:TTransportConfigHandler):THandle;
Description: Add a config to this transport
ConfigType The config type to add
ConfigAuto True if this config supports auto configuration type
ConfigHandler Config handler to call on matching config type


function TIP6Transport.RemoveConfig(AHandle:THandle; AConfigType:Word):Boolean;
Description: Remove a config from this transport
Handle Handle of the config to remove
ConfigType The config type to remove


function TIP6Transport.SendPacket(ASocket:TTransportSocket; ASource,ADest:Pointer; APacket:PPacketFragment; ASize,AFlags:Integer):Integer;
Description: Send a Packet by adding the Transport Header and other details to the Data
Source The source IP6 address of the packet
Dest The destination IP6 address of the packet
Packet The packet data to send
Note Caller must hold the Socket lock


function TIP6Transport.SendControl(ASource,ADest:Pointer; AProtocol,ACommand,ACode:Word; AAddress,AData:Pointer; ASize:Integer):Boolean;
Description: To be documented
Note The first control handler to accept the packet causes sending to cease


function TIP6Transport.GetSockOpt(ASocket:TTransportSocket; ALevel,AOptName:Integer; AOptValue:PChar; var AOptLength:Integer):Integer;
Description: BSD compatible Get Socket Option
Socket The socket to get the option from
Level The protocol level for the option
OptName The name of the option to get
OptValue The value of the option
OptLength The length of the option
Note Caller must hold the Socket lock


function TIP6Transport.SetSockOpt(ASocket:TTransportSocket; ALevel,AOptName:Integer; AOptValue:PChar; AOptLength:Integer):Integer;
Description: BSD compatible Set Socket Option
Socket The socket to set the option for
Level The protocol level for the option
OptName The name of the option to set
OptValue The value of the option
OptLength The length of the option
Note Caller must hold the Socket lock


function TIP6Transport.StartTransport:Boolean;
Description: Start this transport ready for sending and receiving
Note None documented


function TIP6Transport.StopTransport:Boolean;
Description: Stop this transport ready for removal
Note None documented


function TIP6Transport.ProcessTransport:Boolean;
Description: Process periodic tasks for this transport
Note None documented


function TIP6Transport.BindTransport(AAdapter:TNetworkAdapter):Boolean;
Description: Bind this transport to an adapter if appropriate
Adapter The adapter to bind to


function TIP6Transport.UnbindTransport(AAdapter:TNetworkAdapter):Boolean;
Description: Unbind this transport from an adapter if appropriate
Adapter The adapter to unbind from


function TIP6Transport.AddNameserver(const AAddress:TIn6Addr):Boolean;
Description: Add a nameserver IP6 address to the list of available nameservers
Address The IP6 address to add


function TIP6Transport.RemoveNameserver(const AAddress:TIn6Addr):Boolean;
Description: Remove a nameserver IP6 address from the list of available nameservers
Address The IP6 address to remove


function TIP6Transport.GetHostByName(const AName:String; ALock:Boolean):TIP6HostEntry;
Description: Find the name in the host cache
Name The name to find
Lock If True then lock the found entry before returning


function TIP6Transport.GetHostByAddress(const AAddress:TIn6Addr; ALock:Boolean):TIP6HostEntry;
Description: Find the IP6 address in the host cache
Address The IP6 address to find
Lock If True then lock the found entry before returning


function TIP6Transport.GetHostByNext(APrevious:TIP6HostEntry; ALock,AUnlock:Boolean):TIP6HostEntry;
Description: To be documented
Note None documented


function TIP6Transport.CheckHost(AHost:TIP6HostEntry; ALock:Boolean):Boolean;
Description: Check a host entry in the host cache
Host The host entry to check
Lock If True then lock the found entry before returning
Note This allows safely obtaining a lock on an existing object in case it has been freed


function TIP6Transport.AddHost(const AAddress:TIn6Addr; const AName:String; AType:Word; ALock:Boolean):TIP6HostEntry;
Description: Add an IP6 address and name to the host cache
Address The IP6 address of the entry to add
Name The name of the entry to add
Type The type of the added entry (eg HOST_TYPE_DYNAMIC)
Lock If True then lock the added entry before returning


function TIP6Transport.RemoveHost(const AAddress:TIn6Addr):Boolean;
Description: Remove an IP6 address from the host cache
Address The IP6 address to remove


procedure TIP6Transport.FlushHosts(All:Boolean);
Description: Flush hosts from the host cache
All If True flush all hosts, otherwise flush expired hosts.


function TIP6Transport.GetRouteByAddress(const AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6RouteEntry;
Description: Find the IP6 route in the route cache
Address The IP6 address to find the route for
Lock If True then lock the found entry before returning


function TIP6Transport.GetRouteByNetwork(const ANetwork,AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6RouteEntry;
Description: Find the IP6 network and address in the route cache
Network The network address of the entry to find
Address The IP6 address of the entry to find
Lock If True then lock the found entry before returning


function TIP6Transport.GetRouteByNext(APrevious:TIP6RouteEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6RouteEntry;
Description: To be documented
Note None documented


function TIP6Transport.CheckRoute(ARoute:TIP6RouteEntry; ALock:Boolean; AState:LongWord):Boolean;
Description: Check a route entry in the route cache
Route The route entry to check
Lock If True then lock the found entry before returning
State The lock type if Lock is True (NETWORK_LOCK_READ or NETWORK_LOCK_WRITE)
Note This allows safely obtaining a lock on an existing object in case it has been freed


function TIP6Transport.AddRoute(const ANetwork,ANetmask,AGateway,AAddress:TIn6Addr; AType:Word; ALock:Boolean; AState:LongWord):TIP6RouteEntry;
Description: Add an IP6 route to the route cache
Network The network address of the entry to add
Netmask The netmask of the entry to add
Gateway The gateway of the entry to add
Address The IP6 address of the entry to add
Type The type of the added entry (eg ROUTE_TYPE_DYNAMIC)
Lock If True then lock the added entry before returning


function TIP6Transport.RemoveRoute(const ANetwork,AAddress:TIn6Addr):Boolean;
Description: Remove an IP6 route from the route cache
Network The network address of the entry to remove
Address The IP6 address of the entry to remove


procedure TIP6Transport.FlushRoutes(All:Boolean);
Description: Flush routes from the route cache
All If True flush all routes, otherwise flush expired routes.


function TIP6Transport.GetAddressByAddress(const AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6AddressEntry;
Description: Find the IP6 address in the address cache
Address The IP6 address to find
Lock If True then lock the found entry before returning


function TIP6Transport.GetAddressByNext(APrevious:TIP6AddressEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6AddressEntry;
Description: To be documented
Note None documented


function TIP6Transport.CheckAddress(AAddress:TIP6AddressEntry; ALock:Boolean; AState:LongWord):Boolean;
Description: Check an address entry in the address cache
Address The address entry to check
Lock If True then lock the found entry before returning
State The lock type if Lock is True (NETWORK_LOCK_READ or NETWORK_LOCK_WRITE)
Note This allows safely obtaining a lock on an existing object in case it has been freed


function TIP6Transport.AddAddress(const AAddress:TIn6Addr; AType:Word; AAdapter:TNetworkAdapter; ALock:Boolean; AState:LongWord):TIP6AddressEntry;
Description: Add an IP6 address to the address cache
Address The IP6 address to add
Adapter The adapter the address is on
Type The type of the added entry (eg ADDRESS_TYPE_PRIMARY)
Lock If True then lock the added entry before returning
Note The handling of Secondary addresses should probably change in future to use a Binding type mechanism (eg AddBinding/RemoveBinding)


function TIP6Transport.RemoveAddress(const AAddress:TIn6Addr):Boolean;
Description: Remove an IP6 address from the address cache
Address The IP6 address to remove


procedure TIP6Transport.FlushAddresses(All:Boolean);
Description: Flush addresses from the adresses cache
All If True flush all addresses, otherwise flush invalid addresses.


function TIP6Transport.GetNetworkByName(const AName:String; ALock:Boolean):TIP6NetworkEntry;
Description: Find the name in the network cache
Name The name to find
Lock If True then lock the found entry before returning


function TIP6Transport.GetNetworkByAddress(const ANetwork:TIn6Addr; ALock:Boolean):TIP6NetworkEntry;
Description: Find the network address in the network cache
Network The network address to find
Lock If True then lock the found entry before returning


function TIP6Transport.AddNetwork(const AName:String; const ANetwork:TIn6Addr; ALock:Boolean):TIP6NetworkEntry;
Description: Add a network address and name to the network cache
Name The name of the entry to add
Network The network address of the entry to add
Lock If True then lock the added entry before returning


function TIP6Transport.RemoveNetwork(const AName:String):Boolean;
Description: Remove a network from the network cache
Name The name of the network to remove


function TIP6Transport.GetServByName(const AName,AProtocol:String; ALock:Boolean):TIP6ServEntry;
Description: Find the name in the service cache
Name The name to find
Protocol The protocol to find
Lock If True then lock the found entry before returning


function TIP6Transport.GetServByPort(APort:Word; const AProtocol:String; ALock:Boolean):TIP6ServEntry;
Description: Find the port in the service cache
Port The port to find
Protocol The protocol to find
Lock If True then lock the found entry before returning


function TIP6Transport.AddServ(const AName,AProtocol:String; APort:Word; ALock:Boolean):TIP6ServEntry;
Description: Add a service to the service cache
Name None documented
Protocol The protocol of the entry to add
Port The port of the entry to add
Lock If True then lock the added entry before returning


function TIP6Transport.RemoveServ(const AName,AProtocol:String):Boolean;
Description: Remove a service from the service cache
Name The name of the entry to remove
Protocol The protocol of the entry to remove


function TIP6Transport.GetProtoByName(const AName:String; ALock:Boolean):TIP6ProtoEntry;
Description: Find the name in the protocol cache
Name The name to find
Lock If True then lock the found entry before returning


function TIP6Transport.GetProtoByNumber(ANumber:Word; ALock:Boolean):TIP6ProtoEntry;
Description: Find the protocol number in the protocol cache
Number The protocol number to find
Lock If True then lock the found entry before returning


function TIP6Transport.AddProto(const AName:String; ANumber:Word; ALock:Boolean):TIP6ProtoEntry;
Description: Add a protocol to the protocol cache
Name The name of the entry to add
Number The protocol number of the entry to add
Lock If True then lock the added entry before returning


function TIP6Transport.RemoveProto(const AName:String):Boolean;
Description: Remove a protocol from the protocol cache
Name The name of the entry to remove


function TIP6Transport.CompareLocal(const AAddress:TIn6Addr):Boolean;
Description: Compare the supplied address with the local IP6 addresses
Note None documented


function TIP6Transport.CompareDefault(const AAddress:TIn6Addr):Boolean;
Description: Compare the supplied address with the default IP6 address
Note None documented


function TIP6Transport.CompareLoopback(const AAddress:TIn6Addr):Boolean;
Description: Compare the supplied address with the loopback IP6 address
Note None documented


function TIP6Transport.CompareDirected(const AAddress:TIn6Addr):Boolean;
Description: Compare the supplied address with the directed broadcast IP6 addresses
Note None documented


function TIP6Transport.CompareBroadcast(const AAddress:TIn6Addr):Boolean;
Description: Compare the supplied address with the broadcast IP6 address
Note None documented


function TIP6Transport.CompareMulticast(const AAddress:TIn6Addr):Boolean;
Description: Compare the supplied address with the multicast IP6 address
Note None documented


function TIP6Transport.CompareAddress(const AAddress1,AAddress2:TIn6Addr):Boolean;
Description: Compare the supplied addresses to see if they are the same
Note None documented


function TIP6Transport.CompareSubnet(const AAddress,ANetwork,ANetmask:TIn6Addr):Boolean;
Description: Compare the supplied address to see if it is in the supplied subnet
Note None documented


Return to Unit Reference