module openconfig-pim-types {
  yang-version 1;
  namespace "http://openconfig.net/yang/pim/types";
  prefix oc-pim-types;

  import openconfig-extensions {
    prefix oc-ext;
  }

  organization
    "OpenConfig working group";
  contact
    "OpenConfig working group
     www.openconfig.net";
  description
    "This module defines types related to the PIM protocol model.";

  revision 2018-11-21 {
    description
      "Add OpenConfig module metadata extensions.";
    reference
      "0.1.1";
  }
  revision 2018-02-19 {
    description
      "Initial revision.";
    reference
      "0.1.0";
  }

  oc-ext:openconfig-version "0.1.1";
  oc-ext:regexp-posix;
  oc-ext:catalog-organization "openconfig";
  oc-ext:origin "openconfig";

  identity PIM_MODE {
    description
      "Base identity for the operating modes of Protocol-Independent
       Multicast.";
  }

  identity PIM_MODE_SPARSE {
    base PIM_MODE;
    description
      "PIM sparse mode (PIM-SM).";
    reference
      "RFC7761";
  }

  identity PIM_MODE_DENSE {
    base PIM_MODE;
    description
      "PIM dense mode (PIM-DM).";
    reference
      "RFC3973";
  }

  typedef dr-priority-type {
    type uint32;
    description
      "The port's designated router priority. Larger always preferred.
       DR Priority is a 32-bit unsigned number, ranges 0-4294967295.";
    reference
      "RFC7761 4.3.1 page 33";
  }

  typedef pim-interval-type {
    type uint8 {
      range "1..255";
    }
    units "seconds";
    description
      "Interval at which the router sends the PIM message toward the
       upstream RPF neighbor.";
    reference
      "RFC7761 4.5 page 44, 4.3.1 page 29";
  }
}