Difference between revisions of "Unit IPv6"
Line 280: | Line 280: | ||
---- | ---- | ||
− | '' | + | |
+ | '''IPv6 buffer''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6Buffer = class(TTransportBufferEx)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Different to Socket Buffer. | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create(ATransport:TNetworkTransport);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FFirst:PIP6Packet;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLast:PIP6Packet;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetFragment(APacket:PIP6Packet; AOffset:LongWord; ASize:Word):PIP6Fragment;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddFragment(APacket:PIP6Packet; AOffset:LongWord; ASize:Word):PIP6Fragment;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveFragment(APacket:PIP6Packet):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FlushFragments(APacket:PIP6Packet);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>function GetPacket(AId:LongWord; const ASource,ADest:TIn6Addr; ALock:Boolean):PIP6Packet;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddPacket(AId:LongWord; const ASource,ADest:TIn6Addr; ALock:Boolean):PIP6Packet;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemovePacket(APacket:PIP6Packet):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnlockPacket(APacket:PIP6Packet):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FlushPackets(All:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PutHeader(APacket:PIP6Packet; ABuffer:Pointer; ALength:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function PutFragment(APacket:PIP6Packet; ABuffer:Pointer; AOffset,ASize,AFlags:Word):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 transport adapter''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6TransportAdapter = class(TTransportAdapter)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>Address:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Netmask:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Gateway:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Network:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Directed:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>Server:TIn6Addr;</code> | ||
+ | | DHCP Server | ||
+ | |- | ||
+ | | <code>LeaseTime:LongWord;</code> | ||
+ | | DHCP Lease Time | ||
+ | |- | ||
+ | | <code>RetryTime:Int64;</code> | ||
+ | | DHCP Retry Time | ||
+ | |- | ||
+ | | <code>ExpiryTime:Int64;</code> | ||
+ | | DHCP Expiry Time | ||
+ | |- | ||
+ | | <code>RenewalTime:Int64;</code> | ||
+ | | DHCP Renewal Time | ||
+ | |- | ||
+ | | <code>RebindingTime:Int64;</code> | ||
+ | | DHCP Rebinding Time | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ConfigDefault:Word;</code> | ||
+ | | BOOTP/DHCP/RARP/STATIC/PSEUDO/LOOPBACK | ||
+ | |- | ||
+ | | <code>ConfigAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigNetmask:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigGateway:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigServer:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 transport binding''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6TransportBinding = class(TTransportBinding)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>Address:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Netmask:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Gateway:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Network:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>Directed:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>Server:TIn6Addr;</code> | ||
+ | | DHCP Server | ||
+ | |- | ||
+ | | <code>LeaseTime:LongWord;</code> | ||
+ | | DHCP Lease Time | ||
+ | |- | ||
+ | | <code>RetryTime:Int64;</code> | ||
+ | | DHCP Retry Time | ||
+ | |- | ||
+ | | <code>ExpiryTime:Int64;</code> | ||
+ | | DHCP Expiry Time | ||
+ | |- | ||
+ | | <code>RenewalTime:Int64;</code> | ||
+ | | DHCP Renewal Time | ||
+ | |- | ||
+ | | <code>RebindingTime:Int64;</code> | ||
+ | | DHCP Rebinding Time | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>ConfigDefault:Word;</code> | ||
+ | | BOOTP/DHCP/RARP/STATIC/PSEUDO/LOOPBACK | ||
+ | |- | ||
+ | | <code>ConfigAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigNetmask:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigGateway:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>ConfigServer:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 transport protocol''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6TransportProtocol = class(TTransportProtocol)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 transport filter''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6TransportFilter = class(TTransportFilter)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 transport configuration''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6TransportConfig = class(TTransportConfig)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 transport''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6Transport = class(TNetworkTransport)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create(AManager:TTransportManager; const AName:String);</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FNextIP6Id:Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FNextIP6Lock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FFragments:TIP6Buffer;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FHosts:TNetworkList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FServs:TNetworkList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FProtos:TNetworkList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRoutes:TNetworkList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FNetworks:TNetworkList;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAddresses:TNetworkList;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDefaultAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FLoopbackAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FBroadcastAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FNameservers:TIP6Nameservers;</code> | ||
+ | | (Part of TNetworkList) | ||
+ | |- | ||
+ | | <code>FNameserverLock:TMutexHandle;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>FDefaultHopLimit:LongWord;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAutoRelease:Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function PacketHandler(AHandle:THandle; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function FragmentHandler(ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CheckFragment(ABuffer:Pointer):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNextIP6Id(AIncrement:Boolean):Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetIP6Nameserver(ACount:LongWord):TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetAdapterConfigType(const AName:String):Word;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAdapterConfigAddress(const AName:String):TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAdapterConfigNetmask(const AName:String):TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAdapterConfigGateway(const AName:String):TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAdapterConfigServer(const AName:String):TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div> | ||
+ | |- | ||
+ | | <code>function FilterPacket(ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ForwardPacket(AAdapter:TTransportAdapter; ASource,ADest,APacket:Pointer; ASize:Integer; ABroadcast:Boolean):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Nameservers:TIP6Nameservers read FNameservers;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property DefaultHopLimit:LongWord read FDefaultHopLimit write FDefaultHopLimit;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>property AutoRelease:Boolean read FAutoRelease write FAutoRelease;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddAdapter(AAdapter:TNetworkAdapter; AConfigType:Word; AAddress,ANetmask,AGateway,AServer:Pointer):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveAdapter(AAdapter:TNetworkAdapter):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddProtocol(AProtocol:Word; APacketHandler:TTransportPacketHandler; AControlHandler:TTransportControlHandler):THandle; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveProtocol(AHandle:THandle; AProtocol:Word):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddFilter(AProtocol:Word; AFilterHandler:TTransportFilterHandler):THandle; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveFilter(AHandle:THandle; AProtocol:Word):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddConfig(AConfigType:Word; AConfigAuto:Boolean; AConfigHandler:TTransportConfigHandler):THandle; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveConfig(AHandle:THandle; AConfigType:Word):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function SendPacket(ASocket:TTransportSocket; ASource,ADest:Pointer; APacket:PPacketFragment; ASize,AFlags:Integer):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SendControl(ASource,ADest:Pointer; AProtocol,ACommand,ACode:Word; AAddress,AData:Pointer; ASize:Integer):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetSockOpt(ASocket:TTransportSocket; ALevel,AOptName:Integer; AOptValue:PChar; var AOptLength:Integer):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function SetSockOpt(ASocket:TTransportSocket; ALevel,AOptName:Integer; AOptValue:PChar; AOptLength:Integer):Integer; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function StartTransport:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function StopTransport:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function ProcessTransport:Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function BindTransport(AAdapter:TNetworkAdapter):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function UnbindTransport(AAdapter:TNetworkAdapter):Boolean; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddNameserver(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveNameserver(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetHostByName(const AName:String; ALock:Boolean):TIP6HostEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetHostByAddress(const AAddress:TIn6Addr; ALock:Boolean):TIP6HostEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetHostByNext(APrevious:TIP6HostEntry; ALock,AUnlock:Boolean):TIP6HostEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddHost(const AAddress:TIn6Addr; const AName:String; AType:Word; ALock:Boolean):TIP6HostEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveHost(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FlushHosts(All:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetRouteByAddress(const AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6RouteEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRouteByNetwork(const ANetwork,AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6RouteEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetRouteByNext(APrevious:TIP6RouteEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6RouteEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddRoute(const ANetwork,ANetmask,AGateway,AAddress:TIn6Addr; AType:Word; ALock:Boolean; AState:LongWord):TIP6RouteEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveRoute(const ANetwork,AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FlushRoutes(All:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetAddressByAddress(const AAddress:TIn6Addr; ALock:Boolean; AState:LongWord):TIP6AddressEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAddressByNext(APrevious:TIP6AddressEntry; ALock,AUnlock:Boolean; AState:LongWord):TIP6AddressEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddAddress(const AAddress:TIn6Addr; AType:Word; AAdapter:TNetworkAdapter; ALock:Boolean; AState:LongWord):TIP6AddressEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveAddress(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure FlushAddresses(All:Boolean);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetNetworkByName(const AName:String; ALock:Boolean):TIP6NetworkEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetNetworkByAddress(const ANetwork:TIn6Addr; ALock:Boolean):TIP6NetworkEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddNetwork(const AName:String; const ANetwork:TIn6Addr; ALock:Boolean):TIP6NetworkEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveNetwork(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetServByName(const AName,AProtocol:String; ALock:Boolean):TIP6ServEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetServByPort(APort:Word; const AProtocol:String; ALock:Boolean):TIP6ServEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddServ(const AName,AProtocol:String; APort:Word; ALock:Boolean):TIP6ServEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveServ(const AName,AProtocol:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetProtoByName(const AName:String; ALock:Boolean):TIP6ProtoEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetProtoByNumber(ANumber:Word; ALock:Boolean):TIP6ProtoEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function AddProto(const AName:String; ANumber:Word; ALock:Boolean):TIP6ProtoEntry;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveProto(const AName:String):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function CompareLocal(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareDefault(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareLoopback(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareDirected(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareBroadcast(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareMulticast(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareAddress(const AAddress1,AAddress2:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function CompareSubnet(const AAddress,ANetwork,ANetmask:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 state''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6State = class(TTransportState)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FLocalAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FRemoteAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetLocalAddress(const ALocalAddress:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetRemoteAddress(const ARemoteAddress:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property LocalAddress:TIn6Addr read FLocalAddress write SetLocalAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property RemoteAddress:TIn6Addr read FRemoteAddress write SetRemoteAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 options''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6Options = class(TTransportOptions)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>destructor Destroy; override;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FHopLimit:Byte;</code> | ||
+ | | Hop Limit | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetHopLimit(AHopLimit:Byte);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property HopLimit:Byte read FHopLimit write SetHopLimit;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 host entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6HostEntry = class(THostEntry)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FAddresses:array[0..MAX_HOST_ALIASES - 1] of TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function GetAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetAddress(const AAddress:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function GetAddresses(Index:Integer):TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Address:TIn6Addr read GetAddress write SetAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Addresses[Index:Integer]:TIn6Addr read GetAddresses;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function FindAddress(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>function AddAddress(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>function RemoveAddress(const AAddress:TIn6Addr):Boolean;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 route entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6RouteEntry = class(TRouteEntry)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FNetwork:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FNetmask:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FGateway:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>FAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetNetwork(const ANetwork:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetNetmask(const ANetmask:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetGateway(const AGateway:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>procedure SetAddress(const AAddress:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Network:TIn6Addr read FNetwork write SetNetwork;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Netmask:TIn6Addr read FNetmask write SetNetmask;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Gateway:TIn6Addr read FGateway write SetGateway;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>property Address:TIn6Addr read FAddress write SetAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 address entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6AddressEntry = class(TAddressEntry)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | |colspan="2"|Note: Used for secondary addresses. | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FAddress:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetAddress(const AAddress:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Address:TIn6Addr read FAddress write SetAddress;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 network entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6NetworkEntry = class(TNetworkEntry)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | | <code>FNetwork:TIn6Addr;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>procedure SetNetwork(const ANetwork:TIn6Addr);</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | | <code>property Network:TIn6Addr read FNetwork write SetNetwork;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 service entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6ServEntry = class(TServEntry)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | |||
+ | '''IPv6 protocol entry''' | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;"> | ||
+ | |||
+ | <code>TIP6ProtoEntry = class(TProtoEntry)</code> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>constructor Create;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Public variables === | === Public variables === |
Revision as of 06:16, 15 March 2017
Return to Unit Reference
Contents
[hide]Description
Ultibo IPv6 (Internet Protocol version 6) unit
To be documented
Constants
IP6_TRANSPORT_*
IP6_HEADER_*
IP6_HEADER_*
Type definitions
IPv6 header
IPv6 extension header
IPv6 pseudo
IPv6 fragment
IPv6 packet
Class definitions
IPv6 buffer
TIP6Buffer = class(TTransportBufferEx)
IPv6 transport adapter
TIP6TransportAdapter = class(TTransportAdapter)
IPv6 transport binding
TIP6TransportBinding = class(TTransportBinding)
IPv6 transport protocol
TIP6TransportProtocol = class(TTransportProtocol)
IPv6 transport filter
TIP6TransportFilter = class(TTransportFilter)
IPv6 transport configuration
TIP6TransportConfig = class(TTransportConfig)
IPv6 transport
TIP6Transport = class(TNetworkTransport)
IPv6 state
TIP6State = class(TTransportState)
IPv6 options
TIP6Options = class(TTransportOptions)
IPv6 host entry
TIP6HostEntry = class(THostEntry)
IPv6 route entry
TIP6RouteEntry = class(TRouteEntry)
IPv6 address entry
TIP6AddressEntry = class(TAddressEntry)
IPv6 network entry
TIP6NetworkEntry = class(TNetworkEntry)
IPv6 service entry
TIP6ServEntry = class(TServEntry)
IPv6 protocol entry
TIP6ProtoEntry = class(TProtoEntry)
Public variables
None defined
Function declarations
Initialization functions
IPv6 functions
function CheckIP6(ABuffer:Pointer):Boolean;
function GetIP6HeaderOffset(ABuffer:Pointer):Word;
function GetIP6HeaderLength(ABuffer:Pointer):Word;
function GetIP6DataOffset(ABuffer:Pointer):Word;
function GetIP6DataLength(ABuffer:Pointer):Word;
function ChecksumIP6(ABuffer:Pointer; AOffset,ALength:Word):Word;
Return to Unit Reference