ietf-igmp-mld-proxy@2023-04-25.yang   ietf-igmp-mld-proxy@2023-04-25.yang.formatted.yang 
module ietf-igmp-mld-proxy { module ietf-igmp-mld-proxy {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy"; namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld-proxy";
prefix igmp-mld-proxy; prefix igmp-mld-proxy;
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 6991: Common YANG Data Types";
} }
import ietf-interfaces { import ietf-interfaces {
prefix if; prefix if;
reference reference
"RFC 8343: A YANG Data Model for Interface Management"; "RFC 8343: A YANG Data Model for Interface Management";
} }
import ietf-routing { import ietf-routing {
prefix rt; prefix rt;
reference reference
"RFC 8349: A YANG Data Model for Routing Management (NMDA "RFC 8349: A YANG Data Model for Routing Management (NMDA
Version)"; Version)";
} }
import ietf-routing-types { import ietf-routing-types {
prefix rt-types; prefix rt-types;
reference reference
"RFC 8294: Common YANG Data Types for the Routing Area"; "RFC 8294: Common YANG Data Types for the Routing Area";
} }
import ietf-pim-base { import ietf-pim-base {
prefix pim-base; prefix pim-base;
reference reference
"RFC 9128: YANG Data Model for Protocol Independent Multicast "RFC 9128: YANG Data Model for Protocol Independent Multicast
(PIM)"; (PIM)";
} }
organization
"IETF PIM Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org>
Editors: Hongji Zhao organization
<mailto:hongji.zhao@ericsson.com> "IETF PIM Working Group";
contact
"WG Web: <https://datatracker.ietf.org/wg/pim/>
WG List: <mailto:pim@ietf.org>
Xufeng Liu Editors: Hongji Zhao
<mailto:xufeng.liu.ietf@gmail.com> <mailto:hongji.zhao@ericsson.com>
Yisong Liu Xufeng Liu
<mailto:liuyisong@chinamobile.com> <mailto:xufeng.liu.ietf@gmail.com>
Mani Panchanathan Yisong Liu
<mailto:mapancha@cisco.com> <mailto:liuyisong@chinamobile.com>
Mahesh Sivakumar Mani Panchanathan
<mailto:sivakumar.mahesh@gmail.com>"; <mailto:mapancha@cisco.com>
description Mahesh Sivakumar
"This module defines a collection of YANG definitions common for <mailto:sivakumar.mahesh@gmail.com>";
all Internet Group Management Protocol (IGMP) and Multicast description
Listener Discovery (MLD) Proxy devices. "This module defines a collection of YANG definitions common for
all Internet Group Management Protocol (IGMP) and Multicast
Listener Discovery (MLD) Proxy devices.
Copyright (c) 2023 IETF Trust and the persons identified as Copyright (c) 2023 IETF Trust and the persons identified as
authors of the code. All rights reserved. authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to without modification, is permitted pursuant to, and subject to
the license terms contained in, the Revised BSD License set the license terms contained in, the Revised BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 9398; see the This version of this YANG module is part of RFC 9398; see the
RFC itself for full legal notices."; RFC itself for full legal notices.";
revision 2023-04-25 { revision 2023-04-25 {
description description
"Initial revision."; "Initial revision.";
reference reference
"RFC 9398: A YANG Data Model for IGMP and Multicast Listener "RFC 9398: A YANG Data Model for IGMP and Multicast Listener
Discovery (MLD) Proxy Devices"; Discovery (MLD) Proxy Devices";
} }
/* /*
* Features * Features
*/ */
feature igmp-proxy { feature igmp-proxy {
description description
"Support for the IGMP Proxy protocol."; "Support for the IGMP Proxy protocol.";
reference reference
"RFC 4605: Internet Group Management Protocol (IGMP) / "RFC 4605: Internet Group Management Protocol (IGMP) /
Multicast Listener Discovery (MLD)-Based Multicast Forwarding Multicast Listener Discovery (MLD)-Based Multicast Forwarding
('IGMP/MLD Proxying')"; ('IGMP/MLD Proxying')";
} }
feature mld-proxy { feature mld-proxy {
description description
"Support for the MLD Proxy protocol."; "Support for the MLD Proxy protocol.";
reference reference
"RFC 4605: Internet Group Management Protocol (IGMP) / "RFC 4605: Internet Group Management Protocol (IGMP) /
Multicast Listener Discovery (MLD)-Based Multicast Forwarding Multicast Listener Discovery (MLD)-Based Multicast Forwarding
('IGMP/MLD Proxying')"; ('IGMP/MLD Proxying')";
} }
/* /*
* Identities * Identities
*/ */
identity igmp-proxy { identity igmp-proxy {
base rt:control-plane-protocol; base rt:control-plane-protocol;
description description
"IGMP Proxy protocol."; "IGMP Proxy protocol.";
} }
identity mld-proxy { identity mld-proxy {
base rt:control-plane-protocol; base rt:control-plane-protocol;
description description
"MLD Proxy protocol."; "MLD Proxy protocol.";
} }
/* /*
* Groupings * Groupings
*/ */
grouping per-interface-config-attributes { grouping per-interface-config-attributes {
description
"'config' attributes under interface view.";
leaf enabled {
type boolean;
default true;
description description
"Set the value to 'true' to enable the IGMP/MLD Proxy."; "'config' attributes under interface view.";
} leaf enabled {
} // per-interface-config-attributes type boolean;
grouping state-group-attributes { default "true";
description description
"State group attributes."; "Set the value to 'true' to enable the IGMP/MLD Proxy.";
leaf up-time { }
type uint32; } // per-interface-config-attributes
units seconds;
grouping state-group-attributes {
description description
"The elapsed time for (S,G) or (*,G)."; "State group attributes.";
} leaf up-time {
leaf filter-mode { type uint32;
type enumeration { units "seconds";
enum "include" { description
description "The elapsed time for (S,G) or (*,G).";
"In 'include' mode, reception of packets sent }
to the specified multicast address is requested leaf filter-mode {
only from those IP source addresses listed in the type enumeration {
source-list parameter."; enum include {
} description
enum "exclude" { "In 'include' mode, reception of packets sent
description to the specified multicast address is requested
"In 'exclude' mode, reception of packets sent only from those IP source addresses listed in the
to the given multicast address is requested source-list parameter.";
from all IP source addresses except those }
listed in the source-list parameter."; enum exclude {
description
"In 'exclude' mode, reception of packets sent
to the given multicast address is requested
from all IP source addresses except those
listed in the source-list parameter.";
}
} }
mandatory true;
description
"Filter mode for a multicast group.
May be either 'include' or 'exclude'.";
} }
mandatory true; } // state-group-attributes
description
"Filter mode for a multicast group.
May be either 'include' or 'exclude'.";
}
} // state-group-attributes
/* augments */ /* augments */
augment "/rt:routing/rt:control-plane-protocols"+ augment "/rt:routing/rt:control-plane-protocols"
"/rt:control-plane-protocol" { + "/rt:control-plane-protocol" {
when when "derived-from-or-self(rt:type, 'igmp-mld-proxy:igmp-proxy')" {
"derived-from-or-self(rt:type, 'igmp-mld-proxy:igmp-proxy')" { description
description "This augmentation is only valid for IGMP Proxies.";
"This augmentation is only valid for IGMP Proxies."; }
} description
description "IGMP Proxy augmentation to routing control plane protocol
"IGMP Proxy augmentation to routing control plane protocol configuration and state.";
configuration and state."; container igmp-proxy {
container igmp-proxy { if-feature "igmp-proxy";
if-feature "igmp-proxy"; presence "IGMP Proxy configuration.";
presence "IGMP Proxy configuration."; description
description "IGMP Proxy instance configuration.";
"IGMP Proxy instance configuration."; container interfaces {
container interfaces { description
description "Contains a list of upstream interfaces.";
"Contains a list of upstream interfaces."; list interface {
list interface { key "name";
key "name"; description
description "List of upstream interfaces.";
"List of upstream interfaces."; leaf name {
leaf name { type if:interface-ref;
type if:interface-ref; must 'not( current() = /rt:routing'
must "not( current() = /rt:routing"+ + '/rt:control-plane-protocols/pim-base:pim'
"/rt:control-plane-protocols/pim-base:pim"+ + '/pim-base:interfaces/pim-base:interface'
"/pim-base:interfaces/pim-base:interface"+ + '/pim-base:name )' {
"/pim-base:name )" { description
description "The upstream interface for the IGMP Proxy
"The upstream interface for the IGMP Proxy must not be configured to use PIM.";
must not be configured to use PIM."; }
} description
description "The upstream interface name.";
"The upstream interface name."; }
} leaf igmp-version {
leaf igmp-version { type uint8 {
type uint8 { range "1..3";
range "1..3"; }
} default "2";
default 2; description
description "IGMP version.";
"IGMP version."; }
} uses per-interface-config-attributes;
uses per-interface-config-attributes; leaf sender-source-address {
leaf sender-source-address { type inet:ipv4-address-no-zone;
type inet:ipv4-address-no-zone; description
description "The sender source address of an
"The sender source address of an IGMP membership report message or leave message.";
IGMP membership report message or leave message."; }
} list group {
list group { key "group-address";
key "group-address"; config false;
config false; description
description "Multicast group membership information
"Multicast group membership information that joined on the interface.";
that joined on the interface."; leaf group-address {
leaf group-address { type rt-types:ipv4-multicast-group-address;
type rt-types:ipv4-multicast-group-address; description
description "Multicast group address.";
"Multicast group address."; }
} uses state-group-attributes;
uses state-group-attributes; list source {
list source { key "source-address";
key "source-address"; description
description "Multicast source information
"Multicast source information for the multicast group.";
for the multicast group."; leaf source-address {
leaf source-address { type inet:ipv4-address-no-zone;
type inet:ipv4-address-no-zone; description
description "Multicast source address.";
"Multicast source address."; }
} leaf up-time {
leaf up-time { type uint32;
type uint32; units "seconds";
units seconds; description
description "The elapsed time for (S,G) or (*,G).";
"The elapsed time for (S,G) or (*,G)."; }
} list downstream-interface {
list downstream-interface { key "name";
key "name"; description
description "List of downstream interfaces.";
"List of downstream interfaces."; leaf name {
leaf name { type if:interface-ref;
type if:interface-ref; description
description "Downstream interfaces
"Downstream interfaces for each upstream interface.";
for each upstream interface."; }
} }
} } // list source
} // list source } // list group
} // list group } // interface
} // interface } // interfaces
} // interfaces }
} }
}
augment "/rt:routing/rt:control-plane-protocols"+ augment "/rt:routing/rt:control-plane-protocols"
"/rt:control-plane-protocol" { + "/rt:control-plane-protocol" {
when when "derived-from-or-self(rt:type, 'igmp-mld-proxy:mld-proxy')" {
"derived-from-or-self(rt:type, 'igmp-mld-proxy:mld-proxy')" { description
description "This augmentation is only valid for MLD Proxies.";
"This augmentation is only valid for MLD Proxies."; }
} description
description "MLD Proxy augmentation to routing control plane protocol
"MLD Proxy augmentation to routing control plane protocol configuration and state.";
configuration and state."; container mld-proxy {
container mld-proxy { if-feature "mld-proxy";
if-feature "mld-proxy"; presence "MLD Proxy configuration.";
presence "MLD Proxy configuration."; description
description "MLD Proxy instance configuration.";
"MLD Proxy instance configuration."; container interfaces {
container interfaces { description
description "Contains a list of upstream interfaces.";
"Contains a list of upstream interfaces."; list interface {
list interface { key "name";
key "name"; description
description "List of upstream interfaces.";
"List of upstream interfaces."; leaf name {
leaf name { type if:interface-ref;
type if:interface-ref; must 'not( current() = /rt:routing'
must "not( current() = /rt:routing"+ + '/rt:control-plane-protocols/pim-base:pim'
"/rt:control-plane-protocols/pim-base:pim"+ + '/pim-base:interfaces/pim-base:interface'
"/pim-base:interfaces/pim-base:interface"+ + '/pim-base:name )' {
"/pim-base:name )" { description
description "The upstream interface for the MLD Proxy
"The upstream interface for the MLD Proxy must not be configured to use PIM.";
must not be configured to use PIM."; }
} description
description "The upstream interface name.";
"The upstream interface name."; }
} leaf mld-version {
leaf mld-version { type uint8 {
type uint8 { range "1..2";
range "1..2"; }
} default "2";
default 2; description
description "MLD version.";
"MLD version."; }
} uses per-interface-config-attributes;
uses per-interface-config-attributes; leaf sender-source-address {
leaf sender-source-address { type inet:ipv6-address-no-zone;
type inet:ipv6-address-no-zone; description
description "The sender source address of an
"The sender source address of an MLD membership report message or leave message.";
MLD membership report message or leave message."; }
} list group {
list group { key "group-address";
key "group-address"; config false;
config false; description
description "Multicast group membership information
"Multicast group membership information that joined on the interface.";
that joined on the interface."; leaf group-address {
leaf group-address { type rt-types:ipv6-multicast-group-address;
type rt-types:ipv6-multicast-group-address; description
description "Multicast group address.";
"Multicast group address."; }
} uses state-group-attributes;
uses state-group-attributes; list source {
list source { key "source-address";
key "source-address"; description
description "Multicast source information
"Multicast source information for the multicast group.";
for the multicast group."; leaf source-address {
leaf source-address { type inet:ipv6-address-no-zone;
type inet:ipv6-address-no-zone; description
description "Multicast source address.";
"Multicast source address."; }
} leaf up-time {
leaf up-time { type uint32;
type uint32; units "seconds";
units seconds; description
description "The elapsed time for (S,G) or (*,G).";
"The elapsed time for (S,G) or (*,G)."; }
} list downstream-interface {
list downstream-interface { key "name";
key "name"; description
description "List of downstream interfaces.";
"List of downstream interfaces."; leaf name {
leaf name { type if:interface-ref;
type if:interface-ref; description
description "Downstream interfaces
"Downstream interfaces for each upstream interface.";
for each upstream interface.";
} }
} }
} // list source } // list source
} // list group } // list group
} // interface } // interface
} // interfaces } // interfaces
} }
} }
} }
 End of changes. 26 change blocks. 
320 lines changed or deleted 317 lines changed or added

This html diff was produced by rfcdiff 1.48.