| ietf-igmp-mld@2019-09-10.yang | ietf-igmp-mld@2019-09-10-formatted2.yang | |||
|---|---|---|---|---|
| module ietf-igmp-mld { | module ietf-igmp-mld { | |||
| yang-version 1.1; | yang-version 1.1; | |||
| namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; | namespace "urn:ietf:params:xml:ns:yang:ietf-igmp-mld"; | |||
| prefix igmp-mld; | prefix igmp-mld; | |||
| import ietf-inet-types { | import ietf-inet-types { | |||
| prefix "inet"; | prefix inet; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference | |||
| "RFC 6991: Common YANG Data Types"; | ||||
| } | } | |||
| import ietf-yang-types { | import ietf-yang-types { | |||
| prefix "yang"; | prefix yang; | |||
| reference "RFC 6991: Common YANG Data Types"; | reference | |||
| "RFC 6991: Common YANG Data Types"; | ||||
| } | } | |||
| 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-access-control-list { | import ietf-access-control-list { | |||
| prefix "acl"; | prefix acl; | |||
| reference | reference | |||
| "RFC 8519: YANG Data Model for Network Access Control Lists | "RFC 8519: YANG Data Model for Network Access Control Lists | |||
| (ACLs)"; | (ACLs)"; | |||
| } | } | |||
| 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-interfaces { | import ietf-interfaces { | |||
| prefix "if"; | prefix if; | |||
| reference "RFC 8343: A YANG Data Model for Interface Management"; | reference | |||
| "RFC 8343: A YANG Data Model for Interface Management"; | ||||
| } | } | |||
| import ietf-ip { | import ietf-ip { | |||
| prefix ip; | prefix ip; | |||
| reference "RFC 8344: A YANG Data Model for IP Management"; | reference | |||
| "RFC 8344: A YANG Data Model for IP Management"; | ||||
| } | } | |||
| organization | organization | |||
| "IETF PIM Working Group"; | "IETF PIM Working Group"; | |||
| contact | contact | |||
| "WG Web: <http://datatracker.ietf.org/wg/pim/> | "WG Web: <http://datatracker.ietf.org/wg/pim/> | |||
| WG List: <mailto:pim@ietf.org> | WG List: <mailto:pim@ietf.org> | |||
| Editor: Xufeng Liu | Editor: Xufeng Liu | |||
| <mailto:xufeng.liu.ietf@gmail.com> | <mailto:xufeng.liu.ietf@gmail.com> | |||
| Editor: Feng Guo | Editor: Feng Guo | |||
| <mailto:guofeng@huawei.com> | <mailto:guofeng@huawei.com> | |||
| skipping to change at line 206 ¶ | skipping to change at line 203 ¶ | |||
| } | } | |||
| feature action-clear-groups { | feature action-clear-groups { | |||
| description | description | |||
| "Support actions to clear groups."; | "Support actions to clear groups."; | |||
| } | } | |||
| /* | /* | |||
| * Typedefs | * Typedefs | |||
| */ | */ | |||
| typedef ssm-map-ipv4-addr-type { | typedef ssm-map-ipv4-addr-type { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum 'policy' { | enum policy { | |||
| description | description | |||
| "Source address is specified in SSM map policy."; | "Source address is specified in SSM map policy."; | |||
| } | } | |||
| } | } | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| } | } | |||
| description | description | |||
| "Multicast source IP address type for SSM map."; | "Multicast source IP address type for SSM map."; | |||
| } // source-ipv4-addr-type | } | |||
| // source-ipv4-addr-type | ||||
| typedef ssm-map-ipv6-addr-type { | typedef ssm-map-ipv6-addr-type { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum 'policy' { | enum policy { | |||
| description | description | |||
| "Source address is specified in SSM map policy."; | "Source address is specified in SSM map policy."; | |||
| } | } | |||
| } | } | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| } | } | |||
| description | description | |||
| "Multicast source IP address type for SSM map."; | "Multicast source IP address type for SSM map."; | |||
| } // source-ipv6-addr-type | } | |||
| // source-ipv6-addr-type | ||||
| /* | /* | |||
| * Identities | * Identities | |||
| */ | */ | |||
| identity igmp { | identity igmp { | |||
| base "rt:control-plane-protocol"; | base rt:control-plane-protocol; | |||
| if-feature feature-igmp; | if-feature "feature-igmp"; | |||
| description "IGMP protocol."; | description | |||
| "IGMP protocol."; | ||||
| reference | reference | |||
| "RFC 3376: Internet Group Management Protocol, Version 3"; | "RFC 3376: Internet Group Management Protocol, Version 3"; | |||
| } | } | |||
| identity mld { | identity mld { | |||
| base "rt:control-plane-protocol"; | base rt:control-plane-protocol; | |||
| if-feature feature-mld; | if-feature "feature-mld"; | |||
| description "MLD protocol."; | description | |||
| "MLD protocol."; | ||||
| reference | reference | |||
| "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for | "RFC 3810: Multicast Listener Discovery Version 2 (MLDv2) for | |||
| IPv6"; | IPv6"; | |||
| } | } | |||
| /* | /* | |||
| * Groupings | * Groupings | |||
| */ | */ | |||
| grouping global-config-attributes { | grouping global-config-attributes { | |||
| description | description | |||
| "This grouping is used in either IGMP schema or MLD schema. | "This grouping is used in either IGMP schema or MLD schema. | |||
| When used in IGMP schema, this grouping contains the global | When used in IGMP schema, this grouping contains the global | |||
| configuration for IGMP; | configuration for IGMP; | |||
| when used in MLD schema, this grouping contains the global | when used in MLD schema, this grouping contains the global | |||
| configuration for MLD."; | configuration for MLD."; | |||
| leaf enabled { | leaf enabled { | |||
| if-feature global-admin-enable; | if-feature "global-admin-enable"; | |||
| type boolean; | type boolean; | |||
| default true; | default "true"; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| whether IGMP is enabled ('true') or disabled ('false') | whether IGMP is enabled ('true') or disabled ('false') | |||
| in the routing instance. | in the routing instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| whether MLD is enabled ('true') or disabled ('false') | whether MLD is enabled ('true') or disabled ('false') | |||
| in the routing instance."; | in the routing instance."; | |||
| } | } | |||
| leaf max-entries { | leaf max-entries { | |||
| if-feature global-max-entries; | if-feature "global-max-entries"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the maximum number of entries in the IGMP instance. | the maximum number of entries in the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the maximum number of entries in the MLD instance. | the maximum number of entries in the MLD instance. | |||
| If this leaf is not specified, the number of entries is not | If this leaf is not specified, the number of entries is not | |||
| limited."; | limited."; | |||
| } | } | |||
| leaf max-groups { | leaf max-groups { | |||
| if-feature global-max-groups; | if-feature "global-max-groups"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the maximum number of groups in the IGMP instance. | the maximum number of groups in the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the maximum number of groups in the MLD instance. | the maximum number of groups in the MLD instance. | |||
| If this leaf is not specified, the number of groups is not | If this leaf is not specified, the number of groups is not | |||
| limited."; | limited."; | |||
| } | } | |||
| } // global-config-attributes | } | |||
| // global-config-attributes | ||||
| grouping global-state-attributes { | grouping global-state-attributes { | |||
| description | description | |||
| "This grouping is used in either IGMP schema or MLD schema. | "This grouping is used in either IGMP schema or MLD schema. | |||
| When used in IGMP schema, this grouping contains the global | When used in IGMP schema, this grouping contains the global | |||
| IGMP state attributes; | IGMP state attributes; | |||
| when used in MLD schema, this grouping contains the global | when used in MLD schema, this grouping contains the global | |||
| MLD state attributes."; | MLD state attributes."; | |||
| leaf entries-count { | leaf entries-count { | |||
| type uint32; | type uint32; | |||
| config false; | config false; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the number of entries in the IGMP instance. | the number of entries in the IGMP instance. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the number of entries in the MLD instance."; | the number of entries in the MLD instance."; | |||
| } | } | |||
| leaf groups-count { | leaf groups-count { | |||
| skipping to change at line 347 ¶ | skipping to change at line 350 ¶ | |||
| type yang:date-and-time; | type yang:date-and-time; | |||
| description | description | |||
| "The time on the most recent occasion at which any one | "The time on the most recent occasion at which any one | |||
| or more of the statistic counters suffered a | or more of the statistic counters suffered a | |||
| discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
| since the last re-initialization of the local | since the last re-initialization of the local | |||
| management subsystem, then this node contains the time | management subsystem, then this node contains the time | |||
| the local management subsystem re-initialized itself."; | the local management subsystem re-initialized itself."; | |||
| } | } | |||
| container error { | container error { | |||
| description "Statistics of errors."; | description | |||
| "Statistics of errors."; | ||||
| uses global-statistics-error; | uses global-statistics-error; | |||
| } | } | |||
| container received { | container received { | |||
| description "Statistics of received messages."; | description | |||
| "Statistics of received messages."; | ||||
| uses global-statistics-sent-received; | uses global-statistics-sent-received; | |||
| } | } | |||
| container sent { | container sent { | |||
| description "Statistics of sent messages."; | description | |||
| "Statistics of sent messages."; | ||||
| uses global-statistics-sent-received; | uses global-statistics-sent-received; | |||
| } | } | |||
| } // statistics | } | |||
| } // global-state-attributes | // statistics | |||
| } | ||||
| // global-state-attributes | ||||
| grouping global-statistics-error { | grouping global-statistics-error { | |||
| description | description | |||
| "A grouping defining statistics attributes for errors."; | "A grouping defining statistics attributes for errors."; | |||
| uses global-statistics-sent-received; | uses global-statistics-sent-received; | |||
| leaf checksum { | leaf checksum { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of checksum errors."; | "The number of checksum errors."; | |||
| } | } | |||
| leaf too-short { | leaf too-short { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of messages that are too short."; | "The number of messages that are too short."; | |||
| skipping to change at line 376 ¶ | skipping to change at line 384 ¶ | |||
| leaf checksum { | leaf checksum { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of checksum errors."; | "The number of checksum errors."; | |||
| } | } | |||
| leaf too-short { | leaf too-short { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of messages that are too short."; | "The number of messages that are too short."; | |||
| } | } | |||
| } // global-statistics-error | } | |||
| // global-statistics-error | ||||
| grouping global-statistics-sent-received { | grouping global-statistics-sent-received { | |||
| description | description | |||
| "A grouping defining statistics attributes."; | "A grouping defining statistics attributes."; | |||
| leaf total { | leaf total { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of total messages."; | "The number of total messages."; | |||
| } | } | |||
| leaf query { | leaf query { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of query messages."; | "The number of query messages."; | |||
| } | } | |||
| skipping to change at line 402 ¶ | skipping to change at line 411 ¶ | |||
| leaf report { | leaf report { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of report messages."; | "The number of report messages."; | |||
| } | } | |||
| leaf leave { | leaf leave { | |||
| type yang:counter64; | type yang:counter64; | |||
| description | description | |||
| "The number of leave messages."; | "The number of leave messages."; | |||
| } | } | |||
| } // global-statistics-sent-received | } | |||
| // global-statistics-sent-received | ||||
| grouping interface-global-config-attributes { | grouping interface-global-config-attributes { | |||
| description | description | |||
| "Configuration attributes applied to the interface-global level | "Configuration attributes applied to the interface-global level | |||
| whose per-interface attributes are not configured."; | whose per-interface attributes are not configured."; | |||
| leaf max-groups-per-interface { | leaf max-groups-per-interface { | |||
| if-feature intf-max-groups; | if-feature "intf-max-groups"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of groups associated with each interface. | "The maximum number of groups associated with each interface. | |||
| If this leaf is not specified, the number of groups is not | If this leaf is not specified, the number of groups is not | |||
| limited."; | limited."; | |||
| } | } | |||
| } //interface-global-config-attributes | } | |||
| //interface-global-config-attributes | ||||
| grouping interface-common-config-attributes { | grouping interface-common-config-attributes { | |||
| description | description | |||
| "Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
| level and interface level."; | level and interface level."; | |||
| leaf last-member-query-interval { | leaf last-member-query-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..1023"; | range "1..1023"; | |||
| } | } | |||
| units seconds; | units "seconds"; | |||
| description | description | |||
| "When used in IGMP schema, this leaf indicates the Last | "When used in IGMP schema, this leaf indicates the Last | |||
| Member Query Interval, which may be tuned to modify the | Member Query Interval, which may be tuned to modify the | |||
| leave latency of the network; | leave latency of the network; | |||
| when used in MLD schema, this leaf indicates the Last | when used in MLD schema, this leaf indicates the Last | |||
| Listener Query Interval, which may be tuned to modify the | Listener Query Interval, which may be tuned to modify the | |||
| leave latency of the network. | leave latency of the network. | |||
| This leaf is not applicable for version 1 of the IGMP. For | This leaf is not applicable for version 1 of the IGMP. For | |||
| version 2 and version 3 of the IGMP, and for all versions of | version 2 and version 3 of the IGMP, and for all versions of | |||
| the MLD, the default value of this leaf is 1. | the MLD, the default value of this leaf is 1. | |||
| skipping to change at line 457 ¶ | skipping to change at line 468 ¶ | |||
| Version 3. | Version 3. | |||
| Section 7.8 of RFC 2710: Multicast Listener Discovery (MLD) | Section 7.8 of RFC 2710: Multicast Listener Discovery (MLD) | |||
| for IPv6. | for IPv6. | |||
| Section 9.8 of RFC 3810: Multicast Listener Discovery | Section 9.8 of RFC 3810: Multicast Listener Discovery | |||
| Version 2 (MLDv2) for IPv6."; | Version 2 (MLDv2) for IPv6."; | |||
| } | } | |||
| leaf query-interval { | leaf query-interval { | |||
| type uint16 { | type uint16 { | |||
| range "1..31744"; | range "1..31744"; | |||
| } | } | |||
| units seconds; | units "seconds"; | |||
| description | description | |||
| "The Query Interval is the interval between General Queries | "The Query Interval is the interval between General Queries | |||
| sent by the Querier. In RFC 3376, the Querier's Query | sent by the Querier. In RFC 3376, the Querier's Query | |||
| Interval (QQI) is represented from the Querier's Query | Interval (QQI) is represented from the Querier's Query | |||
| Interval Code (QQIC) in query message as follows: | Interval Code (QQIC) in query message as follows: | |||
| If QQIC < 128, QQI = QQIC. | If QQIC < 128, QQI = QQIC. | |||
| If QQIC >= 128, QQIC represents a floating-point value as | If QQIC >= 128, QQIC represents a floating-point value as | |||
| follows: | follows: | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| skipping to change at line 485 ¶ | skipping to change at line 496 ¶ | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference | reference | |||
| "Sections 4.1.7, 8.2, and 8.14.2 of RFC 3376: Internet Group | "Sections 4.1.7, 8.2, and 8.14.2 of RFC 3376: Internet Group | |||
| Management Protocol, Version 3"; | Management Protocol, Version 3"; | |||
| } | } | |||
| leaf query-max-response-time { | leaf query-max-response-time { | |||
| type uint16 { | type uint16 { | |||
| range "1..1023"; | range "1..1023"; | |||
| } | } | |||
| units seconds; | units "seconds"; | |||
| description | description | |||
| "Query maximum response time specifies the maximum time | "Query maximum response time specifies the maximum time | |||
| allowed before sending a responding report. | allowed before sending a responding report. | |||
| The default value is 10. | The default value is 10. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference | reference | |||
| "Sections 4.1.1, 8.3, and 8.14.3 of RFC 3376: Internet Group | "Sections 4.1.1, 8.3, and 8.14.3 of RFC 3376: Internet Group | |||
| Management Protocol, Version 3"; | Management Protocol, Version 3"; | |||
| } | } | |||
| leaf require-router-alert { | leaf require-router-alert { | |||
| if-feature intf-require-router-alert; | if-feature "intf-require-router-alert"; | |||
| type boolean; | type boolean; | |||
| description | description | |||
| "Protocol packets should contain the router alert IP option. | "Protocol packets should contain the router alert IP option. | |||
| When this leaf is not configured, the server uses the | When this leaf is not configured, the server uses the | |||
| following rules to determine the operational value of this | following rules to determine the operational value of this | |||
| leaf: | leaf: | |||
| if this grouping is used in IGMP schema and the value of the | if this grouping is used in IGMP schema and the value of the | |||
| leaf 'version' is 1, the value 'false' is operationally used | leaf 'version' is 1, the value 'false' is operationally used | |||
| by the server; | by the server; | |||
| if this grouping is used in IGMP schema and the value of the | if this grouping is used in IGMP schema and the value of the | |||
| skipping to change at line 535 ¶ | skipping to change at line 546 ¶ | |||
| expected packet loss on a network. | expected packet loss on a network. | |||
| The default value is 2. | The default value is 2. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| at the interface level. If the leaf is not configured at | at the interface level. If the leaf is not configured at | |||
| either level, the default value is used."; | either level, the default value is used."; | |||
| reference | reference | |||
| "Sections 4.1.6, 8.1, and 8.14.1 of RFC 3376: Internet Group | "Sections 4.1.6, 8.1, and 8.14.1 of RFC 3376: Internet Group | |||
| Management Protocol, Version 3"; | Management Protocol, Version 3"; | |||
| } | } | |||
| } // interface-common-config-attributes | } | |||
| // interface-common-config-attributes | ||||
| grouping interface-common-config-attributes-igmp { | grouping interface-common-config-attributes-igmp { | |||
| description | description | |||
| "Configuration attributes applied to both the interface-global | "Configuration attributes applied to both the interface-global | |||
| level and interface level for IGMP."; | level and interface level for IGMP."; | |||
| uses interface-common-config-attributes; | uses interface-common-config-attributes; | |||
| leaf version { | leaf version { | |||
| type uint8 { | type uint8 { | |||
| range "1..3"; | range "1..3"; | |||
| } | } | |||
| description | description | |||
| "IGMP version. | "IGMP version. | |||
| The default value is 2. | The default value is 2. | |||
| This leaf may be configured at the interface level or the | This leaf may be configured at the interface level or the | |||
| interface-global level, with precedence given to the value | interface-global level, with precedence given to the value | |||
| skipping to change at line 612 ¶ | skipping to change at line 621 ¶ | |||
| grouping interface-level-config-attributes { | grouping interface-level-config-attributes { | |||
| description | description | |||
| "This grouping is used in either IGMP schema or MLD schema. | "This grouping is used in either IGMP schema or MLD schema. | |||
| When used in IGMP schema, this grouping contains the IGMP | When used in IGMP schema, this grouping contains the IGMP | |||
| configuration attributes that are defined at the interface | configuration attributes that are defined at the interface | |||
| level but are not defined at the interface-global level; | level but are not defined at the interface-global level; | |||
| when used in MLD schema, this grouping contains the MLD | when used in MLD schema, this grouping contains the MLD | |||
| configuration attributes that are defined at the interface | configuration attributes that are defined at the interface | |||
| level but are not defined at the interface-global level."; | level but are not defined at the interface-global level."; | |||
| leaf enabled { | leaf enabled { | |||
| if-feature intf-admin-enable; | if-feature "intf-admin-enable"; | |||
| type boolean; | type boolean; | |||
| default true; | default "true"; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| whether IGMP is enabled ('true') or disabled ('false') | whether IGMP is enabled ('true') or disabled ('false') | |||
| on the interface. | on the interface. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| whether MLD is enabled ('true') or disabled ('false') | whether MLD is enabled ('true') or disabled ('false') | |||
| on the interface."; | on the interface."; | |||
| } | } | |||
| leaf group-policy { | leaf group-policy { | |||
| type leafref { | type leafref { | |||
| skipping to change at line 649 ¶ | skipping to change at line 657 ¶ | |||
| As specified by RFC 8519, the length of the name is between | As specified by RFC 8519, the length of the name is between | |||
| 1 and 64; a device MAY further restrict the length of this | 1 and 64; a device MAY further restrict the length of this | |||
| name; space and special characters are not allowed. | name; space and special characters are not allowed. | |||
| If this leaf is not specified, no policy is applied, and | If this leaf is not specified, no policy is applied, and | |||
| all packets received from this interface are accepted."; | all packets received from this interface are accepted."; | |||
| reference | reference | |||
| "RFC 8519: YANG Data Model for Network Access Control Lists | "RFC 8519: YANG Data Model for Network Access Control Lists | |||
| (ACLs)"; | (ACLs)"; | |||
| } | } | |||
| leaf immediate-leave { | leaf immediate-leave { | |||
| if-feature intf-immediate-leave; | if-feature "intf-immediate-leave"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
| leaf requests IGMP to perform an immediate leave upon | leaf requests IGMP to perform an immediate leave upon | |||
| receiving an IGMPv2 leave message. | receiving an IGMPv2 leave message. | |||
| If the router is IGMP-enabled, it sends an IGMP last member | If the router is IGMP-enabled, it sends an IGMP last member | |||
| query with a last member query response time. However, the | query with a last member query response time. However, the | |||
| router does not wait for the response time before it prunes | router does not wait for the response time before it prunes | |||
| the group. | the group. | |||
| When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
| leaf requests MLD to perform an immediate leave upon | leaf requests MLD to perform an immediate leave upon | |||
| receiving an MLDv1 leave message. | receiving an MLDv1 leave message. | |||
| If the router is MLD-enabled, it sends an MLD last member | If the router is MLD-enabled, it sends an MLD last member | |||
| query with a last member query response time. However, the | query with a last member query response time. However, the | |||
| router does not wait for the response time before it prunes | router does not wait for the response time before it prunes | |||
| the group."; | the group."; | |||
| } | } | |||
| leaf max-groups { | leaf max-groups { | |||
| if-feature intf-max-groups; | if-feature "intf-max-groups"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "When this grouping is used for IGMP, this leaf indicates | "When this grouping is used for IGMP, this leaf indicates | |||
| the maximum number of groups associated with the IGMP | the maximum number of groups associated with the IGMP | |||
| interface. | interface. | |||
| When this grouping is used for MLD, this leaf indicates | When this grouping is used for MLD, this leaf indicates | |||
| the maximum number of groups associated with the MLD | the maximum number of groups associated with the MLD | |||
| interface. | interface. | |||
| If this leaf is not specified, the number of groups is not | If this leaf is not specified, the number of groups is not | |||
| limited."; | limited."; | |||
| } | } | |||
| leaf max-group-sources { | leaf max-group-sources { | |||
| if-feature intf-max-group-sources; | if-feature "intf-max-group-sources"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The maximum number of group sources. | "The maximum number of group sources. | |||
| If this leaf is not specified, the number of group sources | If this leaf is not specified, the number of group sources | |||
| is not limited."; | is not limited."; | |||
| } | } | |||
| leaf source-policy { | leaf source-policy { | |||
| if-feature intf-source-policy; | if-feature "intf-source-policy"; | |||
| type leafref { | type leafref { | |||
| path "/acl:acls/acl:acl/acl:name"; | path "/acl:acls/acl:acl/acl:name"; | |||
| } | } | |||
| description | description | |||
| "Name of the access policy used to filter sources. | "Name of the access policy used to filter sources. | |||
| The value space of this leaf is restricted to the existing | The value space of this leaf is restricted to the existing | |||
| policy instances defined by the referenced schema in | policy instances defined by the referenced schema in | |||
| RFC 8519. | RFC 8519. | |||
| As specified by RFC 8519, the length of the name is between | As specified by RFC 8519, the length of the name is between | |||
| 1 and 64; a device MAY further restrict the length of this | 1 and 64; a device MAY further restrict the length of this | |||
| name; space and special characters are not allowed. | name; space and special characters are not allowed. | |||
| If this leaf is not specified, no policy is applied, and | If this leaf is not specified, no policy is applied, and | |||
| all packets received from this interface are accepted."; | all packets received from this interface are accepted."; | |||
| } | } | |||
| leaf verify-source-subnet { | leaf verify-source-subnet { | |||
| if-feature intf-verify-source-subnet; | if-feature "intf-verify-source-subnet"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "If present, the interface accepts packets with matching | "If present, the interface accepts packets with matching | |||
| source IP subnet only."; | source IP subnet only."; | |||
| } | } | |||
| leaf explicit-tracking { | leaf explicit-tracking { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
| leaf enables an IGMP-based explicit membership tracking | leaf enables an IGMP-based explicit membership tracking | |||
| function for multicast routers and IGMP proxy devices | function for multicast routers and IGMP proxy devices | |||
| supporting IGMPv3. | supporting IGMPv3. | |||
| When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
| leaf enables an MLD-based explicit membership tracking | leaf enables an MLD-based explicit membership tracking | |||
| function for multicast routers and MLD proxy devices | function for multicast routers and MLD proxy devices | |||
| supporting MLDv2. | supporting MLDv2. | |||
| The explicit membership tracking function contributes to | The explicit membership tracking function contributes to | |||
| saving network resources and shortening leave latency."; | saving network resources and shortening leave latency."; | |||
| reference | reference | |||
| "Section 3 of RFC 6636: Tuning the Behavior of the Internet | "Section 3 of RFC 6636: Tuning the Behavior of the Internet | |||
| Group Management Protocol (IGMP) and Multicast Listener | Group Management Protocol (IGMP) and Multicast Listener | |||
| Discovery (MLD) for Routers in Mobile and Wireless | Discovery (MLD) for Routers in Mobile and Wireless | |||
| Networks"; | Networks"; | |||
| } | } | |||
| leaf lite-exclude-filter { | leaf lite-exclude-filter { | |||
| if-feature intf-lite-exclude-filter; | if-feature "intf-lite-exclude-filter"; | |||
| type empty; | type empty; | |||
| description | description | |||
| "When this grouping is used for IGMP, the presence of this | "When this grouping is used for IGMP, the presence of this | |||
| leaf enables the support of the simplified EXCLUDE filter | leaf enables the support of the simplified EXCLUDE filter | |||
| in the Lightweight IGMPv3 protocol, which simplifies the | in the Lightweight IGMPv3 protocol, which simplifies the | |||
| standard versions of IGMPv3. | standard versions of IGMPv3. | |||
| When this grouping is used for MLD, the presence of this | When this grouping is used for MLD, the presence of this | |||
| leaf enables the support of the simplified EXCLUDE filter | leaf enables the support of the simplified EXCLUDE filter | |||
| in the Lightweight MLDv2 protocol, which simplifies the | in the Lightweight MLDv2 protocol, which simplifies the | |||
| standard versions of MLDv2."; | standard versions of MLDv2."; | |||
| reference | reference | |||
| "RFC 5790: Lightweight Internet Group Management Protocol | "RFC 5790: Lightweight Internet Group Management Protocol | |||
| Version 3 (IGMPv3) and Multicast Listener Discovery | Version 3 (IGMPv3) and Multicast Listener Discovery | |||
| Version 2 (MLDv2) Protocols"; | Version 2 (MLDv2) Protocols"; | |||
| } | } | |||
| } // interface-level-config-attributes | } | |||
| // interface-level-config-attributes | ||||
| grouping interface-config-attributes-igmp { | grouping interface-config-attributes-igmp { | |||
| description | description | |||
| "Per-interface configuration attributes for IGMP."; | "Per-interface configuration attributes for IGMP."; | |||
| uses interface-common-config-attributes-igmp; | uses interface-common-config-attributes-igmp; | |||
| uses interface-level-config-attributes; | uses interface-level-config-attributes; | |||
| leaf-list join-group { | leaf-list join-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| description | description | |||
| "The router joins this multicast group on the interface."; | "The router joins this multicast group on the interface."; | |||
| } | } | |||
| list ssm-map { | list ssm-map { | |||
| if-feature intf-ssm-map; | if-feature "intf-ssm-map"; | |||
| key "ssm-map-source-addr ssm-map-group-policy"; | key "ssm-map-source-addr ssm-map-group-policy"; | |||
| description "The policy for (*,G) mapping to (S,G)."; | description | |||
| "The policy for (*,G) mapping to (S,G)."; | ||||
| leaf ssm-map-source-addr { | leaf ssm-map-source-addr { | |||
| type ssm-map-ipv4-addr-type; | type ssm-map-ipv4-addr-type; | |||
| description | description | |||
| "Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
| } | } | |||
| leaf ssm-map-group-policy { | leaf ssm-map-group-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
| A device can restrict the length | A device can restrict the length | |||
| and value of this name, possibly space and special | and value of this name, possibly space and special | |||
| characters are not allowed."; | characters are not allowed."; | |||
| } | } | |||
| } | } | |||
| list static-group { | list static-group { | |||
| if-feature intf-static-group; | if-feature "intf-static-group"; | |||
| key "group-addr source-addr"; | key "group-addr source-addr"; | |||
| description | description | |||
| "A static multicast route, (*,G) or (S,G). | "A static multicast route, (*,G) or (S,G). | |||
| The version of IGMP must be 3 to support (S,G)."; | The version of IGMP must be 3 to support (S,G)."; | |||
| leaf group-addr { | leaf group-addr { | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv4 address."; | "Multicast group IPv4 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
| } | } | |||
| skipping to change at line 799 ¶ | skipping to change at line 807 ¶ | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv4 address."; | "Multicast group IPv4 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv4 address."; | "Multicast source IPv4 address."; | |||
| } | } | |||
| } | } | |||
| } // interface-config-attributes-igmp | } | |||
| // interface-config-attributes-igmp | ||||
| grouping interface-config-attributes-mld { | grouping interface-config-attributes-mld { | |||
| description | description | |||
| "Per-interface configuration attributes for MLD."; | "Per-interface configuration attributes for MLD."; | |||
| uses interface-common-config-attributes-mld; | uses interface-common-config-attributes-mld; | |||
| uses interface-level-config-attributes; | uses interface-level-config-attributes; | |||
| leaf-list join-group { | leaf-list join-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| description | description | |||
| "The router joins this multicast group on the interface."; | "The router joins this multicast group on the interface."; | |||
| } | } | |||
| list ssm-map { | list ssm-map { | |||
| if-feature intf-ssm-map; | if-feature "intf-ssm-map"; | |||
| key "ssm-map-source-addr ssm-map-group-policy"; | key "ssm-map-source-addr ssm-map-group-policy"; | |||
| description "The policy for (*,G) mapping to (S,G)."; | description | |||
| "The policy for (*,G) mapping to (S,G)."; | ||||
| leaf ssm-map-source-addr { | leaf ssm-map-source-addr { | |||
| type ssm-map-ipv6-addr-type; | type ssm-map-ipv6-addr-type; | |||
| description | description | |||
| "Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
| } | } | |||
| leaf ssm-map-group-policy { | leaf ssm-map-group-policy { | |||
| type string; | type string; | |||
| description | description | |||
| "Name of the policy used to define ssm-map rules. | "Name of the policy used to define ssm-map rules. | |||
| A device can restrict the length | A device can restrict the length | |||
| and value of this name, possibly space and special | and value of this name, possibly space and special | |||
| characters are not allowed."; | characters are not allowed."; | |||
| } | } | |||
| } | } | |||
| list static-group { | list static-group { | |||
| if-feature intf-static-group; | if-feature "intf-static-group"; | |||
| key "group-addr source-addr"; | key "group-addr source-addr"; | |||
| description | description | |||
| "A static multicast route, (*,G) or (S,G). | "A static multicast route, (*,G) or (S,G). | |||
| The version of MLD must be 2 to support (S,G)."; | The version of MLD must be 2 to support (S,G)."; | |||
| leaf group-addr { | leaf group-addr { | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv6 address."; | "Multicast group IPv6 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
| } | } | |||
| skipping to change at line 849 ¶ | skipping to change at line 858 ¶ | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| description | description | |||
| "Multicast group IPv6 address."; | "Multicast group IPv6 address."; | |||
| } | } | |||
| leaf source-addr { | leaf source-addr { | |||
| type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv6 address."; | "Multicast source IPv6 address."; | |||
| } | } | |||
| } | } | |||
| } // interface-config-attributes-mld | } | |||
| // interface-config-attributes-mld | ||||
| grouping interface-state-attributes { | grouping interface-state-attributes { | |||
| description | description | |||
| "Per-interface state attributes for both IGMP and MLD."; | "Per-interface state attributes for both IGMP and MLD."; | |||
| leaf oper-status { | leaf oper-status { | |||
| type enumeration { | type enumeration { | |||
| enum up { | enum up { | |||
| description | description | |||
| "Ready to pass packets."; | "Ready to pass packets."; | |||
| } | } | |||
| enum down { | enum down { | |||
| description | description | |||
| "The interface does not pass any packets."; | "The interface does not pass any packets."; | |||
| } | } | |||
| skipping to change at line 872 ¶ | skipping to change at line 882 ¶ | |||
| description | description | |||
| "The interface does not pass any packets."; | "The interface does not pass any packets."; | |||
| } | } | |||
| } | } | |||
| config false; | config false; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates whether the operational state of the interface | "Indicates whether the operational state of the interface | |||
| is up or down."; | is up or down."; | |||
| } | } | |||
| } // interface-state-attributes | } | |||
| // interface-state-attributes | ||||
| grouping interface-state-attributes-igmp { | grouping interface-state-attributes-igmp { | |||
| description | description | |||
| "Per-interface state attributes for IGMP."; | "Per-interface state attributes for IGMP."; | |||
| uses interface-state-attributes; | uses interface-state-attributes; | |||
| leaf querier { | leaf querier { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| config false; | config false; | |||
| mandatory true; | mandatory true; | |||
| description "The querier address in the subnet."; | description | |||
| "The querier address in the subnet."; | ||||
| } | } | |||
| leaf-list joined-group { | leaf-list joined-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| config false; | config false; | |||
| description | description | |||
| "The routers that joined this multicast group."; | "The routers that joined this multicast group."; | |||
| } | } | |||
| list group { | list group { | |||
| key "group-address"; | key "group-address"; | |||
| config false; | config false; | |||
| description | description | |||
| "Multicast group membership information | "Multicast group membership information | |||
| skipping to change at line 930 ¶ | skipping to change at line 940 ¶ | |||
| "Multicast source address in group record."; | "Multicast source address in group record."; | |||
| } | } | |||
| uses interface-state-source-attributes; | uses interface-state-source-attributes; | |||
| leaf last-reporter { | leaf last-reporter { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The IPv4 address of the last host that has sent the | "The IPv4 address of the last host that has sent the | |||
| report to join the multicast source and group."; | report to join the multicast source and group."; | |||
| } | } | |||
| list host { | list host { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| key "host-address"; | key "host-address"; | |||
| description | description | |||
| "List of hosts with the membership for the specific | "List of hosts with the membership for the specific | |||
| multicast source-group."; | multicast source-group."; | |||
| leaf host-address { | leaf host-address { | |||
| type inet:ipv4-address; | type inet:ipv4-address; | |||
| description | description | |||
| "The IPv4 address of the host."; | "The IPv4 address of the host."; | |||
| } | } | |||
| uses interface-state-host-attributes; | uses interface-state-host-attributes; | |||
| }// list host | } | |||
| } // list source | // list host | |||
| } // list group | } | |||
| } // interface-state-attributes-igmp | // list source | |||
| } | ||||
| // list group | ||||
| } | ||||
| // interface-state-attributes-igmp | ||||
| grouping interface-state-attributes-mld { | grouping interface-state-attributes-mld { | |||
| description | description | |||
| "Per-interface state attributes for MLD."; | "Per-interface state attributes for MLD."; | |||
| uses interface-state-attributes; | uses interface-state-attributes; | |||
| leaf querier { | leaf querier { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| config false; | config false; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The querier address in the subnet."; | "The querier address in the subnet."; | |||
| } | } | |||
| leaf-list joined-group { | leaf-list joined-group { | |||
| if-feature intf-join-group; | if-feature "intf-join-group"; | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| config false; | config false; | |||
| description | description | |||
| "The routers that joined this multicast group."; | "The routers that joined this multicast group."; | |||
| } | } | |||
| list group { | list group { | |||
| key "group-address"; | key "group-address"; | |||
| config false; | config false; | |||
| description | description | |||
| "Multicast group membership information | "Multicast group membership information | |||
| skipping to change at line 1003 ¶ | skipping to change at line 1014 ¶ | |||
| "Multicast source address in group record."; | "Multicast source address in group record."; | |||
| } | } | |||
| uses interface-state-source-attributes; | uses interface-state-source-attributes; | |||
| leaf last-reporter { | leaf last-reporter { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The IPv6 address of the last host that has sent the | "The IPv6 address of the last host that has sent the | |||
| report to join the multicast source and group."; | report to join the multicast source and group."; | |||
| } | } | |||
| list host { | list host { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| key "host-address"; | key "host-address"; | |||
| description | description | |||
| "List of hosts with the membership for the specific | "List of hosts with the membership for the specific | |||
| multicast source-group."; | multicast source-group."; | |||
| leaf host-address { | leaf host-address { | |||
| type inet:ipv6-address; | type inet:ipv6-address; | |||
| description | description | |||
| "The IPv6 address of the host."; | "The IPv6 address of the host."; | |||
| } | } | |||
| uses interface-state-host-attributes; | uses interface-state-host-attributes; | |||
| }// list host | } | |||
| } // list source | // list host | |||
| } // list group | } | |||
| } // interface-state-attributes-mld | // list source | |||
| } | ||||
| // list group | ||||
| } | ||||
| // interface-state-attributes-mld | ||||
| grouping interface-state-group-attributes { | grouping interface-state-group-attributes { | |||
| description | description | |||
| "Per-interface state attributes for both IGMP and MLD | "Per-interface state attributes for both IGMP and MLD | |||
| groups."; | groups."; | |||
| leaf expire { | leaf expire { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The time left before the multicast group state expires."; | "The time left before the multicast group state expires."; | |||
| } | } | |||
| leaf filter-mode { | leaf filter-mode { | |||
| type enumeration { | type enumeration { | |||
| enum "include" { | enum include { | |||
| description | description | |||
| "In include mode, reception of packets sent | "In include mode, reception of packets sent | |||
| to the specified multicast address is requested | to the specified multicast address is requested | |||
| only from those IP source addresses listed in the | only from those IP source addresses listed in the | |||
| source-list parameter"; | source-list parameter"; | |||
| } | } | |||
| enum "exclude" { | enum exclude { | |||
| description | description | |||
| "In exclude mode, reception of packets sent | "In exclude mode, reception of packets sent | |||
| to the given multicast address is requested | to the given multicast address is requested | |||
| from all IP source addresses except those | from all IP source addresses except those | |||
| listed in the source-list parameter."; | listed in the source-list parameter."; | |||
| } | } | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Filter mode for a multicast group, | "Filter mode for a multicast group, | |||
| may be either include or exclude."; | may be either include or exclude."; | |||
| } | } | |||
| leaf up-time { | leaf up-time { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The elapsed time since the device created multicast group | "The elapsed time since the device created multicast group | |||
| record."; | record."; | |||
| } | } | |||
| } // interface-state-group-attributes | } | |||
| // interface-state-group-attributes | ||||
| grouping interface-state-source-attributes { | grouping interface-state-source-attributes { | |||
| description | description | |||
| "Per-interface state attributes for both IGMP and MLD | "Per-interface state attributes for both IGMP and MLD | |||
| source-group records."; | source-group records."; | |||
| leaf expire { | leaf expire { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The time left before multicast source-group state expires."; | "The time left before multicast source-group state expires."; | |||
| } | } | |||
| leaf up-time { | leaf up-time { | |||
| type uint32; | type uint32; | |||
| units seconds; | units "seconds"; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "The elapsed time since the device created multicast | "The elapsed time since the device created multicast | |||
| source-group record."; | source-group record."; | |||
| } | } | |||
| leaf host-count { | leaf host-count { | |||
| if-feature intf-explicit-tracking; | if-feature "intf-explicit-tracking"; | |||
| type uint32; | type uint32; | |||
| description | description | |||
| "The number of host addresses."; | "The number of host addresses."; | |||
| } | } | |||
| } // interface-state-source-attributes | } | |||
| // interface-state-source-attributes | ||||
| grouping interface-state-host-attributes { | grouping interface-state-host-attributes { | |||
| description | description | |||
| "Per-interface state attributes for both IGMP and MLD | "Per-interface state attributes for both IGMP and MLD | |||
| hosts of source-group records."; | hosts of source-group records."; | |||
| leaf host-filter-mode { | leaf host-filter-mode { | |||
| type enumeration { | type enumeration { | |||
| enum "include" { | enum include { | |||
| description | description | |||
| "In include mode."; | "In include mode."; | |||
| } | } | |||
| enum "exclude" { | enum exclude { | |||
| description | description | |||
| "In exclude mode."; | "In exclude mode."; | |||
| } | } | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Filter mode for a multicast membership | "Filter mode for a multicast membership | |||
| host may be either include or exclude."; | host may be either include or exclude."; | |||
| } | } | |||
| } // interface-state-host-attributes | } | |||
| // interface-state-host-attributes | ||||
| /* | /* | |||
| * Configuration and Operational state data nodes (NMDA version) | * Configuration and Operational state data nodes (NMDA version) | |||
| */ | */ | |||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
| when "derived-from-or-self(rt:type, 'igmp-mld:igmp')" { | when "derived-from-or-self(rt:type, 'igmp-mld:igmp')" { | |||
| description | description | |||
| "This augmentation is only valid for a control-plane | "This augmentation is only valid for a control-plane | |||
| protocol instance of IGMP (type 'igmp')."; | protocol instance of IGMP (type 'igmp')."; | |||
| } | } | |||
| description | description | |||
| "IGMP augmentation to routing control-plane protocol | "IGMP augmentation to routing control-plane protocol | |||
| configuration and state."; | configuration and state."; | |||
| container igmp { | container igmp { | |||
| if-feature feature-igmp; | if-feature "feature-igmp"; | |||
| description | description | |||
| "IGMP configuration and operational state data."; | "IGMP configuration and operational state data."; | |||
| container global { | container global { | |||
| description | description | |||
| "Global attributes."; | "Global attributes."; | |||
| uses global-config-attributes; | uses global-config-attributes; | |||
| uses global-state-attributes; | uses global-state-attributes; | |||
| } | } | |||
| container interfaces { | container interfaces { | |||
| description | description | |||
| "Containing a list of interfaces."; | "Containing a list of interfaces."; | |||
| uses interfaces-config-attributes-igmp { | uses interfaces-config-attributes-igmp { | |||
| if-feature interface-global-config; | if-feature "interface-global-config"; | |||
| refine query-interval { | refine "query-interval" { | |||
| default 125; | default "125"; | |||
| } | } | |||
| refine query-max-response-time { | refine "query-max-response-time" { | |||
| default 10; | default "10"; | |||
| } | } | |||
| refine robustness-variable { | refine "robustness-variable" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| refine version { | refine "version" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| } | } | |||
| list interface { | list interface { | |||
| key "interface-name"; | key "interface-name"; | |||
| description | description | |||
| "List of IGMP interfaces."; | "List of IGMP interfaces."; | |||
| leaf interface-name { | leaf interface-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| must "/if:interfaces/if:interface[if:name = current()]/" | must | |||
| + "ip:ipv4" { | '/if:interfaces/if:interface[if:name = current()]/' | |||
| + 'ip:ipv4' { | ||||
| error-message | error-message | |||
| "The interface must have IPv4 configured, either " | "The interface must have IPv4 configured, either " | |||
| + "enabled or disabled."; | + "enabled or disabled."; | |||
| } | } | |||
| description | description | |||
| "Reference to an entry in the global interface list."; | "Reference to an entry in the global interface list."; | |||
| } | } | |||
| uses interface-config-attributes-igmp { | uses interface-config-attributes-igmp { | |||
| if-feature per-interface-config; | if-feature "per-interface-config"; | |||
| refine last-member-query-interval { | refine "last-member-query-interval" { | |||
| must "../version != 1 or " | must '../version != 1 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version != 1 or not(../../version)))" { | + '(../../version != 1 or not(../../version)))' { | |||
| error-message | error-message "IGMPv1 does not support " | |||
| "IGMPv1 does not support " | + "last-member-query-interval."; | |||
| + "last-member-query-interval."; | ||||
| } | } | |||
| } | } | |||
| refine max-group-sources { | refine "max-group-sources" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "source-specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine source-policy { | refine "source-policy" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "source-specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine explicit-tracking { | refine "explicit-tracking" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "explicit tracking function."; | + "explicit tracking function."; | |||
| } | } | |||
| } | } | |||
| refine lite-exclude-filter { | refine "lite-exclude-filter" { | |||
| must "../version = 3 or " | must '../version = 3 or ' | |||
| + "(not(../version) and (../../version = 3))" { | + '(not(../version) and (../../version = 3))' { | |||
| error-message | error-message | |||
| "The version of IGMP must be 3 to support the " | "The version of IGMP must be 3 to support the " | |||
| + "simplified EXCLUDE filter in the Lightweight " | + "simplified EXCLUDE filter in the Lightweight " | |||
| + "IGMPv3 protocol."; | + "IGMPv3 protocol."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| uses interface-state-attributes-igmp; | uses interface-state-attributes-igmp; | |||
| } // interface | } | |||
| } // interfaces | // interface | |||
| } | ||||
| // interfaces | ||||
| /* | /* | |||
| * Actions | * Actions | |||
| */ | */ | |||
| action clear-groups { | action clear-groups { | |||
| if-feature action-clear-groups; | if-feature "action-clear-groups"; | |||
| description | description | |||
| "Clears the specified IGMP cache entries."; | "Clears the specified IGMP cache entries."; | |||
| input { | input { | |||
| choice interface { | choice interface { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the interface(s) from which the cache | "Indicates the interface(s) from which the cache | |||
| entries are cleared."; | entries are cleared."; | |||
| case name { | case name { | |||
| leaf interface-name { | leaf interface-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| skipping to change at line 1243 ¶ | skipping to change at line 1256 ¶ | |||
| input { | input { | |||
| choice interface { | choice interface { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the interface(s) from which the cache | "Indicates the interface(s) from which the cache | |||
| entries are cleared."; | entries are cleared."; | |||
| case name { | case name { | |||
| leaf interface-name { | leaf interface-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/" | + "rt:control-plane-protocol/" | |||
| + "igmp-mld:igmp/igmp-mld:interfaces/" | + "igmp-mld:igmp/igmp-mld:interfaces/" | |||
| + "igmp-mld:interface/igmp-mld:interface-name"; | + "igmp-mld:interface/igmp-mld:interface-name"; | |||
| } | } | |||
| description | description | |||
| "Name of the IGMP interface."; | "Name of the IGMP interface."; | |||
| } | } | |||
| } | } | |||
| case all { | case all { | |||
| leaf all-interfaces { | leaf all-interfaces { | |||
| type empty; | type empty; | |||
| description | description | |||
| "IGMP groups from all interfaces are cleared."; | "IGMP groups from all interfaces are cleared."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum '*' { | enum * { | |||
| description | description | |||
| "Any group address."; | "Any group address."; | |||
| } | } | |||
| } | } | |||
| type rt-types:ipv4-multicast-group-address; | type rt-types:ipv4-multicast-group-address; | |||
| } | } | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Multicast group IPv4 address. | "Multicast group IPv4 address. | |||
| If the value '*' is specified, all IGMP group entries | If the value '*' is specified, all IGMP group entries | |||
| skipping to change at line 1284 ¶ | skipping to change at line 1297 ¶ | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type rt-types:ipv4-multicast-source-address; | type rt-types:ipv4-multicast-source-address; | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Multicast source IPv4 address. | "Multicast source IPv4 address. | |||
| If the value '*' is specified, all IGMP source-group | If the value '*' is specified, all IGMP source-group | |||
| entries are cleared."; | entries are cleared."; | |||
| } | } | |||
| } | } | |||
| } // action clear-groups | } | |||
| } // igmp | // action clear-groups | |||
| } //augment | } | |||
| // igmp | ||||
| } | ||||
| //augment | ||||
| augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
| when "derived-from-or-self(rt:type, 'igmp-mld:mld')" { | when "derived-from-or-self(rt:type, 'igmp-mld:mld')" { | |||
| description | description | |||
| "This augmentation is only valid for a control-plane | "This augmentation is only valid for a control-plane | |||
| protocol instance of IGMP (type 'mld')."; | protocol instance of IGMP (type 'mld')."; | |||
| } | } | |||
| description | description | |||
| "MLD augmentation to routing control-plane protocol | "MLD augmentation to routing control-plane protocol | |||
| configuration and state."; | configuration and state."; | |||
| container mld { | container mld { | |||
| if-feature feature-mld; | if-feature "feature-mld"; | |||
| description | description | |||
| "MLD configuration and operational state data."; | "MLD configuration and operational state data."; | |||
| container global { | container global { | |||
| description | description | |||
| "Global attributes."; | "Global attributes."; | |||
| uses global-config-attributes; | uses global-config-attributes; | |||
| uses global-state-attributes; | uses global-state-attributes; | |||
| } | } | |||
| container interfaces { | container interfaces { | |||
| description | description | |||
| "Containing a list of interfaces."; | "Containing a list of interfaces."; | |||
| uses interfaces-config-attributes-mld { | uses interfaces-config-attributes-mld { | |||
| if-feature interface-global-config; | if-feature "interface-global-config"; | |||
| refine last-member-query-interval { | refine "last-member-query-interval" { | |||
| default 1; | default "1"; | |||
| } | } | |||
| refine query-interval { | refine "query-interval" { | |||
| default 125; | default "125"; | |||
| } | } | |||
| refine query-max-response-time { | refine "query-max-response-time" { | |||
| default 10; | default "10"; | |||
| } | } | |||
| refine require-router-alert { | refine "require-router-alert" { | |||
| default true; | default "true"; | |||
| } | } | |||
| refine robustness-variable { | refine "robustness-variable" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| refine version { | refine "version" { | |||
| default 2; | default "2"; | |||
| } | } | |||
| } | } | |||
| list interface { | list interface { | |||
| key "interface-name"; | key "interface-name"; | |||
| description | description | |||
| "List of MLD interfaces."; | "List of MLD interfaces."; | |||
| leaf interface-name { | leaf interface-name { | |||
| type if:interface-ref; | type if:interface-ref; | |||
| must "/if:interfaces/if:interface[if:name = current()]/" | must | |||
| + "ip:ipv6" { | '/if:interfaces/if:interface[if:name = current()]/' | |||
| + 'ip:ipv6' { | ||||
| error-message | error-message | |||
| "The interface must have IPv6 configured, either " | "The interface must have IPv6 configured, either " | |||
| + "enabled or disabled."; | + "enabled or disabled."; | |||
| } | } | |||
| description | description | |||
| "Reference to an entry in the global interface list."; | "Reference to an entry in the global interface list."; | |||
| } | } | |||
| uses interface-config-attributes-mld { | uses interface-config-attributes-mld { | |||
| if-feature per-interface-config; | if-feature "per-interface-config"; | |||
| refine max-group-sources { | refine "max-group-sources" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "source-specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine source-policy { | refine "source-policy" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "source-specific parameters."; | + "source-specific parameters."; | |||
| } | } | |||
| } | } | |||
| refine explicit-tracking { | refine "explicit-tracking" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "explicit tracking function."; | + "explicit tracking function."; | |||
| } | } | |||
| } | } | |||
| refine lite-exclude-filter { | refine "lite-exclude-filter" { | |||
| must "../version = 2 or " | must '../version = 2 or ' | |||
| + "(not(../version) and " | + '(not(../version) and ' | |||
| + "(../../version = 2 or not(../../version)))" { | + '(../../version = 2 or not(../../version)))' { | |||
| error-message | error-message | |||
| "The version of MLD must be 2 to support the " | "The version of MLD must be 2 to support the " | |||
| + "simplified EXCLUDE filter in the Lightweight " | + "simplified EXCLUDE filter in the Lightweight " | |||
| + "MLDv2 protocol."; | + "MLDv2 protocol."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| uses interface-state-attributes-mld; | uses interface-state-attributes-mld; | |||
| } // interface | } | |||
| } // interfaces | // interface | |||
| } | ||||
| // interfaces | ||||
| /* | /* | |||
| * Actions | * Actions | |||
| */ | */ | |||
| action clear-groups { | action clear-groups { | |||
| if-feature action-clear-groups; | if-feature "action-clear-groups"; | |||
| description | description | |||
| "Clears the specified MLD cache entries."; | "Clears the specified MLD cache entries."; | |||
| input { | input { | |||
| choice interface { | choice interface { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the interface(s) from which the cache | "Indicates the interface(s) from which the cache | |||
| entries are cleared."; | entries are cleared."; | |||
| case name { | case name { | |||
| leaf interface-name { | leaf interface-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| skipping to change at line 1414 ¶ | skipping to change at line 1427 ¶ | |||
| input { | input { | |||
| choice interface { | choice interface { | |||
| mandatory true; | mandatory true; | |||
| description | description | |||
| "Indicates the interface(s) from which the cache | "Indicates the interface(s) from which the cache | |||
| entries are cleared."; | entries are cleared."; | |||
| case name { | case name { | |||
| leaf interface-name { | leaf interface-name { | |||
| type leafref { | type leafref { | |||
| path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
| + "rt:control-plane-protocol/" | + "rt:control-plane-protocol/" | |||
| + "igmp-mld:mld/igmp-mld:interfaces/" | + "igmp-mld:mld/igmp-mld:interfaces/" | |||
| + "igmp-mld:interface/igmp-mld:interface-name"; | + "igmp-mld:interface/igmp-mld:interface-name"; | |||
| } | } | |||
| description | description | |||
| "Name of the MLD interface."; | "Name of the MLD interface."; | |||
| } | } | |||
| } | } | |||
| case all { | case all { | |||
| leaf all-interfaces { | leaf all-interfaces { | |||
| type empty; | type empty; | |||
| description | description | |||
| "MLD groups from all interfaces are cleared."; | "MLD groups from all interfaces are cleared."; | |||
| } | } | |||
| } | } | |||
| } | } | |||
| leaf group-address { | leaf group-address { | |||
| type union { | type union { | |||
| type enumeration { | type enumeration { | |||
| enum '*' { | enum * { | |||
| description | description | |||
| "Any group address."; | "Any group address."; | |||
| } | } | |||
| } | } | |||
| type rt-types:ipv6-multicast-group-address; | type rt-types:ipv6-multicast-group-address; | |||
| } | } | |||
| description | description | |||
| "Multicast group IPv6 address. | "Multicast group IPv6 address. | |||
| If the value '*' is specified, all MLD group entries | If the value '*' is specified, all MLD group entries | |||
| are cleared."; | are cleared."; | |||
| } | } | |||
| leaf source-address { | leaf source-address { | |||
| type rt-types:ipv6-multicast-source-address; | type rt-types:ipv6-multicast-source-address; | |||
| description | description | |||
| "Multicast source IPv6 address. | "Multicast source IPv6 address. | |||
| If the value '*' is specified, all MLD source-group | If the value '*' is specified, all MLD source-group | |||
| entries are cleared."; | entries are cleared."; | |||
| } | } | |||
| } | } | |||
| } // action clear-mld-groups | } | |||
| } // mld | // action clear-mld-groups | |||
| } // augment | } | |||
| // mld | ||||
| } | ||||
| // augment | ||||
| } | } | |||
| End of changes. 161 change blocks. | ||||
| 226 lines changed or deleted | 252 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||