Subject: [Yang-multicast] The igmp-mld-snooping related attributes need to be classified in order to design igmp-mld-snooping yang module. Welcome comments.

From: Hongji Zhao <[email-masked]>
Date: Sat, 23 Dec 2017 05:24:34 +0000

Hi,

The igmp-mld-snooping related attributes need to be classified. Some attributes only fit for VLAN/VSI view, and some attributes only fit for interface view.
Followings are my opinions. Welcome any comments.  Thank you !

VLAN/VSI view only attributes:
                id,
                type,
                enable,
                forwarding-mode,
                send-query,
                static-bridge-mrouter-interface,
                static-vpls-mrouter-interface,
                querier-source,
                static-l2-multicast-group,
                entries-count,
                bridge-mrouter-interface,
                vpls-mrouter-interface,
                host,
                host-address,
                host-filter-mode

Interface view only attributes:
                statistics

module: ietf-igmp-mld-snooping
    +--rw igmp-snooping-instances
    |  +--rw igmp-snooping-instance* [name]
    |     +--rw name                               string
    |     +--rw id?                                uint32
    |     +--rw type?                              enumeration
    |     +--rw enable?                            boolean {admin-enable}?
    |     +--rw forwarding-mode?                   enumeration
    |     +--rw explicit-tracking?                 boolean {explicit-tracking}?
    |     +--rw exclude-lite?                      boolean {exclude-lite}?
    |     +--rw send-query?                        boolean
    |     +--rw immediate-leave?                   empty {immediate-leave}?
    |     +--rw last-member-query-interval?        uint16
    |     +--rw query-interval?                    uint16
    |     +--rw query-max-response-time?           uint16
    |     +--rw require-router-alert?              boolean {require-router-alert}?
    |     +--rw robustness-variable?               uint8
    |     +--rw version?                           uint8
    |     +--rw static-bridge-mrouter-interface*   if:interface-ref {static-l2-multicast-group}?
    |     +--rw static-vpls-mrouter-interface*     l2vpn-instance-pw-ref {static-l2-multicast-group}?
    |     +--rw querier-source?                    inet:ipv4-address
    |     +--rw static-l2-multicast-group* [group source-addr] {static-l2-multicast-group}?
    |     |  +--rw group                        inet:ipv4-address
    |     |  +--rw source-addr                  source-ipv4-addr-type
    |     |  +--rw bridge-outgoing-interface*   if:interface-ref
    |     |  +--rw vpls-outgoing-ac*            l2vpn-instance-ac-ref
    |     |  +--rw vpls-outgoing-pw*            l2vpn-instance-pw-ref
    |     +--ro entries-count?                     uint32
    |     +--ro bridge-mrouter-interface*          if:interface-ref
    |     +--ro vpls-mrouter-interface*            l2vpn-instance-pw-ref
    |     +--ro group* [address]
    |        +--ro address          inet:ipv4-address
    |        +--ro mac-address?     yang:phys-address
    |        +--ro expire?          uint32
    |        +--ro up-time?         uint32
    |        +--ro last-reporter?   inet:ipv4-address
    |        +--ro source* [address]
    |           +--ro address                      inet:ipv4-address
    |           +--ro bridge-outgoing-interface*   if:interface-ref
    |           +--ro vpls-outgoing-ac*            l2vpn-instance-ac-ref
    |           +--ro vpls-outgoing-pw*            l2vpn-instance-pw-ref
    |           +--ro up-time?                     uint32
    |           +--ro expire?                      uint32
    |           +--ro host-count?                  uint32 {explicit-tracking}?
    |           +--ro last-reporter?               inet:ipv4-address
    |           +--ro host* [host-address] {explicit-tracking}?
    |              +--ro host-address        inet:ipv4-address
    |              +--ro host-filter-mode?   enumeration
    +--rw mld-snooping-instances
    |  +--rw mld-snooping-instance* [name]
    |     +--rw name                               string
    |     +--rw id?                                uint32
    |     +--rw type?                              enumeration
    |     +--rw enable?                            boolean {admin-enable}?
    |     +--rw forwarding-mode?                   enumeration
    |     +--rw explicit-tracking?                 boolean {explicit-tracking}?
    |     +--rw exclude-lite?                      boolean {exclude-lite}?
    |     +--rw send-query?                        boolean
    |     +--rw immediate-leave?                   empty {immediate-leave}?
    |     +--rw last-member-query-interval?        uint16
    |     +--rw query-interval?                    uint16
    |     +--rw query-max-response-time?           uint16
    |     +--rw require-router-alert?              boolean {require-router-alert}?
    |     +--rw robustness-variable?               uint8
    |     +--rw version?                           uint8
    |     +--rw static-bridge-mrouter-interface*   if:interface-ref {static-l2-multicast-group}?
    |     +--rw static-vpls-mrouter-interface*     l2vpn-instance-pw-ref {static-l2-multicast-group}?
    |     +--rw querier-source?                    inet:ipv6-address
    |     +--rw static-l2-multicast-group* [group source-addr] {static-l2-multicast-group}?
    |     |  +--rw group                        inet:ipv6-address
    |     |  +--rw source-addr                  source-ipv6-addr-type
    |     |  +--rw bridge-outgoing-interface*   if:interface-ref
    |     |  +--rw vpls-outgoing-ac*            l2vpn-instance-ac-ref
    |     |  +--rw vpls-outgoing-pw*            l2vpn-instance-pw-ref
    |     +--ro entries-count?                     uint32
    |     +--ro bridge-mrouter-interface*          if:interface-ref
    |     +--ro vpls-mrouter-interface*            l2vpn-instance-pw-ref
    |     +--ro group* [address]
    |        +--ro address          inet:ipv6-address
    |        +--ro mac-address?     yang:phys-address
    |        +--ro expire?          uint32
    |        +--ro up-time?         uint32
    |        +--ro last-reporter?   inet:ipv6-address
    |        +--ro source* [address]
    |           +--ro address                      inet:ipv6-address
    |           +--ro bridge-outgoing-interface*   if:interface-ref
    |           +--ro vpls-outgoing-ac*            l2vpn-instance-ac-ref
    |           +--ro vpls-outgoing-pw*            l2vpn-instance-pw-ref
    |           +--ro up-time?                     uint32
    |           +--ro expire?                      uint32
    |           +--ro host-count?                  uint32 {explicit-tracking}?
    |           +--ro last-reporter?               inet:ipv6-address
    |           +--ro host* [host-address] {explicit-tracking}?
    |              +--ro host-address        inet:ipv6-address
    |              +--ro host-filter-mode?   enumeration
    +--rw bridges
    |  +--rw bridge* [name]
    |     +--rw name                      name-type
    |     +--rw igmp-snooping-instance?   igmp-snooping-instance-ref
    |     +--rw mld-snooping-instance?    mld-snooping-instance-ref
    |     +--rw component* [name]
    |        +--rw name           string
    |        +--rw bridge-vlan
    |           +--rw vlan* [vid]
    |              +--rw vid                       vlan-index-type
    |              +--rw igmp-snooping-instance?   igmp-snooping-instance-ref
    |              +--rw mld-snooping-instance?    mld-snooping-instance-ref
    +--rw l2vpn-instances
       +--rw l2vpn-instance* [name]
          +--rw name                      string
          +--rw igmp-snooping-instance?   igmp-snooping-instance-ref
          +--rw mld-snooping-instance?    mld-snooping-instance-ref
  augment /if:interfaces/if:interface/if:statistics:
    +--ro received
    |  +--ro query?                  yang:counter64
    |  +--ro membership-report-v1?   yang:counter64
    |  +--ro membership-report-v2?   yang:counter64
    |  +--ro membership-report-v3?   yang:counter64
    |  +--ro leave?                  yang:counter64
    |  +--ro non-member-leave?       yang:counter64
    |  +--ro pim?                    yang:counter64
    +--ro sent
       +--ro query?                  yang:counter64
       +--ro membership-report-v1?   yang:counter64
       +--ro membership-report-v2?   yang:counter64
       +--ro membership-report-v3?   yang:counter64
       +--ro leave?                  yang:counter64
       +--ro non-member-leave?       yang:counter64
       +--ro pim?                    yang:counter64

  rpcs:
    +---x clear-igmp-snooping-groups {rpc-clear-groups}?
    |  +---w input
    |     +---w id?       uint32
    |     +---w group?    inet:ipv4-address
    |     +---w source?   inet:ipv4-address
    +---x clear-mld-snooping-groups {rpc-clear-groups}?
       +---w input
          +---w id?       uint32
          +---w group?    inet:ipv6-address
          +---w source?   inet:ipv6-address

BR/Hongji
赵宏吉