ietf-pim-base

This module defines a collection of YANG definitions common for all PIM (Protocol Independent Multicast) modes. Copyright (c) 2...

  • Version: 2022-10-19

    ietf-pim-base@2022-10-19


    
      module ietf-pim-base {
    
        yang-version 1.1;
    
        namespace
          "urn:ietf:params:xml:ns:yang:ietf-pim-base";
    
        prefix pim-base;
    
        import ietf-inet-types {
          prefix inet;
          reference
            "RFC 6991: Common YANG Data Types";
    
    
        }
        import ietf-yang-types {
          prefix yang;
          reference
            "RFC 6991: Common YANG Data Types";
    
    
        }
        import ietf-routing-types {
          prefix rt-types;
          reference
            "RFC 8294: Common YANG Data Types for the Routing Area";
    
    
        }
        import ietf-interfaces {
          prefix if;
          reference
            "RFC 8343: A YANG Data Model for Interface Management";
    
    
        }
        import ietf-routing {
          prefix rt;
          reference
            "RFC 8349: A YANG Data Model for Routing Management (NMDA
            Version)";
    
    
        }
        import ietf-bfd-types {
          prefix bfd-types;
          reference
            "RFC 9314: YANG Data Model for Bidirectional Forwarding
            Detection (BFD)";
    
    
        }
    
        organization "IETF PIM Working Group";
    
        contact
          "WG Web:   <https://datatracker.ietf.org/wg/pim/>
    WG List:  <mailto:pim@ietf.org>
    
    Editor:   Xufeng Liu
    	  <mailto:xufeng.liu.ietf@gmail.com>
    
    Editor:   Pete McAllister
    	  <mailto:pete.mcallister@metaswitch.com>
    
    Editor:   Anish Peter
    	  <mailto:anish.ietf@gmail.com>
    
    Editor:   Mahesh Sivakumar
    	  <mailto:sivakumar.mahesh@gmail.com>
    
    Editor:   Yisong Liu
    	  <mailto:liuyisong@chinamobile.com>
    
    Editor:   Fangwei Hu
    	  <mailto:hufwei@gmail.com>";
    
        description
          "This module defines a collection of YANG definitions common for
    all PIM (Protocol Independent Multicast) modes.
    
    Copyright (c) 2022 IETF Trust and the persons identified as
    authors of the code.  All rights reserved.
    
    Redistribution and use in source and binary forms, with or
    without modification, is permitted pursuant to, and subject to
    the license terms contained in, the Revised BSD License set
    forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (https://trustee.ietf.org/license-info).
    
    This version of this YANG module is part of RFC 9128; see the
    RFC itself for full legal notices.";
    
        revision "2022-10-19" {
          description "Initial revision.";
          reference
            "RFC 9128: A YANG Data Model for Protocol Independent
            Multicast (PIM)";
    
        }
    
    
        feature bfd {
          description
            "Supports BFD (Bidirectional Forwarding Detection).";
          reference
            "RFC 5880: Bidirectional Forwarding Detection (BFD)";
    
        }
    
        feature global-graceful-restart {
          description
            "Global configuration for graceful restart support as per
    RFC 8706.";
          reference
            "RFC 8706: Restart Signaling for IS-IS";
    
        }
    
        feature intf-dr-priority {
          description
            "Supports configuration of an interface DR (Designated Router)
    priority.";
          reference
            "RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.3.2";
    
        }
    
        feature intf-hello-holdtime {
          description
            "Supports configuration of the interface Hello Holdtime.";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised), Section 4.3.3
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.11";
    
        }
    
        feature intf-hello-interval {
          description
            "Supports configuration of the interface Hello interval.";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised), Section 4.8
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.11";
    
        }
    
        feature intf-hello-multiplier {
          description
            "Supports configuration of the interface Hello multiplier
    (the number by which the Hello interval is multiplied to
    obtain the Hello Holdtime).";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised), Section 4.8
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.11";
    
        }
    
        feature intf-jp-interval {
          description
            "Supports configuration of the interface Join/Prune interval.";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised), Section 4.8
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.11";
    
        }
    
        feature intf-jp-holdtime {
          description
            "Supports configuration of the interface Join/Prune Holdtime.";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised), Section 4.8
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.11";
    
        }
    
        feature intf-jp-multiplier {
          description
            "Supports configuration of the interface Join/Prune
    multiplier (the number by which the Join/Prune interval is
    multiplied to obtain the Join/Prune Holdtime).";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised), Section 4.8
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.11";
    
        }
    
        feature intf-propagation-delay {
          description
            "Supports configuration of interface propagation delay.";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised), Section 4.3.5
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.3.3";
    
        }
    
        feature intf-override-interval {
          description
            "Supports configuration of the interface override interval.";
          reference
            "RFC 3973: Protocol Independent Multicast - Dense Mode
            (PIM-DM): Protocol Specification (Revised),
            Sections 4.1.1 and 4.8
             RFC 5015: Bidirectional Protocol Independent Multicast
            (BIDIR-PIM), Section 3.6
             RFC 7761: Protocol Independent Multicast - Sparse Mode
            (PIM-SM): Protocol Specification (Revised), Section 4.11";
    
        }
    
        feature per-af-graceful-restart {
          description
            "Per address family configuration for graceful restart support
    as per RFC 8706.";
          reference
            "RFC 8706: Restart Signaling for IS-IS";
    
        }
    
        typedef interface-event-type {
          type enumeration {
            enum "up" {
              value 0;
              description
                "Neighbor status changed to 'up'.";
            }
            enum "down" {
              value 1;
              description
                "Neighbor status changed to 'down'.";
            }
            enum "new-dr" {
              value 2;
              description
                "A new DR (Designated Router) was elected on the connected
    network.";
            }
            enum "new-df" {
              value 3;
              description
                "A new DF (Designated Forwarder) was elected on the
    connected network.";
            }
          }
          description
            "Operational status event type for notifications.";
        }
    
        typedef neighbor-event-type {
          type enumeration {
            enum "up" {
              value 0;
              description
                "Neighbor status changed to 'up'.";
            }
            enum "down" {
              value 1;
              description
                "Neighbor status changed to 'down'.";
            }
          }
          description
            "Operational status event type for notifications.";
        }
    
        identity pim-mode {
          description
            "The PIM mode in which a group is operating.";
        }
    
        identity pim-none {
          base pim-mode;
          description "PIM is not operating.";
        }
    
        identity pim-bidir {
          base pim-mode;
          description
            "PIM is operating in Bidirectional Mode.";
        }
    
        identity pim-dm {
          base pim-mode;
          description
            "PIM is operating in Dense Mode (DM).";
        }
    
        identity pim-sm {
          base pim-mode;
          description
            "PIM is operating in Sparse Mode (SM).";
        }
    
        identity pim-asm {
          base pim-sm;
          description
            "PIM is operating in Sparse Mode with Any-Source Multicast
    (ASM).";
        }
    
        identity pim-ssm {
          base pim-sm;
          description
            "PIM is operating in Sparse Mode with Source-Specific
    Multicast (SSM).";
        }
    
        notification pim-neighbor-event {
          description
            "Notification event for a neighbor.";
          leaf event-type {
            type neighbor-event-type;
            description "Event type.";
          }
    
          leaf interface-ref {
            type leafref {
              path "/rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface/pim-base:name";
            }
            description
              "Reference to a PIM interface.";
          }
    
          leaf interface-af-ref {
            type leafref {
              path "/rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface[pim-base:name = current()/../interface-ref]/pim-base:address-family/pim-base:address-family";
            }
            description
              "Reference to a PIM interface address family.";
          }
    
          leaf neighbor-ipv4-ref {
            when
              "../interface-af-ref = 'rt:ipv4'" {
              description
                "Only applicable to an IPv4 address family.";
            }
            type leafref {
              path "/rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface[pim-base:name = current()/../interface-ref]/pim-base:address-family[pim-base:address-family = current()/../interface-af-ref]/pim-base:neighbors/pim-base:ipv4-neighbor/pim-base:address";
            }
            description
              "Reference to a PIM IPv4 neighbor.";
          }
    
          leaf neighbor-ipv6-ref {
            when
              "../interface-af-ref = 'rt:ipv6'" {
              description
                "Only applicable to an IPv6 address family.";
            }
            type leafref {
              path "/rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface[pim-base:name = current()/../interface-ref]/pim-base:address-family[pim-base:address-family = current()/../interface-af-ref]/pim-base:neighbors/pim-base:ipv6-neighbor/pim-base:address";
            }
            description
              "Reference to a PIM IPv6 neighbor.";
          }
    
          leaf up-time {
            type rt-types:timeticks64;
            description
              "The number of time ticks (hundredths of a second) since
    the neighbor relationship has been formed as reachable
    without being timed out.";
          }
        }  // notification pim-neighbor-event
    
        notification pim-interface-event {
          description
            "Notification event for an interface.";
          leaf event-type {
            type interface-event-type;
            description "Event type.";
          }
    
          leaf interface-ref {
            type leafref {
              path "/rt:routing/rt:control-plane-protocols/pim-base:pim/pim-base:interfaces/pim-base:interface/pim-base:name";
            }
            description
              "Reference to a PIM interface.";
          }
    
          container ipv4 {
            description
              "Contains IPv4 information.";
            leaf-list address {
              type inet:ipv4-address;
              description "List of addresses.";
            }
    
            leaf dr-address {
              type inet:ipv4-address;
              description
                "DR (Designated Router) address.";
            }
          }  // container ipv4
    
          container ipv6 {
            description
              "Contains IPv6 information.";
            leaf-list address {
              type inet:ipv6-address;
              description "List of addresses.";
            }
    
            leaf dr-address {
              type inet:ipv6-address;
              description "DR address.";
            }
          }  // container ipv6
        }  // notification pim-interface-event
      }  // module ietf-pim-base
    

© 2023 YumaWorks, Inc. All rights reserved.