79 lines
2.1 KiB
C#
79 lines
2.1 KiB
C#
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Microsoft Research Netstack / Singularity
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: StaticConfiguration.cs
|
|
//
|
|
|
|
using System.Collections;
|
|
|
|
#if SINGULARITY
|
|
using Drivers.Net;
|
|
using Microsoft.Singularity.Io;
|
|
#endif
|
|
|
|
namespace NetStack.Runtime
|
|
{
|
|
/// <summary> A class that Initializes, Starts, and Stops the default
|
|
/// set of IP modules.
|
|
/// </summary>
|
|
public class StaticConfiguration
|
|
{
|
|
static ArrayList modules;
|
|
static bool running = false;
|
|
static bool initialized = false;
|
|
|
|
public static void Initialize()
|
|
{
|
|
Core.Log("StaticConfiguration.Initialize() {0}", initialized);
|
|
modules = new ArrayList();
|
|
modules.Add(Core.Instance());
|
|
modules.Add(new IPModule());
|
|
modules.Add(new ArpModule());
|
|
modules.Add(new IcmpModule());
|
|
modules.Add(new TcpModule());
|
|
modules.Add(new UdpModule());
|
|
|
|
foreach (INetModule! module in modules)
|
|
{
|
|
bool success = module.Initialize(null);
|
|
Core.Log("Initializing {0}...{1}",
|
|
module.ModuleName, success ? "okay" : "fail");
|
|
}
|
|
initialized = true;
|
|
}
|
|
|
|
public static void Start()
|
|
{
|
|
if (running)
|
|
{
|
|
return;
|
|
}
|
|
running = true;
|
|
|
|
Core.Instance().Activate();
|
|
Core.Instance().StartModule();
|
|
}
|
|
|
|
public static void Stop()
|
|
{
|
|
if (!running)
|
|
{
|
|
return;
|
|
}
|
|
running = false;
|
|
|
|
modules.Reverse();
|
|
foreach (INetModule! module in modules)
|
|
{
|
|
Core.Log("Stopping {0}...", module.ModuleName);
|
|
bool success = module.StopModule();
|
|
Core.Log("{0}\n", success ? "okay" : "fail");
|
|
}
|
|
Core.Log("Stopped all.\n");
|
|
}
|
|
}
|
|
}
|