//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1992-2000.
//
//  File: HNetCfg.mof
//
//----------------------------------------------------------------------------

//
// Namespace definition
//

#pragma namespace("\\\\.\\ROOT")

instance of __NameSpace
{
    Name = "Microsoft";
};

#pragma namespace("\\\\.\\ROOT\\Microsoft")

//
// WcmSvc: S-1-5-80-4155767994-3874329934-3800885181-2130851812-726865888
//
[NamespaceSecuritySDDL("O:BAG:BAD:(A;CI;0x6003F;;;S-1-5-80-4155767994-3874329934-3800885181-2130851812-726865888)")]  
instance of __NameSpace
{
    Name = "HomeNet";
};

#pragma namespace("\\\\.\\ROOT\\Microsoft\\HomeNet")
#pragma autorecover
#pragma classflags ("forceupdate")
//
// Class (schema) definitions
//

/*++

Class:  HNet_Connection

Represents an item in the Network Connections folder

--*/

class HNet_Connection
{
    [key, read, write] string Guid;
    [read, write] string Name;
    [read, write] string PhonebookPath;
    [read, write] boolean IsLanConnection;
};

/*++

Class:  HNet_ConnectionProperties

Home networking properties of a network connection

--*/

class HNet_ConnectionProperties
{
    [key, read, write] HNet_Connection ref Connection;
    [read, write] boolean IsFirewalled;
    [read, write] boolean IsIcsPublic;
    [read, write] boolean IsIcsPrivate;
    [read, write] boolean IsBridgeMember;
    [read, write] boolean IsBridge;
};

/*++

Class: HNet_BridgeMember

Associates a bridge member connection to the bridge connection
that it belongs to

--*/

[Association: ToInstance ToSubclass]
class HNet_BridgeMember
{
    [key, read] HNet_Connection ref Bridge;
    [key, read] HNet_Connection ref Member;
};

/*++

Class: HNet_FirewallLoggingSettings

Global firewall logging settings

--*/

class HNet_FirewallLoggingSettings
{
    [key, read] string Id;
    [read, write] string Path;
    [read, write] uint32 MaxFileSize;
    [read, write] boolean LogDroppedPackets;
    [read, write] boolean LogConnections;
};

/*++

Class: HNet_ResponseRange

Range of response ports, used in an application protocol definition. All
properties are read-only keys, as this class is intended only for use
as an embedded object within application definitions.

--*/

class HNet_ResponseRange
{
    [key, read] uint8 IPProtocol;
    [key, read] uint16 StartPort;
    [key, read] uint16 EndPort;
};

/*++

Class: HNet_ApplicationProtocol

Application protocol definition

--*/

class HNet_ApplicationProtocol
{
    [key, read] string Id;
    [read, write] string Name;
    [read, write] boolean Enabled;
    [read, write] boolean BuiltIn;
    [read, write] uint8 OutgoingIPProtocol;
    [read, write] uint16 OutgoingPort;
    [read, write] uint16 ResponseCount;
    [read, write] HNet_ResponseRange ResponseArray[];
};

/*++

Class: HNet_PortMappingProtocol

Port mapping protocol definition

--*/

class HNet_PortMappingProtocol
{
    [key, read] string Id;
    [read, write] string Name;
    [read, write] boolean BuiltIn;
    [read, write] uint8 IPProtocol;
    [read, write] uint16 Port;
};

#pragma deleteclass("HNet_ConnectionPortMapping", NOFAIL)

/*++

Class: HNet_ConnectionPortMapping2

Associates a port mapping to a connection

--*/

[Association: ToInstance ToSubclass]
class HNet_ConnectionPortMapping2
{
    [key, read] HNet_Connection ref Connection;
    [key, read] HNet_PortMappingProtocol ref Protocol;
    [read, write] boolean Enabled;
    [read, write] boolean NameActive;
    [read, write] string TargetName;
    [read, write] uint32 TargetIPAddress;
    [read, write] uint16 TargetPort;
};

/*++

Class: HNet_FwIcmpSettings

Firewall ICMP settings. Name is never exposed, and exists only because
the class must have a key in order to create an instance of it. However,
the name may be useful in the future if we want to pre-define different
standard ICMP policies.

--*/

class HNet_FwIcmpSettings
{
    [key, read, write] String Name;
    [read, write] boolean AllowOutboundDestinationUnreachable;
    [read, write] boolean AllowOutboundSourceQuench;
    [read, write] boolean AllowRedirect;
    [read, write] boolean AllowInboundEchoRequest;
    [read, write] boolean AllowInboundRouterRequest;
    [read, write] boolean AllowOutboundTimeExceeded;
    [read, write] boolean AllowOutboundParameterProblem;
    [read, write] boolean AllowInboundTimestampRequest;
    [read, write] boolean AllowInboundMaskRequest;
};

/*++

Class: HNet_ConnectionIcmpSetting

Associates a firewall connection to its ICMP settings

--*/

[Association: ToInstance ToSubclass]
class HNet_ConnectionIcmpSetting
{
    [key, read] HNet_Connection ref Connection;
    [key, read] HNet_FwIcmpSettings ref IcmpSettings;
};

/*++

Class: HNet_IcsSettings

Contains global ICS settings. Id is never exposed, and exists only because
the class must have a key in order to create an instance of it.

--*/

class HNet_IcsSettings
{
    [key, read] string Id;
    [read, write] boolean DhcpEnabled;
    [read, write] boolean DnsEnabled;
};

/*++

Class: HNet_BackupIpConfiguration

Used to store the original IP configuration of a connection when that
connection is made ICS private.

--*/

class HNet_BackupIpConfiguration
{
    [key, read, write] HNet_Connection ref Connection;
    [read, write] string IPAddress;
    [read, write] string SubnetMask;
    [read, write] string DefaultGateway;
    [read, write] uint32 EnableDHCP; 
};

/*++

Class: HNet_ConnectionAutoconfig

The existance of an instance of this class indicates that the autoconfig
service knows about this connection.

--*/

class HNet_ConnectionAutoconfig
{
    [key, read, write] HNet_Connection ref Connection;
};

//
// Default HNet_IcsSettings
//

instance of HNet_IcsSettings
{
    Id = "{23bc497f-13f0-47a1-9e88-048f6eefdf60}";
    DhcpEnabled = TRUE;
    DnsEnabled = TRUE;
};

//
// Default HNet_FwIcmpSettings
//

instance of HNet_FwIcmpSettings
{
    Name = "Default";
    AllowOutboundDestinationUnreachable = FALSE;
    AllowOutboundSourceQuench = FALSE;
    AllowRedirect = FALSE;
    AllowInboundEchoRequest = FALSE;
    AllowInboundRouterRequest = FALSE;
    AllowOutboundTimeExceeded = FALSE;
    AllowOutboundParameterProblem = FALSE;
    AllowInboundTimestampRequest = FALSE;
    AllowInboundMaskRequest = FALSE;
};

//
// Instance definitions -- default application and port
// mapping entries. Note that all numerical values are
// in NETWORK byte order. The names here refer to the
// resource IDs in hnetcfg.dll.
//

instance of HNet_PortMappingProtocol
{
    Id = "{230e423d-7b3a-4e6e-9d4d-91f73561364a}";
    Name = "1700";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0x1500; // 21
};

instance of HNet_PortMappingProtocol
{
    Id = "{f831dd6e-85d0-4f7d-8ac0-bb2099682c4e}";
    Name = "1701";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0x1700; // 23
};

instance of HNet_PortMappingProtocol
{
    Id = "{59e81c3b-ae09-4bc5-9ebc-7605ab74d37b}";
    Name = "1702";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0x1900; // 25
};

instance of HNet_PortMappingProtocol
{
    Id = "{90c8f61d-43f3-45cc-8ff0-e719748b3851}";
    Name = "1703";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0x6e00; // 110
};

instance of HNet_PortMappingProtocol
{
    Id = "{80be1943-684e-41b9-82e5-32b18d858a2c}";
    Name = "1704";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0xDC00; // 220
};

instance of HNet_PortMappingProtocol
{
    Id = "{f5c5796c-de7a-456b-891f-03a2e006e07c}";
    Name = "1705";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0x8f00;  // 143
};

instance of HNet_PortMappingProtocol
{
    Id = "{cd1887dd-be99-4a92-8006-e9a52db53df4}";
    Name = "1706";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0x5000;  //80
};

instance of HNet_PortMappingProtocol
{
    Id = "{3c6434d0-257b-4516-9222-4fa0467d67f9}";
    Name = "1707";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0xBB01; // 443
};

instance of HNet_PortMappingProtocol
{
    Id = "{01d925f1-cf6a-4352-8aac-b139b1a80cb4}";
    Name = "1708";
    BuiltIn = TRUE;
    IPProtocol = 0x6; // TCP
    Port = 0x3D0D; // 3389
};
