ipi-bfd
  +--rw bfd
     +--rw global
     |  +--rw config
     |  |  +--rw notification-enabled?   boolean {feature-list:HAVE_BFD_MONO}?
     |  |  +--rw echo-mode-enabled?      empty {feature-list:HAVE_BFD_MONO}?
     |  |  +--rw slow-tx-interval?       uint32 {feature-list:HAVE_BFD_MONO}?
     |  +--ro state
     |  |  +--ro notification-enabled?         boolean {feature-list:HAVE_BFD_MONO}?
     |  |  +--ro echo-mode-enabled?            empty {feature-list:HAVE_BFD_MONO}?
     |  |  +--ro slow-tx-interval?             uint32 {feature-list:HAVE_BFD_MONO}?
     |  |  +--ro start-time?                   yang:timeticks {feature-list:HAVE_BFD_MONO}?
     |  |  +--ro administrative-state?         ipi-bfd-types:oambfd_admin_state_t {feature-list:HAVE_BFD_MONO}?
     |  |  +--ro image-type?                   ipi-bfd-types:oambfd_image_type_t {feature-list:HAVE_BFD_MONO}?
     |  |  +--ro next-session-discriminator?   string {feature-list:HAVE_BFD_MONO}?
     |  |  +--ro counters
     |  |     +--ro total-sessions?   yang:counter32
     |  +--rw intervals
     |     +--rw interval* [desired-minimum-tx-interval required-minimum-rx-interval detection-multiplier] {feature-list:HAVE_BFD_MONO}?
     |        +--rw desired-minimum-tx-interval     -> ../config/desired-minimum-tx-interval
     |        +--rw required-minimum-rx-interval    -> ../config/required-minimum-rx-interval
     |        +--rw detection-multiplier            -> ../config/detection-multiplier
     |        +--rw config
     |        |  +--rw desired-minimum-tx-interval?    uint32
     |        |  +--rw required-minimum-rx-interval?   uint32
     |        |  +--rw detection-multiplier?           uint8
     |        +--ro state
     |           +--ro desired-minimum-tx-interval?    uint32
     |           +--ro required-minimum-rx-interval?   uint32
     |           +--ro detection-multiplier?           uint8
     +--rw peers
     |  +--rw peer* [remote-address]
     |     +--rw remote-address    -> ../config/remote-address
     |     +--rw config
     |     |  +--rw remote-address?   inet:ip-address
     |     +--ro state
     |     |  +--ro remote-address?   inet:ip-address
     |     +--rw intervals
     |     |  +--rw interval* [desired-minimum-tx-interval required-minimum-rx-interval detection-multiplier] {feature-list:HAVE_BFD_MONO}?
     |     |     +--rw desired-minimum-tx-interval     -> ../config/desired-minimum-tx-interval
     |     |     +--rw required-minimum-rx-interval    -> ../config/required-minimum-rx-interval
     |     |     +--rw detection-multiplier            -> ../config/detection-multiplier
     |     |     +--rw config
     |     |     |  +--rw desired-minimum-tx-interval?    uint32
     |     |     |  +--rw required-minimum-rx-interval?   uint32
     |     |     |  +--rw detection-multiplier?           uint8
     |     |     +--ro state
     |     |        +--ro desired-minimum-tx-interval?    uint32
     |     |        +--ro required-minimum-rx-interval?   uint32
     |     |        +--ro detection-multiplier?           uint8
     |     +--rw authentication
     |        +--rw config
     |        |  +--rw key-type?              ipi-bfd-types:bfd_multihop_auth_type_t
     |        |  +--rw (key-option)?
     |        |     +--:(key-id)
     |        |     |  +--rw key-id?          uint32
     |        |     |  +--rw key-encrypted?   ipi-bfd-types:oambfd_encrypt_key_t
     |        |     |  +--rw key-string?      string
     |        |     +--:(key-chain)
     |        +--ro state
     |           +--ro key-type?              ipi-bfd-types:bfd_multihop_auth_type_t
     |           +--ro (key-option)?
     |              +--:(key-id)
     |              |  +--ro key-id?          uint32
     |              |  +--ro key-encrypted?   ipi-bfd-types:oambfd_encrypt_key_t
     |              |  +--ro key-string?      string
     |              +--:(key-chain)
     +--rw debug
     |  +--rw config
     |  |  +--rw options?           ipi-bfd-types:bfd_debug_t
     |  |  +--rw enable-oam-srv6?   empty {feature-list:HAVE_SRV6}?
     |  +--ro state
     |     +--ro options?                 ipi-bfd-types:bfd_debug_t
     |     +--ro enable-oam-srv6?         empty {feature-list:HAVE_SRV6}?
     |     +--ro terminal-debug-status?   ipi-bfd-types:bfd_debug_t
     +--rw interfaces
     |  +--rw interface* [name]
     |     +--rw name              -> ../config/name
     |     +--rw config
     |     |  +--rw name?               -> /ipi-interface:interfaces/interface/name
     |     |  +--rw bfd-disabled?       empty
     |     |  +--rw bfd-session-type?   ipi-bfd-types:oambfd_session_type_t {feature-list:HAVE_BFD_HW_OFFLOAD}?
     |     +--ro state
     |     |  +--ro name?               -> /ipi-interface:interfaces/interface/name
     |     |  +--ro bfd-disabled?       empty
     |     |  +--ro bfd-session-type?   ipi-bfd-types:oambfd_session_type_t {feature-list:HAVE_BFD_HW_OFFLOAD}?
     |     |  +--ro interface-index?    uint32
     |     |  +--ro interface-state?    ipi-bfd-types:oambfd_if_state_t
     |     +--rw intervals
     |     |  +--rw interval* [desired-minimum-tx-interval required-minimum-rx-interval detection-multiplier] {feature-list:HAVE_BFD_MONO}?
     |     |     +--rw desired-minimum-tx-interval     -> ../config/desired-minimum-tx-interval
     |     |     +--rw required-minimum-rx-interval    -> ../config/required-minimum-rx-interval
     |     |     +--rw detection-multiplier            -> ../config/detection-multiplier
     |     |     +--rw config
     |     |     |  +--rw desired-minimum-tx-interval?    uint32
     |     |     |  +--rw required-minimum-rx-interval?   uint32
     |     |     |  +--rw detection-multiplier?           uint8
     |     |     +--ro state
     |     |        +--ro desired-minimum-tx-interval?    uint32
     |     |        +--ro required-minimum-rx-interval?   uint32
     |     |        +--ro detection-multiplier?           uint8
     |     +--rw echo
     |     |  +--rw config
     |     |  |  +--rw ipv4-source?                    inet:ipv4-address
     |     |  |  +--rw required-minimum-tx-interval?   uint32
     |     |  +--ro state
     |     |     +--ro ipv4-source?                    inet:ipv4-address
     |     |     +--ro required-minimum-tx-interval?   uint32
     |     +--rw authentication
     |     |  +--rw config
     |     |  |  +--rw key-type?              ipi-bfd-types:bfd_multihop_auth_type_t
     |     |  |  +--rw (key-option)?
     |     |  |     +--:(key-id)
     |     |  |     |  +--rw key-id?          uint32
     |     |  |     |  +--rw key-encrypted?   ipi-bfd-types:oambfd_encrypt_key_t
     |     |  |     |  +--rw key-string?      string
     |     |  |     +--:(key-chain)
     |     |  +--ro state
     |     |     +--ro key-type?              ipi-bfd-types:bfd_multihop_auth_type_t
     |     |     +--ro (key-option)?
     |     |        +--:(key-id)
     |     |        |  +--ro key-id?          uint32
     |     |        |  +--ro key-encrypted?   ipi-bfd-types:oambfd_encrypt_key_t
     |     |        |  +--ro key-string?      string
     |     |        +--:(key-chain)
     |     +--rw sessions
     |        +--rw session* [local-address remote-address session-type]
     |           +--rw local-address     -> ../config/local-address
     |           +--rw remote-address    -> ../config/remote-address
     |           +--rw session-type      -> ../config/session-type
     |           +--rw config
     |           |  +--rw local-address?         inet:ip-address
     |           |  +--rw remote-address?        inet:ip-address
     |           |  +--rw session-type?          ipi-bfd-types:bfd_session_type_t
     |           |  +--rw administrative-down?   empty
     |           |  +--rw non-persistent?        empty
     |           +--ro state
     |              +--ro local-address?         inet:ip-address
     |              +--ro remote-address?        inet:ip-address
     |              +--ro session-type?          ipi-bfd-types:bfd_session_type_t
     |              +--ro administrative-down?   empty
     |              +--ro non-persistent?        empty
     +--ro sessions
        +--ro session* [local-discriminator vrf-name]
        |  +--ro local-discriminator    -> ../state/local-discriminator
        |  +--ro vrf-name               -> ../state/vrf-name
        |  +--ro state
        |  |  +--ro counters
        |  |  |  +--ro packets
        |  |  |  |  +--ro ipv4
        |  |  |  |  |  +--ro received?           yang:counter64
        |  |  |  |  |  +--ro transmitted?        yang:counter64
        |  |  |  |  |  +--ro echo-transmitted?   yang:counter64
        |  |  |  |  +--ro ipv6 {feature-list:HAVE_IPV6}?
        |  |  |  |     +--ro received?           yang:counter64
        |  |  |  |     +--ro transmitted?        yang:counter64
        |  |  |  |     +--ro echo-transmitted?   yang:counter64
        |  |  |  +--ro up-transitions?   yang:counter32
        |  |  +--ro lower-layer-type?                  ipi-bfd-types:oambfd_sess_lower_layer_t
        |  |  +--ro uptime?                            yang:timeticks
        |  |  +--ro version?                           uint32
        |  |  +--ro local-port?                        inet:port-number
        |  |  +--ro remote-port?                       inet:port-number
        |  |  +--ro negotiated-detection-multiplier?   uint8
        |  |  +--ro forward-hello-timer-hits?          uint32
        |  |  +--ro remote-heard?                      empty
        |  |  +--ro fate-shared?                       empty
        |  |  +--ro remote-administrative-down?        empty
        |  |  +--ro remote-demand-mode-enabled?        empty
        |  |  +--ro remote-echo-enabled?               empty
        |  |  +--ro poll-bit?                          empty
        |  |  +--ro storage-type?                      ipi-bfd-types:bfd_storage_type_t
        |  |  +--ro downtime?                          yang:timeticks
        |  |  +--ro discontinuity-time?                yang:timeticks
        |  |  +--ro authentication-key-id?             uint32
        |  |  +--ro last-up-time?                      yang:timeticks
        |  |  +--ro hold-down-timer?                   uint32
        |  |  +--ro hold-down-timer-hits?              uint32
        |  |  +--ro session-type-status?               ipi-bfd-types:oambfd_session_type_status_t
        |  |  +--ro remote-address?                    inet:ip-address
        |  |  +--ro local-address?                     inet:ip-address
        |  |  +--ro vrf-name?                          string
        |  |  +--ro interface-index?                   uint32
        |  |  +--ro interface-name?                    string
        |  |  +--ro remote-discriminator?              string
        |  |  +--ro local-discriminator?               string
        |  |  +--ro session-state?                     ipi-bfd-types:oambfd_session_state_t
        |  |  +--ro session-type?                      ipi-bfd-types:bfd_session_type_state_t
        |  |  +--ro session-diagnostics?               ipi-bfd-types:oambfd_perform_diag_t
        |  |  +--ro negotiated-tx-interval?            uint32
        |  |  +--ro negotiated-rx-interval?            uint32
        |  +--ro micro-bfd-sessions {feature-list:HAVE_BFD_HW_OFFLOAD}?
        |  |  +--ro interface* [member-interface] {feature-list:HAVE_BFD_HW_OFFLOAD}?
        |  |     +--ro member-interface    -> ../state/member-interface
        |  |     +--ro state
        |  |        +--ro member-interface?             -> /ipi-interface:interfaces/interface/name
        |  |        +--ro remote-session-state?         ipi-bfd-types:oambfd_session_state_t
        |  |        +--ro remote-session-diagnostics?   ipi-bfd-types:oambfd_perform_diag_t
        |  |        +--ro interface-index?              uint32
        |  |        +--ro interface-name?               string
        |  |        +--ro remote-discriminator?         string
        |  |        +--ro local-discriminator?          string
        |  |        +--ro session-state?                ipi-bfd-types:oambfd_session_state_t
        |  |        +--ro session-type?                 ipi-bfd-types:bfd_session_type_state_t
        |  |        +--ro session-diagnostics?          ipi-bfd-types:oambfd_perform_diag_t
        |  |        +--ro negotiated-tx-interval?       uint32
        |  |        +--ro negotiated-rx-interval?       uint32
        |  +--ro echo
        |  |  +--ro state
        |  |     +--ro local-echo-port?                     inet:port-number
        |  |     +--ro echo-desired-minimum-tx-interval?    uint32
        |  |     +--ro echo-required-minimum-rx-interval?   uint32
        |  |     +--ro negotiated-interval?                 uint32
        |  +--ro mpls {feature-list:HAVE_CUSTOM1_MPLS_BFD}?
        |  |  +--ro state {feature-list:HAVE_MPLS_OAM}?
        |  |  |  +--ro fec-address?            inet:ipv4-address
        |  |  |  +--ro lsp-type?               ipi-bfd-types:oambfd_mpls_lsp_type_t
        |  |  |  +--ro tunnel-name?            string
        |  |  |  +--ro tunnel-label?           uint32
        |  |  |  +--ro ftn-index?              uint32
        |  |  |  +--ro lsp-ping-interval?      uint32
        |  |  |  +--ro minimum-tx?             uint32
        |  |  |  +--ro minimum-rx?             uint32
        |  |  |  +--ro detection-multiplier?   uint8
        |  |  +--ro virtual-circuit-connectivity-verification
        |  |  |  +--ro state {feature-list:HAVE_VCCV}?
        |  |  |     +--ro vc-identifier?                    uint32
        |  |  |     +--ro incoming-vc-label?                uint32
        |  |  |     +--ro outgoing-vc-label?                uint32
        |  |  |     +--ro control-channel-type?             ipi-bfd-types:oambfd_mpls_cc_type_t
        |  |  |     +--ro connectivity-verification-type?   ipi-bfd-types:oambfd_mpls_cv_type_t
        |  |  |     +--ro attachment-circuit-index?         uint32
        |  |  |     +--ro tunnel-label?                     uint32
        |  |  |     +--ro peer-address?                     inet:ipv4-address
        |  |  +--ro transport-profile
        |  +--ro packet
        |  +--ro clients
        |     +--ro client* [index]
        |        +--ro index    -> ../state/index
        |        +--ro state
        |           +--ro index?   uint32
        |           +--ro flags?   ipi-bfd-types:oambfd_client_flags_t
        +--ro mpls-lsp
        |  +--ro summary
        |  |  +--ro state
        |  |     +--ro number-of-sessions?              uint32
        |  |     +--ro number-of-sessions-up?           uint32
        |  |     +--ro number-of-sessions-down?         uint32
        |  |     +--ro number-of-sessions-admin-down?   uint32
        |  +--ro egress-sessions
        |  |  +--ro egress-session* [local-discriminator]
        |  |     +--ro local-discriminator    -> ../state/local-discriminator
        |  |     +--ro state
        |  |        +--ro local-multiplier?       uint32
        |  |        +--ro fec-address?            cml-data-types:cml_ipv4_addr_prefix_t
        |  |        +--ro local-discriminator?    string
        |  |        +--ro remote-discriminator?   string
        |  |        +--ro source-port?            inet:port-number
        |  |        +--ro destination-port?       inet:port-number
        |  +--ro session-groups
        |     +--ro session-group* [lsp-type fec-address]
        |        +--ro lsp-type       -> ../state/lsp-type
        |        +--ro fec-address    -> ../state/fec-address
        |        +--ro state
        |        |  +--ro lsp-type?      ipi-bfd-types:mpls_bfd_lsp_type_t
        |        |  +--ro fec-address?   cml-data-types:cml_ipv4_addr_prefix_t
        |        +--ro sessions
        |           +--ro session* [lsp-type]
        |              +--ro lsp-type      -> ../state/lsp-type
        |              +--ro state
        |              |  +--ro lsp-type?                 ipi-bfd-types:mpls_bfd_all_lsp_type_t
        |              |  +--ro ip-encapsulation?         empty
        |              |  +--ro remote-multiplier?        uint32
        |              |  +--ro fec-address?              cml-data-types:cml_ipv4_addr_prefix_t
        |              |  +--ro local-discriminator?      string
        |              |  +--ro remote-discriminator?     string
        |              |  +--ro source-port?              inet:port-number
        |              |  +--ro destination-port?         inet:port-number
        |              |  +--ro session-index?            uint32
        |              |  +--ro local-state?              ipi-bfd-types:mpls_bfd_session_state_t
        |              |  +--ro remote-state?             ipi-bfd-types:mpls_bfd_session_state_t
        |              |  +--ro local-diagnostic?         ipi-bfd-types:mpls_bfd_diag_info_t
        |              |  +--ro remote-diagnostic?        ipi-bfd-types:mpls_bfd_diag_info_t
        |              |  +--ro negotiated-tx-interval?   uint32
        |              |  +--ro negotiated-rx-interval?   uint32
        |              +--ro statistics
        |                 +--ro state
        |                    +--ro create-time?            yang:timeticks
        |                    +--ro last-down-time?         yang:timeticks
        |                    +--ro last-up-time?           yang:timeticks
        |                    +--ro down-count?             yang:counter32
        |                    +--ro admin-down-count?       yang:counter32
        |                    +--ro receive-packet-count?   yang:counter64
        |                    +--ro send-packet-count?      yang:counter64
        +--ro mpls-te
           +--ro summary
           |  +--ro state
           |     +--ro number-of-sessions?              uint32
           |     +--ro number-of-sessions-up?           uint32
           |     +--ro number-of-sessions-down?         uint32
           |     +--ro number-of-sessions-admin-down?   uint32
           +--ro egress-sessions
           |  +--ro egress-session* [fec-address]
           |     +--ro fec-address    -> ../state/fec-address
           |     +--ro state
           |        +--ro local-multiplier?       uint32
           |        +--ro fec-address?            cml-data-types:cml_ipv4_addr_prefix_t
           |        +--ro local-discriminator?    string
           |        +--ro remote-discriminator?   string
           |        +--ro source-port?            inet:port-number
           |        +--ro destination-port?       inet:port-number
           +--ro mpls-tunnels
              +--ro mpls-tunnel* [lsp-type tunnel-name]
                 +--ro lsp-type       -> ../state/lsp-type
                 +--ro tunnel-name    -> ../state/tunnel-name
                 +--ro state
                 |  +--ro lsp-type?      ipi-bfd-types:mpls_bfd_te_type_t
                 |  +--ro tunnel-name?   string
                 +--ro sessions
                    +--ro session* [lsp-type]
                       +--ro lsp-type      -> ../state/lsp-type
                       +--ro state
                       |  +--ro lsp-type?                 ipi-bfd-types:mpls_bfd_all_lsp_type_t
                       |  +--ro ip-encapsulation?         empty
                       |  +--ro remote-multiplier?        uint32
                       |  +--ro fec-address?              cml-data-types:cml_ipv4_addr_prefix_t
                       |  +--ro local-discriminator?      string
                       |  +--ro remote-discriminator?     string
                       |  +--ro source-port?              inet:port-number
                       |  +--ro destination-port?         inet:port-number
                       |  +--ro session-index?            uint32
                       |  +--ro local-state?              ipi-bfd-types:mpls_bfd_session_state_t
                       |  +--ro remote-state?             ipi-bfd-types:mpls_bfd_session_state_t
                       |  +--ro local-diagnostic?         ipi-bfd-types:mpls_bfd_diag_info_t
                       |  +--ro remote-diagnostic?        ipi-bfd-types:mpls_bfd_diag_info_t
                       |  +--ro negotiated-tx-interval?   uint32
                       |  +--ro negotiated-rx-interval?   uint32
                       +--ro statistics
                          +--ro state
                             +--ro create-time?            yang:timeticks
                             +--ro last-down-time?         yang:timeticks
                             +--ro last-up-time?           yang:timeticks
                             +--ro down-count?             yang:counter32
                             +--ro admin-down-count?       yang:counter32
                             +--ro receive-packet-count?   yang:counter64
                             +--ro send-packet-count?      yang:counter64
 
  rpcs:
    +---x bfd-snmp-restart {feature-list:HAVE_SNMP}?
    +---x bfd-terminal-debug-on {feature-list:HAVE_BFD}?
    |  +---w input
    |     +---w terminal-debug-options    ipi-bfd-types:bfd_debug_t
    +---x bfd-terminal-debug-off {feature-list:HAVE_BFD}?
    |  +---w input
    |     +---w terminal-debug-options    ipi-bfd-types:bfd_debug_t
    +---x debug-oam-srv6-on {feature-list:HAVE_SRV6}?
    +---x debug-oam-srv6-off {feature-list:HAVE_SRV6}?
 
  notifications:
    +---n bfd-session-state-change
       +--ro severity?              cml-data-types:cml_notif_severity_t
       +--ro eventClass?            cml-data-types:cml_notif_class_t
       +--ro local-discriminator?   string
       +--ro vrf-name?              string
       +--ro session-state?         ipi-bfd-types:oambfd_session_state_t
       +--ro session-diagnostics?   ipi-bfd-types:oambfd_perform_diag_t