/**
 * Core Services API
 * Use the Core Services API to manage resources such as virtual cloud networks (VCNs),
compute instances, and block storage volumes. For more information, see the console
documentation for the [Networking](/iaas/Content/Network/Concepts/overview.htm),
[Compute](/iaas/Content/Compute/Concepts/computeoverview.htm), and
[Block Volume](/iaas/Content/Block/Concepts/overview.htm) services.

 * OpenAPI spec version: 20160918
 *
 *
 * NOTE: This class is auto generated by OracleSDKGenerator.
 * Do not edit the class manually.
 *
 * Copyright (c) 2020, 2022, Oracle and/or its affiliates.  All rights reserved.
 * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
 */ import * as model from "../model" ; import common = require ( "oci-common" ) ; /**
 * A mapping between a destination IP address range and a virtual device to route matching
 * packets to (a target).
 *
 */ export interface RouteRule { /**
      * Deprecated. Instead use `destination` and `destinationType`. Requests that include both
  * `cidrBlock` and `destination` will be rejected.
  * <p>
  A destination IP address range in CIDR notation. Matching packets will
  * be routed to the indicated network entity (the target).
  * <p>
  Cannot be an IPv6 CIDR.
  * <p>
  Example: `0.0.0.0/0`
  *
      */ "cidrBlock" ? : string ; /**
      * Conceptually, this is the range of IP addresses used for matching when routing
  * traffic. Required if you provide a `destinationType`.
  * <p>
  Allowed values:
  * <p>
    * IP address range in CIDR notation. Can be an IPv4 or IPv6 CIDR. For example: `192.168.1.0/24`
  *   or `2001:0db8:0123:45::/56`. If you set this to an IPv6 CIDR, the route rule's target
  *   can only be a DRG or internet gateway.
  *   IPv6 addressing is supported for all commercial and government regions.
  *   See [IPv6 Addresses](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/ipv6.htm).
  * <p>
    * The `cidrBlock` value for a  Service , if you're
  *     setting up a route rule for traffic destined for a particular `Service` through
  *     a service gateway. For example: `oci-phx-objectstorage`.
  *
       "destination" ? : string ; /**
     * Type of destination for the rule. Required if you provide a `destination`.
     * <p>
     * `CIDR_BLOCK`: If the rule's `destination` is an IP address range in CIDR notation.
     * <p>
     * `SERVICE_CIDR_BLOCK`: If the rule's `destination` is the `cidrBlock` value for a
     *      Service (the rule is for traffic destined for a
     *     particular `Service` through a service gateway).
     *
      "destinationType" ? : RouteRule . DestinationType ; /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) for the route rule's target. For information about the type of
     * targets you can specify, see
     * [Route Tables](https://docs.cloud.oracle.com/iaas/Content/Network/Tasks/managingroutetables.htm).
     *
     */ "networkEntityId" : string ; /**
     * An optional description of your choice for the rule.
     *
     */ "description" ? : string ; } export namespace RouteRule { export enum DestinationType { CidrBlock = "CIDR_BLOCK" , ServiceCidrBlock = "SERVICE_CIDR_BLOCK" , /**
         * This value is used if a service returns a value for this enum that is not recognized by this
         * version of the SDK.
         */ UnknownValue = "UNKNOWN_VALUE" } export function getJsonObj ( obj ) { const jsonObj = { ... obj , ... { } } ; return jsonObj ; } export function getDeserializedJsonObj ( obj ) { const jsonObj = { ... obj , ... { } } ; return jsonObj ; } }