submodule openconfig-ospfv2-global {

  belongs-to openconfig-ospfv2 {
    prefix "oc-ospfv2";
  }

  import ietf-yang-types { prefix "yang"; }
  import openconfig-extensions { prefix "oc-ext"; }
  import openconfig-routing-policy { prefix "oc-rpol"; }
  import openconfig-ospf-types { prefix "oc-ospft"; }

  // Include common submodule
  include openconfig-ospfv2-common;

  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    www.openconfig.net";

  description
    "This submodule provides OSPFv2 configuration and operational
    state parameters that are global to a particular OSPF instance";

  oc-ext:openconfig-version "0.1.0";

  revision "2017-02-28"{
    description
      "Initial public release of OSPFv2";
    reference "0.1.0";
  }

  revision "2016-06-24" {
    description
      "Initial revision";
    reference "0.0.1";
  }

  grouping ospfv2-global-config {
    description
      "Global configuration for OSPFv2";

    leaf router-id {
      type yang:dotted-quad;
      description
        "A 32-bit number represented as a dotted quad assigned to
        each router running the OSPFv2 protocol. This number should
        be unique within the autonomous system";
      reference "rfc2828";
    }

    leaf summary-route-cost-mode {
      type enumeration {
        enum RFC1583_COMPATIBLE {
          description
            "Specify that summary routes should assume the cost of
            the lowest-cost more-specific route as per the behaviour
            specified in RFC1583";
        }
        enum RFC2328_COMPATIBLE {
          description
            "Specify that summary routes should assume the cost of the
            highest-cost more-specific route as per the revised
            behaviour specified in RFC2328";
        }
      }
      default "RFC2328_COMPATIBLE";
      description
        "Specify how costs for the summary routes should be specified
        as per the behaviour in the original OSPF specification
        RFC1583, or alternatively whether the revised behaviour
        described in RFC2328 should be utilised";
    }

    leaf igp-shortcuts {
      type boolean;
      description
        "When this leaf is set to true, OSPFv2 will route traffic to
        a remote system via any LSP to the system that is marked as
        shortcut eligible.";
    }

    leaf log-adjacency-changes {
      type boolean;
      description
        "When this leaf is set to true, a log message will be
        generated when the state of an OSPFv2 neighbour changes.";
    }

    leaf hide-transit-only-networks {
      type boolean;
      description
        "When this leaf is set to true, do not advertise prefixes
        into OSPFv2 that correspond to transit interfaces, as per
        the behaviour discussed in RFC6860.";
      reference
        "RFC6860 - Hiding Transit-Only Networks in OSPF";
    }
  }

  grouping ospfv2-global-spf-timers-config {
    description
      "Configuration parameters relating to global SPF timer
      parameters for OSPFv2";

    leaf initial-delay {
      // rjs TODO: IS-IS model has this as decimal64 - should it be
      // that or uint32 msec?
      type uint32;
      units msec;
      description
        "The value of this leaf specifies the time between a change
        in topology being detected and the first run of the SPF
        algorithm.";
    }

    leaf maximum-delay {
      // rjs TODO: same question as above
      type uint32;
      units msec;
      description
        "The value of this leaf specifies the maximum delay between
        a topology change being detected and the SPF algorithm
        running. This value is used for implementations that support
        increasing the wait time between SPF runs.";
    }

    // rjs TODO: some questions here around what we should specify:
    // JUNOS has rapid-runs and holddown
    // Cisco has maximum time between runs, and then a doubling of
    // the wait interval up to that maximum.
    // ALU has first-wait, second-wait, max-wait
  }

  grouping ospfv2-global-lsa-generation-timers-config {
    description
      "Configuration parameters relating to global LSA generation
      parameters for OSPFv2";

    leaf initial-delay {
      type uint32;
      units msec;
      description
        "The value of this leaf specifies the time between the first
        time an LSA is generated and advertised and the subsequent
        generation of that LSA.";
    }

    leaf maximum-delay {
      type uint32;
      units msec;
      description
        "The value of this leaf specifies the maximum time between the
        generation of an LSA and the subsequent re-generation of that
        LSA. This value is used in implementations that support
        increasing delay between generation of an LSA";
    }
  }

  grouping ospfv2-global-spf-timers-state {
    description
      "Operational state parameters relating to OSPFv2 global
      timers";

    uses ospfv2-common-timers;
  }

  grouping ospfv2-global-lsa-generation-timers-state {
    description
      "Operational state parameters relating to OSPFv2 global
      timers";

    uses ospfv2-common-timers;
  }

  grouping ospfv2-global-graceful-restart-config {
    description
      "Configuration parameters relating to graceful restart for
      OSPFv2";

    leaf enabled {
      type boolean;
      description
        "When the value of this leaf is set to true, graceful restart
        is enabled on the local system. In this case, the system will
        use Grace-LSAs to signal that it is restarting to its
        neighbors.";
    }

    leaf helper-only {
      type boolean;
      description
        "Operate graceful-restart only in helper mode. When this leaf
        is set to true, the local system does not use Grace-LSAs to
        indicate that it is restarting, but will accept Grace-LSAs
        from remote systems, and suppress withdrawl of adjacencies
        of the system for the grace period specified";
    }
  }

  grouping ospfv2-global-mpls-config {
    description
      "Configuration parameters for OSPFv2 options which
      relate to MPLS";

    leaf traffic-engineering-extensions {
      type boolean;
      description
        "When this leaf is set to true, use traffic engineering
        extensions for OSPF to advertise TE parameters via type 10
        Opaque LSAs";
    }
  }

  grouping ospfv2-global-inter-areapp-config { 
    description
      "Configuration parameters for OSPFv2 policies which propagate
      prefixes between areas";

    leaf src-area {
      type leafref {
        // we are at ospf/global/inter-area-propagation-policies/...
        // inter-area-propagation-policy/config/src-area
        path "../../../../../areas/area/identifier";
      }
      description
        "The area from which prefixes are to be exported.";
    }

    leaf dst-area { 
      type leafref {
        // we are at ospf/global/inter-area-propagation-policies/...
        // inter-area-propagation-policy/config/src-area
        path "../../../../../areas/area/identifier";
      }
      description
        "The destination area to which prefixes are to be imported";
    }

    uses oc-rpol:apply-policy-import-config;
  }

  grouping ospfv2-global-max-metric-config {
    description
      "Configuration paramters relating to setting the OSPFv2
      maximum metric.";

    leaf set {
      type boolean;
      description
        "When this leaf is set to true, all non-stub interfaces of
        the local system are advertised with the maximum metric,
        such that the router does not act as a transit system,
        (similarly to the IS-IS overload functionality).";
      reference
        "RFC3137 - OSPF Stub Router Advertisement";
    }

    leaf timeout {
      type uint64;
      units "seconds";
      description
        "The delay, in seconds, after which the advertisement of
        entities with the maximum metric should be cleared, and
        the system reverts to the default, or configured, metrics.";
    }

    leaf-list include {
      type identityref {
        base "oc-ospft:MAX_METRIC_INCLUDE";
      }
      description
        "By default, the maximum metric is advertised for all
        non-stub interfaces of a device. When identities are
        specified within this leaf-list, additional entities
        are also advertised with the maximum metric according
        to the values within the list.";
    }

    leaf-list trigger {
      type identityref {
        base "oc-ospft:MAX_METRIC_TRIGGER";
      }
      description
        "By default, the maximum metric is only advertised
        when the max-metric/set leaf is specified as true.
        In the case that identities are specified within this
        list, they provide additional triggers (e.g., system
        boot) that may cause the max-metric to be set. In this
        case, the system should still honour the timeout specified
        by the max-metric/timeout leaf, and clear the max-metric
        advertisements after the expiration of this timer.";
    }
  }

  grouping ospfv2-global-structural {
    description
      "Top level structural grouping for OSPFv2 global parameters";

    container global {
      description
        "Configuration and operational state parameters for settings
        that are global to the OSPFv2 instance";

      container config {
        description
          "Global configuration parameters for OSPFv2";
        uses ospfv2-global-config;
      }

      container state {
        config false;
        description
          "Operational state parameters for OSPFv2";
        uses ospfv2-global-config;
      }

      container timers {
        description
          "Configuration and operational state parameters for OSPFv2
          timers";

        container spf {
          description
            "Configuration and operational state parameters relating
            to timers governing the operation of SPF runs";

          container config {
            description
              "Configuration parameters relating to global OSPFv2
              SPF timers";
            uses ospfv2-global-spf-timers-config;
          }

          container state {
            config false;
            description
              "Operational state parameters relating to the global
              OSPFv2 SPF timers";
            uses ospfv2-global-spf-timers-config;
            uses ospfv2-global-spf-timers-state;
          }
        }

        container max-metric {
          description
            "Configuration and operational state parameters relating
            to setting the OSPFv2 maximum metric.";

          container config {
            description
              "Configuration parameters relating to setting the OSPFv2
              maximum metric for a set of advertised entities.";
            uses ospfv2-global-max-metric-config;
          }

          container state {
            config false;
            description
              "Operational state parameters relating to setting the
              OSPFv2 maximum metric for a set of advertised entities.";
            uses ospfv2-global-max-metric-config;
          }
        }

        container lsa-generation {
          description
            "Configuration and operational state parameters relating
            to timers governing the generation of LSAs by the local
            system";

          container config {
            description
              "Configuration parameters relating to the generation of
              LSAs by the local system";
            uses ospfv2-global-lsa-generation-timers-config;
          }

          container state {
            config false;
            description
              "Operational state parameters relating to the generation
              of LSAs by the local system";
            uses ospfv2-global-lsa-generation-timers-config;
            uses ospfv2-global-lsa-generation-timers-state;
          }
        }
      }

      container graceful-restart {
        description
          "Configuration and operational state parameters for OSPFv2
          graceful restart";

        container config {
          description
            "Configuration parameters relating to OSPFv2 graceful
            restart";
          uses ospfv2-global-graceful-restart-config;
        }

        container state {
          config false;
          description
            "Operational state parameters relating to OSPFv2 graceful
            restart";
          uses ospfv2-global-graceful-restart-config;
        }
      }

      container mpls {
        description
          "OSPFv2 parameters relating to MPLS";

        container config {
          description
            "Configuration parameters relating to MPLS for OSPFv2";
          uses ospfv2-global-mpls-config;
        }

        container state {
          config false;
          description
            "Operational state parameters relating to MPLS for
            OSPFv2";
          uses ospfv2-global-mpls-config;
        }

        container igp-ldp-sync {
          description
            "OSPFv2 parameters relating to LDP/IGP synchronization";

          container config {
            description
              "Configuration parameters relating to LDP/IG
              synchronization.";
            uses ospfv2-common-mpls-igp-ldp-sync-config;
          }

          container state {
            config false;
            description
              "Operational state variables relating to LDP/IGP
              synchronization";
            uses ospfv2-common-mpls-igp-ldp-sync-config;
          }
        }
      }

      container inter-area-propagation-policies {
        description
          "Policies defining how inter-area propagation should be performed
          by the OSPF instance";

        list inter-area-propagation-policy {
          key "src-area dst-area";
          description
            "A list of connections between pairs of areas - routes are
            propagated from the source (src) area to the destination (dst)
            area according to the policy specified";

          leaf src-area {
            type leafref {
              path "../config/src-area";
            }
            description
              "Reference to the source area";
          }

          leaf dst-area {
            type leafref {
              path "../config/dst-area";
            }
            description
              "Reference to the destination area";
          }

          container config {
            description
              "Configuration parameters relating to the inter-area
              propagation policy";
            uses ospfv2-global-inter-areapp-config;
          }

          container state {
            config false;
            description
              "Operational state parameters relating to the inter-area
              propagation policy";
            uses ospfv2-global-inter-areapp-config;
          }
        }
      }
    }
  }
}