| !Run file for !Internet
|
| Set up the Internet stack

Set Inet$Path <Obey$Dir>.
Set InetDBase$Path  Choices:Internet.Files.
Set InetDBase$Write <Choices$Write>.Internet.Files
IconSprites <Obey$Dir>.!Sprites
If "<Inet$Started>" = "Yes" THEN Obey

Unset Inet$Error

RMEnsure UtilityModule 3.50 Error This Internet application requires RISC OS 3 version 3.50 or later to run
Run Inet:Utils.CheckMem
Set System$Path_Message System resources not found. Please run !System before !Internet.
IF "<BootResources$Path>" = "" THEN Set BootResources$Path <Boot$Dir>.Resources.
IF "<System$Path>" = "" THEN IfThere BootResources:!System Then /BootResources:!System

Set Alias$RMIfThere SetEval Test$Eval 1|MRMEnsure %%1 0 SetEval Test$Eval 0|MIf Test$Eval THEN %%0 %%1|MUnset Test$Eval
Set Alias$CheckError IF "|<Inet$Error>" <> "" THEN Set Boot$Error |<Inet$Error>||MError |<Inet$Error>

RMIfThere RMKill Net
RMIfThere RMKill NetG
X Unplug InternetA
X Unplug Netmsgs
X Unplug Accmsgs

| Deal with ShareFS on podules
Run Inet:Utils.KillShare

| An extant Mbuf Manager cannot usually be killed
SetEval Inet$BadMbufManager 0
RMEnsure MbufManager 0.17 SetEval Inet$BadMbufManager 1
IF Inet$BadMbufManager THEN RMEnsure MbufManager 0.00 SetEval Inet$BadMbufManager 0
If Inet$BadMbufManager THEN X Unplug MbufManager
If Inet$BadMbufManager THEN Error Please shutdown the computer, then restart it
Unset Inet$BadMbufManager

RMEnsure AUNMsgs     0.07 RMLoad System:Modules.Network.AUNMsgs
RMEnsure AUNMsgs     0.07 Error !Internet requires AUNMsgs 0.07 or later
| Under 4.24-4.27 Internet should be softloaded; later versions, however,
| will function happily from ROM.
If "<Boot$OSVersion>" >= 420 Then RMEnsure Internet 5.36 IfThere System:Modules.Network.Internet Then RMLoad System:Modules.Network.Internet
RMEnsure MbufManager 0.17 RMLoad System:Modules.Network.MManager
RMEnsure MbufManager 0.17 Error !Internet requires MbufManager 0.17 or later

SetEval Inet$KickFiler 0

SetEval Inet$Invalid 0
If "<Boot$OSVersion>" >= 430 Then Run Inet:Utils.BootNet

| Check that each of the required components are present
IfThere Choices:Internet.Resolver   Then Run Choices:Internet.Resolver   Else SetEval Inet$Invalid 1
IfThere Choices:Internet.Interfaces Then Run Choices:Internet.Interfaces Else SetEval Inet$Invalid 1
IfThere Choices:Internet.Routing    Then Run Choices:Internet.Routing    Else SetEval Inet$Invalid 1
IfThere Choices:Internet.User       Then Run Choices:Internet.User       Else SetEval Inet$Invalid 1
IfThere Choices:Internet.Firewall   Then Run Choices:Internet.Firewall   Else SetEval Inet$Invalid 1

| The remaining components are optional
IfThere Choices:Internet.Proxies    Then SetProxies -a -c -f Choices:Internet.Proxies

If Inet$Invalid Then BootError Internet configuration has become corrupt. Check network configuration settings.

| Compatibility only - never run this
Set Inet$Startup Choices:Internet.Interfaces

| Reinitialise the NFS module to ensure it gets a clean socket
RMIfThere RMReInit NFS

| Enable UDP checksums which are disabled by default (compatibility with earlier stacks)
Sysctl -ew net.inet.udp.checksum=1
CheckError

IF "<Inet$IsGateway>" LEFT 1 = "Y" THEN InetGateway on
IF "<Inet$RouteDOptions>" = "" Then Else IfThere System:Modules.Network.RouteD Then RMLoad System:Modules.Network.RouteD Else BootError RouteD could not be found

If "<Wimp$State>" = "desktop" AND Inet$KickFiler THEN Filer_Run Inet:Utils.NewFiler

| Ensure we have MimeMap file and module running (may not be on 4.02)
If "<Inet$MimeMappings>" = "" Then Set Inet$MimeMappings INetDBase:MimeMap
RMEnsure MimeMap 0.10 RMReInit MimeMap

Unset Inet$Invalid
Unset Inet$KickFiler
Unset Alias$RMIfThere
Unset Alias$CheckError

Set Inet$Started Yes
