Difference between revisions of "TIP6Transport"
From Ultibo.org
								
												
				 (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>  | ||
| + | |    | ||
| + | |-  | ||
| + | | <code>function CheckHost(AHost:TIP6HostEntry; ALock:Boolean):Boolean;</code>  | ||
|    | |    | ||
|-  | |-  | ||
| 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>  | ||
| + | |    | ||
| + | |-  | ||
| + | | <code>function CheckRoute(ARoute:TIP6RouteEntry; ALock:Boolean; AState:LongWord):Boolean;</code>  | ||
|    | |    | ||
|-  | |-  | ||
| 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>  | ||
| + | |    | ||
| + | |-  | ||
| + | | <code>function CheckAddress(AAddress:TIP6AddressEntry; ALock:Boolean; AState:LongWord):Boolean;</code>  | ||
|    | |    | ||
|-  | |-  | ||
| 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