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. |