/*
   Copyright (c) Microsoft Corporation

   SYNOPSIS

     Defines public datatypes used by the ICF API.
*/

import "wtypes.idl";

// Represents the different policy types understood by the firewall.
typedef enum NET_FW_POLICY_TYPE_
{
   NET_FW_POLICY_GROUP,
   NET_FW_POLICY_LOCAL,
   NET_FW_POLICY_EFFECTIVE,
   NET_FW_POLICY_TYPE_MAX
} NET_FW_POLICY_TYPE;

// Represents the different profile types that make up a firewall policy.
typedef enum NET_FW_PROFILE_TYPE_
{
   NET_FW_PROFILE_DOMAIN,
   NET_FW_PROFILE_STANDARD,
   NET_FW_PROFILE_CURRENT,
   NET_FW_PROFILE_TYPE_MAX
} NET_FW_PROFILE_TYPE;

// Used to specify the IP version for a port.
typedef enum NET_FW_IP_VERSION_
{
   NET_FW_IP_VERSION_V4,
   NET_FW_IP_VERSION_V6,
   NET_FW_IP_VERSION_ANY,
   NET_FW_IP_VERSION_MAX
} NET_FW_IP_VERSION;

// Used to specify the scope of addresses from which a port can listen.
typedef enum NET_FW_SCOPE_
{
   NET_FW_SCOPE_ALL,
   NET_FW_SCOPE_LOCAL_SUBNET,
   NET_FW_SCOPE_CUSTOM,
   NET_FW_SCOPE_MAX
} NET_FW_SCOPE;

// Used to specify the IP protocol when opening/closing firewall ports.
typedef enum NET_FW_IP_PROTOCOL_
{
   NET_FW_IP_PROTOCOL_TCP =  6,
   NET_FW_IP_PROTOCOL_UDP = 17
} NET_FW_IP_PROTOCOL;

// Well-known services that can be authorized to listen through the firewall.
typedef enum NET_FW_SERVICE_TYPE_
{
   NET_FW_SERVICE_FILE_AND_PRINT,
   NET_FW_SERVICE_UPNP,
   NET_FW_SERVICE_REMOTE_DESKTOP,
   NET_FW_SERVICE_NONE,
   NET_FW_SERVICE_TYPE_MAX
} NET_FW_SERVICE_TYPE;
