<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/compute/v1/compute.proto

namespace Google\Cloud\Compute\V1;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.
 *
 * Generated from protobuf message <code>google.cloud.compute.v1.FirewallPolicyRuleMatcher</code>
 */
class FirewallPolicyRuleMatcher extends \Google\Protobuf\Internal\Message
{
    /**
     * Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.
     *
     * Generated from protobuf field <code>repeated string dest_address_groups = 468760508;</code>
     */
    private $dest_address_groups;
    /**
     * Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.
     *
     * Generated from protobuf field <code>repeated string dest_fqdns = 370712737;</code>
     */
    private $dest_fqdns;
    /**
     * CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string dest_ip_ranges = 337357713;</code>
     */
    private $dest_ip_ranges;
    /**
     * Network type of the traffic destination. Allowed values are: - UNSPECIFIED - INTERNET - NON_INTERNET
     * Check the DestNetworkType enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string dest_network_type = 409853224;</code>
     */
    protected $dest_network_type = null;
    /**
     * Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of dest region codes allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string dest_region_codes = 199120280;</code>
     */
    private $dest_region_codes;
    /**
     * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.
     *
     * Generated from protobuf field <code>repeated string dest_threat_intelligences = 119896492;</code>
     */
    private $dest_threat_intelligences;
    /**
     * Pairs of IP protocols and ports that the rule should match.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.FirewallPolicyRuleMatcherLayer4Config layer4_configs = 373534261;</code>
     */
    private $layer4_configs;
    /**
     * Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.
     *
     * Generated from protobuf field <code>repeated string src_address_groups = 436423738;</code>
     */
    private $src_address_groups;
    /**
     * Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.
     *
     * Generated from protobuf field <code>repeated string src_fqdns = 435906147;</code>
     */
    private $src_fqdns;
    /**
     * CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string src_ip_ranges = 432128083;</code>
     */
    private $src_ip_ranges;
    /**
     * Network type of the traffic source. Allowed values are: - UNSPECIFIED - INTERNET - INTRA_VPC - NON_INTERNET - VPC_NETWORKS
     * Check the SrcNetworkType enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string src_network_type = 309819686;</code>
     */
    protected $src_network_type = null;
    /**
     * Networks of the traffic source. It can be either a full or partial url.
     *
     * Generated from protobuf field <code>repeated string src_networks = 247119872;</code>
     */
    private $src_networks;
    /**
     * Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of source region codes allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string src_region_codes = 99086742;</code>
     */
    private $src_region_codes;
    /**
     * List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.FirewallPolicyRuleSecureTag src_secure_tags = 508791302;</code>
     */
    private $src_secure_tags;
    /**
     * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
     *
     * Generated from protobuf field <code>repeated string src_threat_intelligences = 323631018;</code>
     */
    private $src_threat_intelligences;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $dest_address_groups
     *           Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $dest_fqdns
     *           Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $dest_ip_ranges
     *           CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.
     *     @type string $dest_network_type
     *           Network type of the traffic destination. Allowed values are: - UNSPECIFIED - INTERNET - NON_INTERNET
     *           Check the DestNetworkType enum for the list of possible values.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $dest_region_codes
     *           Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of dest region codes allowed is 5000.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $dest_threat_intelligences
     *           Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.
     *     @type array<\Google\Cloud\Compute\V1\FirewallPolicyRuleMatcherLayer4Config>|\Google\Protobuf\Internal\RepeatedField $layer4_configs
     *           Pairs of IP protocols and ports that the rule should match.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $src_address_groups
     *           Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $src_fqdns
     *           Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $src_ip_ranges
     *           CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.
     *     @type string $src_network_type
     *           Network type of the traffic source. Allowed values are: - UNSPECIFIED - INTERNET - INTRA_VPC - NON_INTERNET - VPC_NETWORKS
     *           Check the SrcNetworkType enum for the list of possible values.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $src_networks
     *           Networks of the traffic source. It can be either a full or partial url.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $src_region_codes
     *           Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of source region codes allowed is 5000.
     *     @type array<\Google\Cloud\Compute\V1\FirewallPolicyRuleSecureTag>|\Google\Protobuf\Internal\RepeatedField $src_secure_tags
     *           List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $src_threat_intelligences
     *           Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Compute\V1\Compute::initOnce();
        parent::__construct($data);
    }

    /**
     * Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.
     *
     * Generated from protobuf field <code>repeated string dest_address_groups = 468760508;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getDestAddressGroups()
    {
        return $this->dest_address_groups;
    }

    /**
     * Address groups which should be matched against the traffic destination. Maximum number of destination address groups is 10.
     *
     * Generated from protobuf field <code>repeated string dest_address_groups = 468760508;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setDestAddressGroups($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->dest_address_groups = $arr;

        return $this;
    }

    /**
     * Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.
     *
     * Generated from protobuf field <code>repeated string dest_fqdns = 370712737;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getDestFqdns()
    {
        return $this->dest_fqdns;
    }

    /**
     * Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.
     *
     * Generated from protobuf field <code>repeated string dest_fqdns = 370712737;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setDestFqdns($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->dest_fqdns = $arr;

        return $this;
    }

    /**
     * CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string dest_ip_ranges = 337357713;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getDestIpRanges()
    {
        return $this->dest_ip_ranges;
    }

    /**
     * CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string dest_ip_ranges = 337357713;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setDestIpRanges($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->dest_ip_ranges = $arr;

        return $this;
    }

    /**
     * Network type of the traffic destination. Allowed values are: - UNSPECIFIED - INTERNET - NON_INTERNET
     * Check the DestNetworkType enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string dest_network_type = 409853224;</code>
     * @return string
     */
    public function getDestNetworkType()
    {
        return isset($this->dest_network_type) ? $this->dest_network_type : '';
    }

    public function hasDestNetworkType()
    {
        return isset($this->dest_network_type);
    }

    public function clearDestNetworkType()
    {
        unset($this->dest_network_type);
    }

    /**
     * Network type of the traffic destination. Allowed values are: - UNSPECIFIED - INTERNET - NON_INTERNET
     * Check the DestNetworkType enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string dest_network_type = 409853224;</code>
     * @param string $var
     * @return $this
     */
    public function setDestNetworkType($var)
    {
        GPBUtil::checkString($var, True);
        $this->dest_network_type = $var;

        return $this;
    }

    /**
     * Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of dest region codes allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string dest_region_codes = 199120280;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getDestRegionCodes()
    {
        return $this->dest_region_codes;
    }

    /**
     * Region codes whose IP addresses will be used to match for destination of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of dest region codes allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string dest_region_codes = 199120280;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setDestRegionCodes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->dest_region_codes = $arr;

        return $this;
    }

    /**
     * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.
     *
     * Generated from protobuf field <code>repeated string dest_threat_intelligences = 119896492;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getDestThreatIntelligences()
    {
        return $this->dest_threat_intelligences;
    }

    /**
     * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic destination.
     *
     * Generated from protobuf field <code>repeated string dest_threat_intelligences = 119896492;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setDestThreatIntelligences($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->dest_threat_intelligences = $arr;

        return $this;
    }

    /**
     * Pairs of IP protocols and ports that the rule should match.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.FirewallPolicyRuleMatcherLayer4Config layer4_configs = 373534261;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getLayer4Configs()
    {
        return $this->layer4_configs;
    }

    /**
     * Pairs of IP protocols and ports that the rule should match.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.FirewallPolicyRuleMatcherLayer4Config layer4_configs = 373534261;</code>
     * @param array<\Google\Cloud\Compute\V1\FirewallPolicyRuleMatcherLayer4Config>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setLayer4Configs($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Compute\V1\FirewallPolicyRuleMatcherLayer4Config::class);
        $this->layer4_configs = $arr;

        return $this;
    }

    /**
     * Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.
     *
     * Generated from protobuf field <code>repeated string src_address_groups = 436423738;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSrcAddressGroups()
    {
        return $this->src_address_groups;
    }

    /**
     * Address groups which should be matched against the traffic source. Maximum number of source address groups is 10.
     *
     * Generated from protobuf field <code>repeated string src_address_groups = 436423738;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSrcAddressGroups($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->src_address_groups = $arr;

        return $this;
    }

    /**
     * Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.
     *
     * Generated from protobuf field <code>repeated string src_fqdns = 435906147;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSrcFqdns()
    {
        return $this->src_fqdns;
    }

    /**
     * Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.
     *
     * Generated from protobuf field <code>repeated string src_fqdns = 435906147;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSrcFqdns($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->src_fqdns = $arr;

        return $this;
    }

    /**
     * CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string src_ip_ranges = 432128083;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSrcIpRanges()
    {
        return $this->src_ip_ranges;
    }

    /**
     * CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string src_ip_ranges = 432128083;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSrcIpRanges($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->src_ip_ranges = $arr;

        return $this;
    }

    /**
     * Network type of the traffic source. Allowed values are: - UNSPECIFIED - INTERNET - INTRA_VPC - NON_INTERNET - VPC_NETWORKS
     * Check the SrcNetworkType enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string src_network_type = 309819686;</code>
     * @return string
     */
    public function getSrcNetworkType()
    {
        return isset($this->src_network_type) ? $this->src_network_type : '';
    }

    public function hasSrcNetworkType()
    {
        return isset($this->src_network_type);
    }

    public function clearSrcNetworkType()
    {
        unset($this->src_network_type);
    }

    /**
     * Network type of the traffic source. Allowed values are: - UNSPECIFIED - INTERNET - INTRA_VPC - NON_INTERNET - VPC_NETWORKS
     * Check the SrcNetworkType enum for the list of possible values.
     *
     * Generated from protobuf field <code>optional string src_network_type = 309819686;</code>
     * @param string $var
     * @return $this
     */
    public function setSrcNetworkType($var)
    {
        GPBUtil::checkString($var, True);
        $this->src_network_type = $var;

        return $this;
    }

    /**
     * Networks of the traffic source. It can be either a full or partial url.
     *
     * Generated from protobuf field <code>repeated string src_networks = 247119872;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSrcNetworks()
    {
        return $this->src_networks;
    }

    /**
     * Networks of the traffic source. It can be either a full or partial url.
     *
     * Generated from protobuf field <code>repeated string src_networks = 247119872;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSrcNetworks($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->src_networks = $arr;

        return $this;
    }

    /**
     * Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of source region codes allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string src_region_codes = 99086742;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSrcRegionCodes()
    {
        return $this->src_region_codes;
    }

    /**
     * Region codes whose IP addresses will be used to match for source of traffic. Should be specified as 2 letter country code defined as per ISO 3166 alpha-2 country codes. ex."US" Maximum number of source region codes allowed is 5000.
     *
     * Generated from protobuf field <code>repeated string src_region_codes = 99086742;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSrcRegionCodes($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->src_region_codes = $arr;

        return $this;
    }

    /**
     * List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.FirewallPolicyRuleSecureTag src_secure_tags = 508791302;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSrcSecureTags()
    {
        return $this->src_secure_tags;
    }

    /**
     * List of secure tag values, which should be matched at the source of the traffic. For INGRESS rule, if all the srcSecureTag are INEFFECTIVE, and there is no srcIpRange, this rule will be ignored. Maximum number of source tag values allowed is 256.
     *
     * Generated from protobuf field <code>repeated .google.cloud.compute.v1.FirewallPolicyRuleSecureTag src_secure_tags = 508791302;</code>
     * @param array<\Google\Cloud\Compute\V1\FirewallPolicyRuleSecureTag>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSrcSecureTags($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Compute\V1\FirewallPolicyRuleSecureTag::class);
        $this->src_secure_tags = $arr;

        return $this;
    }

    /**
     * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
     *
     * Generated from protobuf field <code>repeated string src_threat_intelligences = 323631018;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSrcThreatIntelligences()
    {
        return $this->src_threat_intelligences;
    }

    /**
     * Names of Network Threat Intelligence lists. The IPs in these lists will be matched against traffic source.
     *
     * Generated from protobuf field <code>repeated string src_threat_intelligences = 323631018;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSrcThreatIntelligences($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->src_threat_intelligences = $arr;

        return $this;
    }

}

