|
|
(One intermediate revision by the same user not shown) |
Line 6: |
Line 6: |
| | | |
| '''Ultibo IP (Internet Protocol) unit''' | | '''Ultibo IP (Internet Protocol) unit''' |
− |
| |
− | ''To be documented''
| |
| | | |
| === Constants === | | === Constants === |
Line 441: |
Line 439: |
| | | |
| | | |
− | '''IP buffer''' | + | '''IP specific classes''' |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | <code>TIPBuffer = 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. | + | | [[TIPBuffer|<code>TIPBuffer = class(TTransportBufferEx)</code>]] |
− | |-
| + | |
− | |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:PIPPacket;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FLast:PIPPacket;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetFragment(APacket:PIPPacket; AOffset,ASize:Word):PIPFragment;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddFragment(APacket:PIPPacket; AOffset,ASize:Word):PIPFragment;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveFragment(APacket:PIPPacket):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure FlushFragments(APacket:PIPPacket);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetPacket(AId:Word; AProtocol:Byte; const ASource,ADest:TInAddr; ALock:Boolean):PIPPacket;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddPacket(AId:Word; AProtocol:Byte; const ASource,ADest:TInAddr; ALock:Boolean):PIPPacket;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemovePacket(APacket:PIPPacket):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function UnlockPacket(APacket:PIPPacket):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure FlushPackets(All:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function PutHeader(APacket:PIPPacket; ABuffer:Pointer; ALength:Word):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function PutFragment(APacket:PIPPacket; ABuffer:Pointer; AOffset,ASize,AFlags:Word):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP transport adapter'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPTransportAdapter = 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> | + | | [[TIPTransportAdapter|<code>TIPTransportAdapter = class(TTransportAdapter)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>Address:TInAddr;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Netmask:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Gateway:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Network:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Directed:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>Server:TInAddr;</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:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>ConfigNetmask:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>ConfigGateway:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>ConfigServer:TInAddr;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP transport binding'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPTransportBinding = 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> | + | | [[TIPTransportBinding|<code>TIPTransportBinding = class(TTransportBinding)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>Address:TInAddr;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Netmask:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Gateway:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Network:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>Directed:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>Server:TInAddr;</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:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>ConfigNetmask:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>ConfigGateway:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>ConfigServer:TInAddr;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP transport protocol'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPTransportProtocol = 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> | + | | [[TIPTransportProtocol|<code>TIPTransportProtocol = class(TTransportProtocol)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP transport filter'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPTransportFilter = 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> | + | | [[TIPTransportFilter|<code>TIPTransportFilter = class(TTransportFilter)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP transport configuration'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPTransportConfig = 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> | + | | [[TIPTransportConfig|<code>TIPTransportConfig = class(TTransportConfig)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP transport'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPTransport = 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> | + | | [[TIPTransport|<code>TIPTransport = class(TNetworkTransport)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FNextIPId:Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNextIPLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FARP:TARPTransport;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FRARP:TRARPTransport;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FFragments:TIPBuffer;</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>FNameservers:TIPNameservers;</code>
| + | |
− | | (Part of TNetworkList)
| + | |
− | |-
| + | |
− | | <code>FNameserverLock:TMutexHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FForwarding:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FDefaultTTL: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 GetNextIPId(AIncrement:Boolean):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetIPNameserver(ACount:LongWord):TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAdapterConfigType(const AName:String):Word;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAdapterConfigAddress(const AName:String):TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAdapterConfigNetmask(const AName:String):TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAdapterConfigGateway(const AName:String):TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAdapterConfigServer(const AName:String):TInAddr;</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:TIPNameservers read FNameservers;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Forwarding:LongWord read FForwarding write FForwarding;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property DefaultTTL:LongWord read FDefaultTTL write FDefaultTTL;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <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:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveNameserver(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetHostByName(const AName:String; ALock:Boolean):TIPHostEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHostByAddress(const AAddress:TInAddr; ALock:Boolean):TIPHostEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetHostByNext(APrevious:TIPHostEntry; ALock,AUnlock:Boolean):TIPHostEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddHost(const AAddress:TInAddr; const AName:String; AType:Word; ALock:Boolean):TIPHostEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveHost(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure FlushHosts(All:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetRouteByAddress(const AAddress:TInAddr; ALock:Boolean; AState:LongWord):TIPRouteEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRouteByNetwork(const ANetwork,AAddress:TInAddr; ALock:Boolean; AState:LongWord):TIPRouteEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRouteByNext(APrevious:TIPRouteEntry; ALock,AUnlock:Boolean; AState:LongWord):TIPRouteEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddRoute(const ANetwork,ANetmask,AGateway,AAddress:TInAddr; AType:Word; ALock:Boolean; AState:LongWord):TIPRouteEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveRoute(const ANetwork,AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure FlushRoutes(All:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAddressByAddress(const AAddress:TInAddr; ALock:Boolean; AState:LongWord):TIPAddressEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAddressByNext(APrevious:TIPAddressEntry; ALock,AUnlock:Boolean; AState:LongWord):TIPAddressEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddAddress(const AAddress:TInAddr; AAdapter:TNetworkAdapter; AType:Word; ALock:Boolean; AState:LongWord):TIPAddressEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveAddress(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure FlushAddresses(All:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetNetworkByName(const AName:String; ALock:Boolean):TIPNetworkEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetNetworkByAddress(const ANetwork:TInAddr; ALock:Boolean):TIPNetworkEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddNetwork(const AName:String; const ANetwork:TInAddr; ALock:Boolean):TIPNetworkEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveNetwork(const AName:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetServByName(const AName,AProtocol:String; ALock:Boolean):TIPServEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetServByPort(APort:Word; const AProtocol:String; ALock:Boolean):TIPServEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddServ(const AName,AProtocol:String; APort:Word; ALock:Boolean):TIPServEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveServ(const AName,AProtocol:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetProtoByName(const AName:String; ALock:Boolean):TIPProtoEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetProtoByNumber(ANumber:Word; ALock:Boolean):TIPProtoEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function AddProto(const AName:String; ANumber:Word; ALock:Boolean):TIPProtoEntry;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveProto(const AName:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function CompareLocal(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareDefault(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareLoopback(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareDirected(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareBroadcast(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareMulticast(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareAddress(const AAddress1,AAddress2:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function CompareSubnet(const AAddress,ANetwork,ANetmask:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP state'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPState = 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> | + | | [[TIPState|<code>TIPState = class(TTransportState)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLocalAddress:TInAddr;</code> | + | |
− | | Host Order
| + | |
− | |-
| + | |
− | | <code>FRemoteAddress:TInAddr;</code>
| + | |
− | | Host Order
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetLocalAddress(const ALocalAddress:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetRemoteAddress(const ARemoteAddress:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property LocalAddress:TInAddr read FLocalAddress write SetLocalAddress;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RemoteAddress:TInAddr read FRemoteAddress write SetRemoteAddress;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP options'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPOptions = class(TTransportOptions)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|Note: For Get/Set Options Level = IP_PROTO Option = ??? | + | | [[TIPOptions|<code>TIPOptions = class(TTransportOptions)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FMemory:TMemoryStream;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOptions:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FLength:Integer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FTOS:Byte;</code>
| + | |
− | | IPTOS_LOWDELAY etc
| + | |
− | |-
| + | |
− | | <code>FTTL:Byte;</code>
| + | |
− | | Time To Live
| + | |
− | |-
| + | |
− | | <code>FFlags:Word;</code>
| + | |
− | | IP_DF etc
| + | |
− | |-
| + | |
− | | <code>FHeader:Boolean;</code>
| + | |
− | | IP_HDRINCL
| + | |
− | |-
| + | |
− | | <code>FMulticastIF:TInAddr;</code>
| + | |
− | | IP_MULTICAST_IF
| + | |
− | |-
| + | |
− | | <code>FMulticastTTL:Byte;</code>
| + | |
− | | IP_MULTICAST_TTL
| + | |
− | |-
| + | |
− | | <code>FMulticastLOOP:Boolean;</code>
| + | |
− | | IP_MULTICAST_LOOP
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetTOS(ATOS:Byte);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetTTL(ATTL:Byte);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetFlags(AFlags:Word);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetHeader(AHeader:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetMulticastIF(const AMulticastIF:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetMulticastTTL(AMulticastTTL:Byte);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetMulticastLOOP(AMulticastLOOP:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetLength(ALength:Integer);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property TOS:Byte read FTOS write SetTOS;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property TTL:Byte read FTTL write SetTTL;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Flags:Word read FFlags write SetFlags;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Header:Boolean read FHeader write SetHeader;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property MulticastIF:TInAddr read FMulticastIF write SetMulticastIF;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property MulticastTTL:Byte read FMulticastTTL write SetMulticastTTL;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property MulticastLOOP:Boolean read FMulticastLOOP write SetMulticastLOOP;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Options:Pointer read FOptions;</code>
| + | |
− | | IP_OPTIONS
| + | |
− | |-
| + | |
− | | <code>property Length:Integer read FLength write SetLength;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP host entry'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPHostEntry = 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> | + | | [[TIPHostEntry|<code>TIPHostEntry = class(THostEntry)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FAddresses:array[0..MAX_HOST_ALIASES - 1] of TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetAddress:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAddress(const AAddress:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetAddresses(Index:Integer):TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Address:TInAddr read GetAddress write SetAddress;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Addresses[Index:Integer]:TInAddr read GetAddresses;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function FindAddress(const AAddress:TInAddr):Boolean;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AddAddress(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function RemoveAddress(const AAddress:TInAddr):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP route entry'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPRouteEntry = 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> | + | | [[TIPRouteEntry|<code>TIPRouteEntry = class(TRouteEntry)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FTOS:Byte;</code> | + | |
− | | Default TOS for this Route
| + | |
− | |-
| + | |
− | | <code>FTTL:Byte;</code>
| + | |
− | | Default TTL for this Route
| + | |
− | |-
| + | |
− | | <code>FNetwork:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FNetmask:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FGateway:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FAddress:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetTOS(ATOS:Byte);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetTTL(ATTL:Byte);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetNetwork(const ANetwork:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetNetmask(const ANetmask:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetGateway(const AGateway:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetAddress(const AAddress:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property TOS:Byte read FTOS write SetTOS;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property TTL:Byte read FTTL write SetTTL;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Network:TInAddr read FNetwork write SetNetwork;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Netmask:TInAddr read FNetmask write SetNetmask;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Gateway:TInAddr read FGateway write SetGateway;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Address:TInAddr read FAddress write SetAddress;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP address entry'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPAddressEntry = 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. | + | | [[TIPAddressEntry|<code>TIPAddressEntry = class(TAddressEntry)</code>]] |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>constructor Create;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FAddress:TInAddr;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetAddress(const AAddress:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Address:TInAddr read FAddress write SetAddress;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP network entry'''
| + | |
− |
| + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPNetworkEntry = 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> | + | | [[TIPNetworkEntry|<code>TIPNetworkEntry = class(TNetworkEntry)</code>]] |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FNetwork:TInAddr;</code> | + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetNetwork(const ANetwork:TInAddr);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Network:TInAddr read FNetwork write SetNetwork;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''IP service entry'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPServEntry = 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> | + | | [[TIPServEntry|<code>TIPServEntry = class(TServEntry)</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>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− |
| + | |
− | '''IP protocol entry'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TIPProtoEntry = 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> | + | | [[TIPProtoEntry|<code>TIPProtoEntry = class(TProtoEntry)</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 /> | | <br /> |
− |
| |
| === Public variables === | | === Public variables === |
| ---- | | ---- |